UCF Local Programming Contest 2016正式赛

Posted 1324a

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UCF Local Programming Contest 2016正式赛相关的知识,希望对你有一定的参考价值。

一.解题

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<<" ";
}
}

二.补题

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: ",++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正式赛的主要内容,如果未能解决你的问题,请参考以下文章

UCF Local Programming Contest 2017(2020-04-06)

UCF Local Programming Contest 2012(Practice)补题

UCF Local Programming Contest 2016正式赛

UCF Local Programming Contest 2016 3.29

UCF Local Programming Contest 2015(Practice)个人分析

UCF Local Programming Contest 2012(Practice)