[codeforces 1371C]A Cookie for You 烦人的if,else

    技术2022-07-21  87

    Codeforces Round #654 (Div. 2)   参与排名人数14349   本场比赛主要心思放在观摩高手如何打比赛,发现初中生真的很厉害。

    [codeforces 1371C]    A Cookie for You   烦人的if,else

    总目录详见https://blog.csdn.net/mrcrack/article/details/103564004

    在线测评地址http://codeforces.com/contest/1371/problem/C

    ProblemLangVerdictTimeMemoryC - A Cookie for You GNU C++17Accepted31 ms200 KB

    题目大意:给a块vanilla cookies,b块chocolate cookies,n个第一类客人,m个第二类客人,

    若:轮到第一类客人时,若a>b,客人吃vanilla cookies,若a<=b,客人吃chocolate cookies.

    轮到第二类客人时,若a>b,客人吃chocolate cookies,若a<=b,客人吃vanilla cookies.

    若轮到客人没有相应cookies吃时,要生气。

    问怎么安排客人吃cookies的顺序时,使客人都能吃上,输出Yes,若怎么安排,客人都吃不上,输出No.

    样例模拟如下:

    发现,需先处理成a==b,之后,第一类人可以交替消耗a,b,而第二类人,只能消耗b.故先安排第二类人吃,再安排第一类人吃。

    2 2 1 2 Yes a b n m 2 2 1 2 因a==b,先处理m,处理之后 a b n m 2 0 1 0 再处理n,处理之后 a b n m 1 0 0 0 输出Yes 0 100 0 1 No a b n m 0 100 0 1 因a<b先处理大的(b),n处理之后 a b n m 0 100 0 1 再处理m,处理之后 a b n m -1 100 0 0 输出No 12 13 25 1 No a b n m 12 13 25 1 因a<b先处理大的(b),n处理之后 a b n m 12 12 24 1 再处理m,处理之后 a b n m 11 12 24 0 再处理n,处理之后 a b n m 11 11 23 0 a b n m 11 10 22 0 a b n m 10 10 21 0 a b n m 10 9 20 0 a b n m 9 9 19 0 ...... a b n m 0 0 1 0 n未处理干净,输出No

    AC代码如下:

    #include <stdio.h> #define LL long long int main(){ int t; LL a,b,n,m,c; scanf("%d",&t); while(t--){ scanf("%lld%lld%lld%lld",&a,&b,&n,&m); if(a>b){//先消耗多的a c=a-b;//争取处理成a==b if(n>=c)n-=c,a=b; else n=0,a-=n;//n<c if(a>b){//处理后,还是a>b if(b>=m)printf("Yes\n"); else printf("No\n"); }else if(a==b){ b-=m;//先处理第二类人 if(b<0){printf("No\n");continue;} n-=a+b;//再处理第一类人 if(n>0)printf("No\n"); else printf("Yes\n"); } }else if(a<b){//先消耗多的b c=b-a; if(n>=c)n-=c,b=a; else n=0,b-=n;//n<c if(a<b){//处理后,还是a<b if(a>=m)printf("Yes\n"); else printf("No\n"); }else if(a==b){ b-=m;//先处理第二类人 if(b<0){printf("No\n");continue;} n-=a+b;//再处理第一类人 if(n>0)printf("No\n"); else printf("Yes\n"); } }else if(a==b){ b-=m;//先处理第二类人 if(b<0){printf("No\n");continue;} n-=a+b;//再处理第一类人 if(n>0)printf("No\n"); else printf("Yes\n"); } } return 0; }

    总结,明知此题考察if,else,但是编写过程中,考虑情况颇多,头皮发麻。

    Processed: 0.008, SQL: 9