当前位置: 移动技术网 > 移动技术>移动开发>Android > EOJ Monthly 2020.7 Sponsored by TuSimple

EOJ Monthly 2020.7 Sponsored by TuSimple

2020年07月23日  | 移动技术网移动技术  | 我要评论
传送门A. 打字机解题思路:只有两种操作,结果要么产生a,要么产生ab,那么如果是通过操作可以得到的字符串b的数量必然要小于a,因此当b的数量大于a时就打印“Dead Fang”;满足上一条件情况下我们来考虑只通过操作一能得到的字符串必然是纯a字符串,此时n1=len,为“Happy Fang",只通过操作二得到的字符串首先a和b的数量必然相等,且对最后一个以b结尾的前缀都有ab数量相等,此时也是"Happy Fang",否则”Sad Fang"#pragma optimize(3)#pragma

传送门
A. 打字机
解题思路:只有两种操作,结果要么产生a,要么产生ab,那么如果是通过操作可以得到的字符串b的数量必然要小于a,因此当b的数量大于a时就打印“Dead Fang”;满足上一条件情况下我们来考虑只通过操作一能得到的字符串必然是纯a字符串,此时n1=len,为“Happy Fang",只通过操作二得到的字符串首先a和b的数量必然相等,且对最后一个以b结尾的前缀都有ab数量相等,此时也是"Happy Fang",否则”Sad Fang"

#pragma optimize(3)
#pragma optimize(2)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<stack>

using namespace std;

int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	string s;
	int t;
	cin>>t;
	while(t--){
		cin>>s;
		if(s[0]=='b'){cout<<"Dead Fang"<<endl;continue;}
		int len=s.length(),n1=0,n2=0,flag=0,tt=0,tk=0;
		for(int i=len-1;i>=0;i--){if(s[i]=='b'){tt=i;break;}} 
		for(int j=0;j<len;j++){
			if(s[j]=='a')n1++;
			else if(s[j]=='b'){
				n2++;
				if(n2>n1){flag=1;break;}
			}
			if(j==tt&&n1==n2)tk=1;
		}
		if(flag){cout<<"Dead Fang"<<endl;}
		else if(tk||n1==len)cout<<"Happy Fang"<<endl;
		else cout<<"Sad Fang"<<endl;
	}
	return 0;
}

B. 线上考试
解题思路:单选题的提交次数最大值和多选题的提交次数最大值取max,单选题的最大值很容易得出,就是选项数量最大值,多选题提交次数最大值为2*选项数-1,二者取max后即得最小提交次数

#pragma optimize(3)
#pragma optimize(2)
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<stack>
#include<cmath>

using namespace std;

typedef long long ll;
const int mod=1e8;

int max(int a,int b)
{
	return a>b?a:b;
}

int quick_pow(int x,int y)
{
	int ans=1;
	while(y){
		if(y&1)ans=(ans*x);
		x=(x*x);
		y>>=1;
	}
	return ans;
}

int main()
{
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t,num,n1=0,n2=0;
	cin>>t;
	char ch;
	while(t--){
		cin>>ch>>num;
		if(ch=='S'){
			n1=max(n1,num);//每次更新单选最大值
		}
		if(ch=='M'){
			n2=max(n2,quick_pow(2,num)-1);//每次更新多选最大值
		}
	}
	cout<<max(n1,n2)<<endl;
	return 0;
}

本文地址:https://blog.csdn.net/fusu123456789/article/details/107424458

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网