Codeforces Round #603 (Div. 2)
A. Sweet Problem:
简单题
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a[4];
for(int i=0;i<3;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+3);
int cnt=0;
int k=a[0]-(a[2]-a[1]);
if(k<=0)
cnt=a[0]+a[1];
else if(k%2==1)
cnt=a[0]+a[1]-k/2-1;
else
cnt=a[0]+a[1]-k/2;
printf("%d\n",cnt);
}
return 0;
}
B. PIN Codes:
简单题
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
int vis[11][11]={0};
char Pin[15][5];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
cin>>Pin[i];
for(int j=0;j<4;j++)
{
vis[j][Pin[i][j]-'0']++;
}
}
int cnt = 0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
if(strcmp(Pin[i],Pin[j])==0)
{
for(int k=0;k<10;k++)
{
if(!vis[0][k])
{
cnt++;
vis[j][Pin[j][0]-'0']--;
Pin[j][0]=k+'0';
vis[0][k]++;
break;
}
}
}
}
}
printf("%d\n",cnt);
for(int i=0;i<n;i++)
cout<<Pin[i]<<endl;
}
return 0;
}
C. Everyone is a Winner!:
set
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#include<set>
using namespace std;
int main()
{
int t;
int n;
scanf("%d",&t);
while(t--)
{
set<int> s;
scanf("%d",&n);
for(int i=1;i*i<=n;i++)
{
s.insert(i);
s.insert(n/i);
}
printf("%d\n",s.size()+1);
printf("0");
for(set<int>::iterator it = s.begin();it!=s.end();it++)
printf(" %d",*it);
printf("\n");
}
return 0;
}
D. Secret Passwords:
并查集
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 1e6+5;
int pre[30];
string paswd,lapawd;
int vis[30];
int Fin(int x)
{
if(pre[x]==x)
return x;
return pre[x]=Fin(pre[x]);
}
void Mer(int x,int y)
{
int a=Fin(x);
int b=Fin(y);
if(a!=b)
pre[a]=b;
}
int main()
{
for(int i=0;i<30;i++)
pre[i]=i;
memset(vis,0,sizeof(vis));
int n;
scanf("%d",&n);
int cnt = 0;
getchar();
for(int i=0;i<n;i++)
{
getline(cin,paswd);
int now;
for(int j=0;j<paswd.size();j++)
{
vis[paswd[j]-'a'+1]=1;
Mer(paswd[0]-'a'+1,paswd[j]-'a'+1);
}
}
for(int i=1;i<='z'-'a'+1;i++)
{
if(pre[i]==i&&vis[i])
cnt++;
}
printf("%d\n",cnt);
return 0;
}