zoukankan      html  css  js  c++  java
  • UCF Local Programming Contest 2016 (2020-3-28)

    A. Majestic 10

    解题思路:每次输入三个整数,三个数都小于零输出“zilch”,一个大于零输出“double”,两个大于零输出“double-double”,三个都大于零输出“triple-double”

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

        }
            return 0;
    }

    B. Phoneme Palindromes

    解题思路:给定发音相同的字母和一个字符串,将发音相同的两个字母的任意一个换成另外一个,再判断是否为回文,对于每个测试用例,输出标题“Test case #n:”,其中n表示用例号从1开始。然后打印该测试用例的每个字符串,后面跟一个空格,后面跟一条消息(YES或NO),指示该字符串是否是音素回文。在每个测试用例的输出之后留下空行。
    #include<cmath>
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
        int n,t,i,n2;
        char arr[13][2];
        cin>>t;
        for(int k=1;k<=t;k++)
        {
            cout<<"Test case #"<<k<<':'<<endl;
            cin>>n;
            for(i=0; i<n; i++)
            {
                cin>>arr[i][0]>>arr[i][1];
            }
            cin>>n2;
            while(n2--){
                string a,b;
                cin>>a;
                b=a;
                int len =a.length();
                for(i=0;i<len;i++){
                    for(int j=0;j<n;j++){
                        if(a.at(i)==arr[j][1]){
                            a.at(i)=arr[j][0];
                        }
                    }
                }
                for(i=0;i<len;i++){
                    if(a.at(i)!=a.at(len-i-1)){
                        break;
                    }
                }
                if(i==len){
                    cout<<b<<' '<<"YES"<<endl;
                }else{
                    cout<<b<<' '<<"NO"<<endl;
                }
            }
            cout<<endl;
        }
        return 0;
    }


    C. Don't Break the Ice

    解题思路:给定一个正方形棋盘的尺寸(行数和列数)和一个移动列表,确定尝试移动的次数,这些移动将击倒一个不在棋盘上的冰块。当一块冰砖被敲碎时,其他的冰砖可能也会从木板上掉下来。更具体地说,一个冰块会掉下来,除非它在一个完整的行(行包含它所有的冰块)或它在一个完整的列(列包含它所有的冰块)。判断每一步移动的冰块,所在的行和列是否完整
    #include<cmath>
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
        int n,s,i,count,t,a,b;
        cin>>t;
        for(int k=1;k<=t;k++)
        {
            int c[51][51]={0};
            count=0;
            cin>>n>>s;
            while(s--){
                cin>>a>>b;
                int flag1=0,flag2=0;
                for(i=0;i<n;i++){
                    if(c[a-1][i]==1){
                        flag1=1;
                    }
                    if(c[i][b-1]==1){
                        flag2=1;
                    }
                }
                if(flag1==1&&flag2==1){
                    count++;
                }
                c[a-1][b-1]=1;

            }
            cout<<"Strategy #"<<k<<": ";
            cout<<count<<endl;
            if(k!=t)
            cout<<endl;
        }
        return 0;
    }

    D. Wildest Dreams

    当Anya上车时,她的歌从头开始播放,只要Anya在车里,这首歌就会一直重复播放。你可以假设,如果Anya在她的歌播放到一半时从车里出来,Arup会继续听她的歌,而不是把CD转发到下一首歌,但当Anya的歌播放完后,下一首歌会继续播放。如果Anya的歌正好在她下车的时候结束,那么下一首歌就会继续。Anya的歌并没有回到开头。
    每张CD的第一行输入将包含两个整数:t(1≤t≤20),CD上的曲目数量,k(1≤k≤t), Anya痴迷的曲目。每张CD的第二行输入包含正整数分隔的t空格,表示CD上每个t音轨的长度,下面的d行包含每天的信息。每一行都以一个整数si始。(1≤s≤20),表示第i天的行驶段数,后面是s正整数,表示每个行驶段的长度,单位为秒。假设Anya在车中进行奇数段(第一、第三、第五等)。


    计算Arup听Anya喜欢的歌的时间,奇数段时间直接求和,并确定奇数段结束的时候播放的位置。正好播完则直接进入循环,没播完sum+剩余的时间,开始循环播放,循环的时间-剩余时间,算一共循环了几周,乘以歌的时间,加上,如果结束时正在播放Anya喜欢是歌曲,加上已播放的时间
    #include<cmath>
    #include<cstdio>
    #include<algorithm>
    #include<iostream>
    #include <string.h>
    using namespace std;
    int main()
    {
        int cd,i;
        cin>>cd;
        for(int k=1;k<=cd;k++)
        {   int sum2=0;
            cout<<"CD #"<<k<<":"<<endl;
            int cds,f;
            int a[25];
            cin>>cds>>f;
            for(i=0;i<cds;i++){
                cin>>a[i];
                sum2+=a[i];
            }
            int n;
            cin>>n;

            while(n--){

                int m;
                int sum=0;
                cin>>m;
                int b[25];
                for(i=0;i<m;i++){
                    cin>>b[i];
                }
                for(i=0;i<m;i++){
                    if(i%2==0){
                        sum+=b[i];
                    }
                    if(i%2==1){
                        int sheng=b[i-1]%a[f-1];
                        if(sheng!=0){
                            b[i]-=a[f-1]-sheng;
                            if(b[i]>0){
                                 sum+=a[f-1]-sheng;
                            }else{
                                 sum+=b[i]+a[f-1]-sheng;
                                 b[i]=0;
                            }
                        }
                        sheng=b[i]/sum2;
                        sum+=sheng*a[f-1];
                        sheng=b[i]%sum2;
                        if(sheng-sum2+a[f-1]>0){
                            sum+=sheng-sum2+a[f-1];
                        }
                    }
                }
                cout<<sum<<endl;
            }
            cout<<endl;
        }
        return 0;
    }

    H. Count the Dividing Pairs

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #define maxn1 1000010
    #define maxn2 10000010
    typedef long long ll;
    int a[maxn1],b[maxn2];
    ll f(int a,int b);
    int main(){
        
        int n,i,j;
        int p,maxx=0;
        long long counts=0;
        scanf("%d",&n);
        for(i=1;i<=n;i++){
            scanf("%d",&p);
            maxx=0,counts=0;
            memset(b,0,sizeof(b));
            for(j=0;j<p;j++){
                scanf("%d",&a[j]);//所以换成cin就超时了?
                b[a[j]]++;
                maxx=max(maxx,a[j]);
            }
            counts=f(b[0],p-b[0]);
            counts+=f(b[1],p-b[0]-b[1]);
            
            for(j=2;j<=maxx/2;j++){    
                if(b[j]){
                    for(int k=2*j;k<=maxx;k+=j){
                        if(b[k])
                        counts+=f(b[j],b[k]);
                    }
                }
            }
            printf("Test case #%d: ",i);
            printf("%lld ",counts);
        }
        return 0;
    }
    ll f(int a,int b){
        long long end=a;
             end*=b;
        return end;
    }

  • 相关阅读:
    es6 学习笔记3
    flex 子元素和父元素的高度相同问题
    vue 笔记2
    vue 子父组件之间的通信
    vue+webpack 错误笔记
    vue 学习新笔记
    mongoDB 使用学习笔记
    express 学习笔记
    多态
    static修饰符与final修饰符
  • 原文地址:https://www.cnblogs.com/a-specter/p/12619143.html
Copyright © 2011-2022 走看看