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