潍坊学院 第四届校赛

虽然自己不是很重视,比赛的时候慌得一批,成绩也太不理想了、、、

Problem G:Ak爷兼职计

AC代码

#include
using namespace std;
string s[100005];
int cmp(string a, string b){
	return a+b>b+a;//只能是这个 不能是 a>b(1,14 返回的114 实际141 比较的ASCII)
}
int main(){
	int n ;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	sort(s,s+n,cmp);
	for(int i=0;i<n;i++){
		cout<<s[i];
	}
	cout<<endl;
	return 0;
}

Problem I:Bob的难题

分析:

  1. 去除a后字符串的长度如果不是是2的倍数 就是 否
  2. 是2的倍数但是 二分后 2个子串不相等也是 否
  3. for() 循环就是往后依次扫 ;里面的 while()去除前置子串 a的影响
  4. index代表 副串开始的位置

AC代码

#include
using namespace std;
string s;
int main(){
	int n ;
	while( cin>>s){
	int cnt=0,flag=1;
	int len =s.length();
	for(int i=0; i<len;i++){
		if(s[i]=='a')
		cnt++;
	}
	int index=len-(len-cnt)/2;;
	if(!((len-cnt)%2))
		for(int i=0,j=index;j<len;i++,j++){
			while(s[i]=='a')
			i++;
			if(s[i]!=s[j]){
				flag=0;
				break;
			}
		}
	else flag=0;
	if(flag)
	for(int i=0;i<index;i++)
	cout<<s[i];
	else
	cout<<":(";
	cout<<endl;	
	}
	return 0;
}

你可能感兴趣的:(ACM,赛事补题)