# Codeforces Round #734 (Div. 3) AB12C题解

## A. Polycarp and Coins

#### 题解：

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int N=2e5+5;
const int inf=0x3f3f3f3f;

int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int x=n/3;
int y=n%3;
int ans1=x,ans2=x;
if(y==2)
{
ans2++;
}else if(y==1)
{
ans1++;
}
cout<<ans1<<" "<<ans2;
cout<<endl;
}
return 0;
}


## B1 - Wonderful Coloring - 1

#### 题解：

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int N=2e5+5;
const int inf=0x3f3f3f3f;

int main()
{
int t;
cin>>t;
while(t--)
{
map<char,int> mp;
string a;
cin>>a;
int ans=0;
for(int i=0;i<a.length();i++)
{
if(mp[a[i]]<=1)
{
mp[a[i]]++;
ans++;
}
}
cout<<ans/2<<endl;
}
return 0;
}


## B2 - Wonderful Coloring - 2

#### 题解：

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int N=2e5+5;
const int inf=0x3f3f3f3f;
struct xx{
vector<int> vec;
};
xx x[N];
int b[N];
int a[N];
int main()
{
int t;
cin>>t;
while(t--)
{
int n,k;
cin>>n>>k;
for(int i=1;i<=n;i++)
{
x[i].vec.clear();
}
for(int i=1;i<=n;i++)
{
b[i]=0;
}
for(int i=1;i<=n;i++)
{
cin>>a[i];
x[a[i]].vec.push_back(i);
}
int all=0;
for(int i=1;i<=n;i++)
{
if(x[i].vec.size()>k)
{
all+=k;
}else{
all+=x[i].vec.size();
}

}
int noned=all%k;
int need=all-noned;
int now=1;
int ued=0;
bool ok=0;
for(int i=1;i<=n;i++)
{
int hav=1;
for(int j=0;j<x[i].vec.size();j++)
{
b[x[i].vec[j]]=now;
ued++;
if(ued==need){
ok=1;
break;
}
now++;
if(now>k)
{
now=1;
}
hav++;
if(hav>k) break;
}
if(ok) break;
}
for(int i=1;i<=n;i++)
{
cout<<b[i]<<" ";
}
cout<<endl;

}
return 0;
}


## C. Interesting Story

#### 题目大意：

N个字符串，只包含a到e五种字符，要求让其中一种大于其余四种的和，

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int N=2e5+5;
const int inf=0x3f3f3f3f;
struct alp{
string a;
int la,lb,lc,ld,le;
};
alp q[N];
bool cmpa(alp x,alp y)
{
return x.la>y.la;
}
bool cmpb(alp x,alp y)
{
return x.lb>y.lb;
}
bool cmpc(alp x,alp y)
{
return x.lc>y.lc;
}bool cmpd(alp x,alp y)
{
return x.ld>y.ld;
}
bool cmpe(alp x,alp y)
{
return x.le>y.le;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
q[i].la=q[i].lb=q[i].lc=q[i].ld=q[i].le=0;
}
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
q[i].a=s;
for(int j=0;j<s.length();j++)
{
if(s[j]=='a')
{
q[i].la++;
}else{
q[i].la--;
}
if(s[j]=='b')
{
q[i].lb++;
}else{
q[i].lb--;
}
if(s[j]=='c')
{
q[i].lc++;
}else{
q[i].lc--;
}
if(s[j]=='d')
{
q[i].ld++;
}else{
q[i].ld--;
}
if(s[j]=='e')
{
q[i].le++;
}else{
q[i].le--;
}
}
}
int ans=0;
int sum=0;
int count=0;
sort(q+1,q+1+n,cmpa);
for(int i=1;i<=n;i++)
{
sum+=q[i].la;
if(sum>0) count++;
else break;
}
ans=max(ans,count);
sum=0;
count=0;
sort(q+1,q+1+n,cmpb);
for(int i=1;i<=n;i++)
{

sum+=q[i].lb;
if(sum>0) count++;
else break;
}
ans=max(ans,count);
sum=0;
count=0;
sort(q+1,q+1+n,cmpc);
for(int i=1;i<=n;i++)
{
//			if(sum<0) break;
sum+=q[i].lc;
if(sum>0) count++;
else break;
}
ans=max(ans,count);
sum=0;
count=0;
sort(q+1,q+1+n,cmpd);
for(int i=1;i<=n;i++)
{
//			if(sum<0) break;
sum+=q[i].ld;
if(sum>0) count++;
else break;
}
ans=max(ans,count);
sum=0;
count=0;
sort(q+1,q+1+n,cmpe);
for(int i=1;i<=n;i++)
{
//			if(sum<0) break;
sum+=q[i].le;
if(sum>0) count++;
else break;
}
ans=max(ans,count);
cout<<ans<<endl;
}
return 0;
}


05-05 872
10-13
06-29 167
05-08 617
08-19 1118
08-06 121
05-01 358
02-21 450
04-07 1247
04-01 558
04-23 406
03-07 519
09-06 1万+
07-30 78
04-06 109
06-09 223
05-08 595
05-03 634
04-09 1364

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。