50分求助

P1042 [NOIP2003 普及组] 乒乓球

``` #include <iostream> #include <cmath> #include <cstdio> using namespace std; int a[100000]; int main(){ int readLength=0; // char s; for(int i=0;cin >> s&&s!='E';i++){ if(s=='W')a[i]=1; else a[i]=2; readLength++; } if (readLength==0){ cout << "0:0\n\n0:0"; } //11Points int wwin=0,lwin=0; for (int i=0; i<readLength; i++){ if(a[i]==1){ wwin++; }else{ lwin++; } if ((wwin >= 11 || lwin >= 11) && (abs(wwin - lwin) >= 2)){ printf("%d:%d\n",wwin,lwin); wwin=0,lwin=0; } } if (wwin!=0 || lwin!=0){ printf("%d:%d\n",wwin,lwin); wwin=0,lwin=0; } cout << endl; //21Points for (int i=0; i<readLength; i++){ if(a[i]==1){ wwin++; }else{ lwin++; } if ((wwin >= 21 || lwin >= 21) && (abs(wwin - lwin ) >= 2)){ printf("%d:%d\n",wwin,lwin); wwin=0,lwin=0; } } if (wwin!=0 || lwin!=0){ printf("%d:%d\n",wwin,lwin); wwin=0,lwin=0; } cout << endl; } ``` 应该是这个
by AndyCGM @ 2023-11-29 22:03:51


@[AndyChen130130](/user/1054257) ``` #include<bits/stdc++.h> using namespace std; int f[2] = {11, 21}; int a[25 * 2500 + 10], n = 0; char tmp; int main() { while(1) { cin >> tmp; if(tmp == 'E') break; else if(tmp == 'W') a[n++] = 1; else if(tmp == 'L') a[n++] = 0; } for(int k = 0; k < 2; k++) { int w = 0, l = 0; for(int i = 0; i < n; i++ ) { w =w+ a[i]; l += 1 - a[i]; if((max(w, l) >= f[k]) && abs(w - l) >= 2) { cout << w << ":" << l << endl; w = l = 0; } } cout << w << ":" << l << endl; cout << endl; } return 0; }
by 2345A @ 2023-12-05 19:05:38


|