虽然自己不是很重视,比赛的时候慌得一批,成绩也太不理想了、、、
Problem G:Ak爷兼职计
AC代码
#include<bits/stdc++.h>
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的难题
分析:
- 去除a后字符串的长度如果不是是2的倍数 就是 否
- 是2的倍数但是 二分后 2个子串不相等也是 否
- for() 循环就是往后依次扫 ;里面的 while()去除前置子串 a的影响
- index代表 副串开始的位置
AC代码
#include<bits/stdc++.h>
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;
}