2020/3/28 UCF Local Programming Contest 2016

A .Majestic 10

https://nanti.jisuanke.com/t/43312

题意:判断每组数据有几个大于10的;

#include<iostream>
#include<cmath>
using namespace std;
int a[1000],b[1000],c[1000],counts[10000];
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i]>>b[i]>>c[i];
        if(a[i]>=10)
            counts[i]++;
        if(b[i]>=10)
          counts[i]++;
        if(c[i]>=10)
          counts[i]++;
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<endl;
        if(counts[i]==0){
            cout<<"zilch"<<endl;
        }else if(counts[i]==1){
            cout<<"double"<<endl;
        }else if(counts[i]==2){
            cout<<"double-double"<<endl;
        }else{
            cout<<"triple-double"<<endl;
        }
        if(i<n){
            cout<<endl;
        }
        cout<<"1";
    }
        return 0;
}

 
View Code

B. Phoneme Palindromes

https://nanti.jisuanke.com/t/43313

题意:将同音的字母替换为相同的字母,在判断是否为回文即可,是输出YES,不是输出NO

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<cmath> 
using namespace std;
bool palindrome( string s ){
         int i,j;
         int len=s.length();
         for(i=0;i<=len/2;i++){
            if(s[i]!=s[len-i-1]){
                return false;
            }
         }

        return true;

}
int main(){
    int n,i,j,k,cases,p,q;
    char a[15],b[15];
    cin>>n;
    for(cases=1;cases<=n;cases++){
        cout<<"Test case #"<<cases<<":"<<endl;
        cin>>p;
        for    (i=0;i<p;i++){
          cin>>a[i];
          cin>>b[i];
        }
        cin>>q;
        for(j=0;j<q;j++){
            string s;
            cin>>s;
            cout<<s<<' ';
            for(i=0;i<s.length();i++){
                for(k=0;k<p;k++){
                    if(s[i]==a[k]){     /*将音相同的字母替换为同一字母*/
                         s[i]=b[k];
                    }
                }
            }
            
            if(palindrome(s)){      //替换后判断是否为回文 
            cout<<"YES"<<endl;
            }else{
            cout<<"NO"<<endl;
            }
            
        }
    
          cout<<endl;
    }
     return 0;
}
View Code

C. Don't Break the Ice

https://nanti.jisuanke.com/t/43314

题意:如果策略中的行和列的冰块都曾被敲过,则无效

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main(){
    int x,y;
    int i,j,a[60],b[60];
    int t,cases,size,steps;
    cin>>t;
    for(cases=1;cases<=t;cases++){
        int sum=0;
        memset(a,1,sizeof(a));
        memset(b,1,sizeof(b));
        cout<<"Strategy #"<<cases<<": ";
        cin>>size>>steps;
        for(i=1;i<=steps;i++){
            cin>>x>>y;
            if(a[x]==0&&b[y]==0){
                sum++;
            }
            a[x]=0,b[y]=0;
            
        }
        cout<<sum<<endl;
        if(cases!=t)
        cout<<endl;
    }
       
       return 0;
    
} 
View Code

D.Wildest Dreams

 https://nanti.jisuanke.com/t/43315

题意:如果女儿在在车不管到了哪首歌,都要立即跳到女儿喜欢的歌,如果女儿不在车上就按列表循环播放,求爸爸听了女儿喜欢的歌多少秒

           女儿在奇数时间段里在车上,偶数时间段不在车上,女儿刚好离开时,歌曲按顺序播放,而不会到开头重复

          遍历数组,如果是奇数,就加起来,并记录这首歌放到哪里,如果是偶数就和前面的记录相比,如果小就直接加,

          如果大那就加上那一段在看看她喜欢的那首歌在后面占多长时间,加起来就可以,

#include<iostream>
#include<cstdio>
#include<set>
#include<queue>
#include<stack>
#include<vector>
#include<bitset>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
typedef long long ll;
const int MAXN=1e5+10;
inline int read(){
    int x=0,y=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-'){
            y=-1;
        }
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*y;
}
int a[110];//代表每首歌曲播放时间
int main(){
    int T=read();
    for(int t=1;t<=T;t++){
        int n=read(),m=read();
        int it1=0,it2=0,sum=0;
        //it1为女儿喜欢歌曲开始时间
        //it2为女儿喜欢歌曲结束时间
        //sum为cd所有歌曲播放总时间
        for(int i=1;i<=n;i++){
            a[i]=read();
            sum+=a[i];
            if(i<m) {
                it1+=a[i];
            }
        }
        it2=it1+a[m];
        printf("CD #%d:\n",t);

        int p=read();
        for(int k=1;k<=p;k++){
            int ans=0,it=0;
            //it表示当前时间
            int q=read();
            for(int i=1;i<=q;i++){
                int cnt=read();
                if(cnt==0){
                    continue;
                }
                //当女儿在车上时答案直接加上当前路段时间
                if(i%2==1){
                    ans+=cnt;
                    if(cnt%(it2-it1)==0){
                        it=it2;
                    }
                    else{
                        it=it1+cnt%(it2-it1);
                    }
                }
                //计算女儿不再车上时所听歌曲时间
                else{
                    ans+=(it2-it1)*(cnt/sum);
                    cnt%=sum;
                    if(cnt<=it2-it){
                        ans+=cnt;
                    }
                    else{
                        ans+=it2-it;
                        if(cnt>=sum-it+it1){
                            ans+=cnt-(sum-it+it1);
                        }
                    }
                    it=(it+cnt)%sum;
                }
            }
            printf("%d\n",ans);
        }
        printf("\n");
    }
    return 0;
}
View Code

 

 

 

posted @ 2020-04-01 15:12  Endeavo_r  阅读(151)  评论(0)    收藏  举报