2020中国大学生程序设计竞赛(CCPC)


这次比赛有三道题是比较简单可以做出来的,但是我写代码不够熟练,做的比较慢,还是要多打比赛,多敲代码,比赛之后及时补题看题解,还有很多算法要学的。这样的成绩并不是很好的名次,和其他队伍差的太远了,是因为在平时的用功程度我也远不及其他那些比较优秀的学生。我最大的问题是遇到难题就容易退缩,没信心也不敢做,尤其是比赛之后,我看题解的时候有的算法常常看不明白就放弃了,还是没有好好钻研,这样不会做的还是不会,也没有学会那些算法。

1005 Lunch

//一个偶数不论怎么分,分几步,结果都是一样的。奇数无论怎么拆都要奇数次

这个题要用到线性筛求质数
void primes()
{
    for(int i=2;i<=100000;i++)
    {
        if(!s[i])p[f++]=i;//i是质数
        for(int j=0;p[j]<=100000/i;j++)
        {
            s[p[j]*i]=true;//筛掉质数的倍数
            if(i%p[j]==0)break;
        }
    }
}

1003 Express Mail Taking

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//快递柜从1到n,入口在第一个柜子处,每次取快递前要去第k个柜子输入密码,最后要回到入口处
//求要走的最短距离。
int main()
{
    speed_up;
    int t;
    cin>>t;
    while(t--)
    {
        ll n,m,a;
        cin>>n;
        cin>>m;
        cin>>a;
        ll b[m];
        ll i;
        for(i=0;i<m;i++){
            cin>>b[i];
        }
        sort(b,b+m);
        ll num=0;
        num+=a-1;
        for(i=m-1;i>0;i--){//从最大的柜子开始取是最短路线
            if(b[i]>a){
                num+=(b[i]-a)*2;//根据规律可以得出的公式
            }else{
                num+=(a-b[i])*2;
            }
        }
        if(b[0]>a){
            num+=b[0]-a;
        }else{
        num+=a-b[0];
        }
        num+=b[0]-1;
        cout<<num<<endl;
    }
}

1007 CCPC Training Class

#include<bits/stdc++.h>
using namespace std;
#define ll long long
//找出字符串中出现最多的字母出现了几次
int main()
{
    ll t;
    cin>>t;
    for(int i=0;i<t;i++)
    {
        string s;
        cin>>s;
        map<char,int>a;//用map标记每个字母出现的次数,最后输出最大的就行
        for(int i=0;i<s.size();i++)
        {
            a[s[i]]++;
        }
        ll m=0,max=0;
        for(int i=0;i<a.size();i++)
        {
            if(m<a[i])
            {
                m=a[i];
            }
        }
        cout<<"Case #"<<i+1<<": "<<m<<endl;
    }
}

1010 Reports

#include<bits/stdc++.h>
using namespace std;
#define ll long long
//只要有两个以上连续的0或1就输出no,否则输出yes
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        int a[n];
        for(int i=0;i<n;i++)
        {
            cin>>a[i];
        }
        int p=0;
        for(int i=1;i<n;i++)
        {
            if(a[i]==a[i-1])
            {
                p=1;
                break;
            }
        }
        if(p==0)cout<<"YES"<<endl;
        else cout<<"NO"<<endl;
    }
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM