码迷,mamicode.com
首页 > 其他好文 > 详细

UCF Local Programming Contest 2016正式赛

时间:2020-03-31 19:25:43      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:不同的   enter   --   merge   end   char   cst   printf   define   

一.解题

1.Majestic 10

题意:几个大于十的,最水的,感觉

AC代码:

#include<iostream>
#define N 10
using namespace std;
int main()
{
int n,i,a[N];
cin>>n;
while(n--){
int count=0;
for(i=1;i<=3;i++){
cin>>a[i];
if(a[i]>=10)count++;
}
for(i=1;i<3;i++){
cout<<a[i]<<" ";
}
cout<<a[i]<<endl;
if(count==0)
cout<<"zilch"<<endl;
else if(count==1)
cout<<"double"<<endl;
else if(count==2)
cout<<"double-double"<<endl;
else cout<<"triple-double"<<endl;
cout<<"\n";
}
}

二.补题

1.Phoneme Palindromes

题意:和回文字符串类似,只是某些不同的字母会等价为相同的

我没看懂题解,借鉴了同学的思路,用并查集来做

AC代码:

#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
#define N 100001
int father[N];
int find(int x){
while(father[x]!=x)//自己是自己,根节点
x=father[x];//不是继续找,找老大
return x;
}
void merge(int a,int b){
int a1=find(a);//找到根节点,找到老大
int b1=find(b);
if(a1!=b1)//老大不同,认主
father[a1]=b1;
}
int main()
{
int t,case1=0;
cin>>t;
while(t--){
printf("Test case #%d:\n",++case1);
int w;
cin>>w;
for(int i=‘a‘;i<=‘z‘;i++){
father[i]=i;//每个人是自己的掌门
}
while(w--){
char q,p;
cin>>q>>p;
merge(q,p);
}
int m;
cin>>m;
for(int i=1;i<=m;i++){
int r=1;
string s;
cin>>s;
int d=s.size();
if(d==1){cout<<s<<" "<<"YES"<<endl;continue;}
else{
for(int j=0;j<d/2;j++){
if(father[s[j]]!=father[s[d-j-1]]){//这个判断是因为两边一样,值就一样,不一样时,看是不是一个集合的,,也是赋初值意义所在
r=0;
cout<<s<<" "<<"NO"<<endl;
break;
}
}
if(r==1)cout<<s<<" "<<"YES"<<endl;
}
}
cout<<endl;
}
}

UCF Local Programming Contest 2016正式赛

标签:不同的   enter   --   merge   end   char   cst   printf   define   

原文地址:https://www.cnblogs.com/1324a/p/12607039.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!