喵哈哈村的魔法考试 Round #1 (Div.2)

时间:2023-03-09 17:32:45
喵哈哈村的魔法考试 Round #1 (Div.2)

比赛地址:http://qscoj.cn/contest/2/

都是中文题,这里不在详述题意

A.喵哈哈村的魔法石

分析:暴力求解

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
int a,b,c;
int T;
cin>>T;
while(T--)
{
cin>>a>>b>>c;
int flag=;
for(int i=;i<=c/a;i++){
for(int j=;j<=(c-a*i)/b;j++){
if(a*i+b*j==c){
flag=; break;
}
}
if(flag) break;
}
if(flag)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return ;
}

B.喵哈哈村的括号序列

分析:找出能进行括号匹配的最大序列的长度。我们可以用一个栈来进行模拟,首先让'('入栈,并对能够进行匹配的两个位置标记为1,最后统计序列中最长的连续1的长度即是所求。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath>
#include<stack>
using namespace std;
const int maxn=+;
int vis[maxn];
int T;
int main()
{
cin>>T;
while(T--)
{
string s;
cin>>s;
memset(vis,,sizeof(vis));
stack<int>que;
while(!que.empty()) que.pop();
int len=s.length();
for(int i=;i<len;i++){
if(s[i]=='('){
que.push(i);
}else{
if(!que.empty()){
vis[i]=;
vis[que.top()]=;
que.pop();
}
}
}
int num=,res=;
for(int i=;i<len;i++){
if(vis[i])
num++;
else
num=;
res=max(res,num);
}
cout<<res<<endl;
}
}