Codeforces Round #281 (Div. 2) (A、B、C、D題)

來源:互聯網
上載者:User

標籤:icpc   acm   codeforces   iostream   解題報告   

昨天這場CF打的還挺爽的,不過就是沒咋漲Rating,沒把握好漲Rating的機會。。

本來可以過四題的,,但是很失敗,重評後跪了兩道。。唉:-(



A. Vasya and Football

思路:給每個人計數,黃牌+1,紅牌+2。

當數字第一次超過2時輸出。


題目連結:A. Vasya and Football


AC代碼:

#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>#include <cmath>using namespace std;struct node {char name[25];int a[105];}home, away;int main(){for(int i=0; i<105; i++){home.a[i] = 0;away.a[i] = 0;}scanf("%s %s", home.name, away.name);int n;scanf("%d", &n);while(n--){int t, e;char ch1[3], ch2[3];scanf("%d %s %d %s", &t, ch1, &e, ch2);if(ch1[0]=='h'){if(ch2[0]=='y'){home.a[e]++;if(home.a[e]==2)printf("%s %d %d\n", home.name, e, t);}else if(ch2[0]=='r'){home.a[e]+=2;if(home.a[e]==2||home.a[e]==3)printf("%s %d %d\n", home.name, e, t);}}else {if(ch2[0]=='y'){away.a[e]++;if(away.a[e]==2)printf("%s %d %d\n", away.name, e, t);}else if(ch2[0]=='r'){away.a[e]+=2;if(away.a[e]==2||away.a[e]==3 ) printf("%s %d %d\n", away.name, e, t);}}}return 0;}



B. Vasya and Wrestling

思路:先用sum是否為0判斷分高的,sum>0 => first, sum<0 => second,

sum=0則相同,再判斷字典序,如果再相同則判斷最後一次動作。

注意sum需要long long。


題目連結:B. Vasya and Wrestling


AC代碼:


#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>#include <cmath>using namespace std;int judge(int a[], int b[], int na, int nb){int i, j;for(i=0, j=0; i<na, j<nb; i++, j++){if(a[i]>b[i])return 1;else if(a[i]<b[i])return 0;}if(i==na&&j!=nb)return 0;else if(j==nb&&i!=na)return 1;else if(i==na&&j==nb)return 2;}int main(){long long sum=0;int n, a[200005], b[200005], na=0, nb=0;scanf("%d", &n);int t;for(int i=0; i<n; i++){scanf("%d", &t);if(t>0)a[na++] = t;else if(t<0)b[nb++] = -t;sum+=t;}if(sum>0)printf("first\n");else if(sum<0)printf("second\n");else if(judge(a,b,na,nb)==1)printf("first\n");else if(judge(a,b,na,nb)==0)printf("second\n");else if(judge(a,b,na,nb)==2&&t>0)printf("first\n");else if(judge(a,b,na,nb)==2&&t<0)printf("second\n");return 0;}



C. Vasya and Basketball

思路:給所有球排序,先把全部都賦值為3,然後依次減為2,再判斷其中間過程的MAX

昨天做題的時候有點小混亂。。


題目連結:C. Vasya and Basketball


AC代碼:


#include <cstdio>#include <cstring>#include <iostream>  #include <queue>  #include <map>  #include <set>  #include <vector>  #include <algorithm>   using namespace std;    #define LL long long  #define INF 0xfffffffpair<int,bool> p[400010];int main(){    int n, m;    scanf("%d", &n);    for(int i=0; i<n; i++){        scanf("%d", &p[i].first);        p[i].second=1;    }    scanf("%d", &m);    for(int i=n; i<n+m; i++){        scanf("%d", &p[i].first);        p[i].second=0;    }    sort(p, p+n+m);    p[n+m].first=-1;    int as=n*3, bs=m*3, ansa, ansb;    int MAX = -0xfffffff;        for(int i=0; i<=n+m; i++){        if(i==0||p[i].first!=p[i-1].first){            if(as-bs>MAX){                MAX=as-bs;                ansa=as;                ansb=bs;            }        }        if(p[i].second==1) as--;else bs--;    }    printf("%d:%d\n", ansa, ansb);    return 0;}



D. Vasya and Chess

思路:貌似這題有點水。。


題目連結:D. Vasya and Chess


AC代碼:


#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <string>#include <cmath>using namespace std;int main(){int n;scanf("%d", &n);if(n%2==1)printf("black\n");else if(n%2==0){printf("white\n1 2\n");}return 0;}




Codeforces Round #281 (Div. 2) (A、B、C、D題)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.