时间:2021-07-01 10:21:17 帮助过:25人阅读
本来可以过四题的,,但是很失败,重评后跪了两道。。唉:-(
A. Vasya and Football
思路:给每个人计数,黄牌+1,红牌+2。
当数字第一次超过2时输出。
题目链接:A. Vasya and Football
AC代码:
#include#include #include #include #include #include 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
#include#include #include #include #include #include using namespace std;int judge(int a[], int b[], int na, int nb){ int i, j; for(i=0, j=0; i b[i])return 1; else if(a[i]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#include #include #include #include
D. Vasya and Chess
思路:貌似这题有点水。。
AC代码:
#include#include #include #include #include #include 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;}