Codeforces Round #734 (Div. 3)-B1. Wonderful Coloring - 1
原题链接
1.time limit per test1 second
2.memory limit per test256 megabytes
Description:
答题思路
题目中给定限制“相同颜色的两个字母必须是两个不相同的字母”,转换一下思路即“两个相同的字母涂的颜色必须不一样”,继而推出“超过两个数量的相同字母最多能涂2种不同的颜色”。假设所涂颜色个数总和为sum,又因为两种相同颜色的数量相等,所以红色与绿色分别有sum/2个。
例如abbb,a涂红,第一个b涂绿,第二个b涂红,若第三个b涂绿,则第一个b与第三个b不符合题目所给限制,此时共有sum=3,红色和绿色分别涂sum/2=1个。
代码
#include<bits/stdc++.h>
#define maxn 55
typedef long long ll;
using namespace std;
int main()
{
ll t,i,count[maxn]={0},sum;
cin>>t;
while(t--)
{
string s;
sum=0;
cin>>s;
for(i=0;i<s.size();i++)
{
count[s[i]-'a']++;
if(count[s[i]-'a']<=2) sum++;
}
memset(count,0,sizeof(count));
printf("%lld\n",sum/2);
}
return 0;
}
以上为本人所想到的方法,如有出错之处,请您立刻通知本人,本人将以感激的态度接受您的指正。