2020.10.23 Rating 补题报告
A - Fair Game
题意:给出一组牌,问是否可以分成两组之间数字不同,数量相同,一组内数字相同的的两组牌
做法:刚开始读的不仔细,,直接用set做了,结果忘了还得要求数目相同,又写了个判断数目的才对
代码:
//去吧马里奥!把AC公主救回来! // ******** // ************ // ####....#. // #..###.....##.... // ###.......###### // ........... // ##*####### // ####*******###### // ...#***.****.*###.... // ....**********##..... // ....**** *****.... // #### #### // ###### ###### #include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<map> #include<sstream> #include<cstring> #include<vector> #include<iomanip> #include<queue> #include<set> #define LL long long #define _64 __int64 const double PI = atan(1.)*4.; using namespace std; int main(){ int n; cin >> n; int cnt = 0; int a[200]; int b[200005]; for(int i = 0;i < 200005;i++){b[i] = 0;} set<int>p; while(n--){ int x; cin >> x; b[x]++; } //cout << b[27] << b[11]; int ff= 0; for(int i = 1;i <= 100;i++){ if(b[i] != 0){ ff++; a[ff] = i; } } if(ff != 2 || b[a[1]] != b[a[2]]){ cout << "NO" << endl; }else{ cout << "YES"<<endl; cout<<a[1] << " " << a[2] << endl; } }
B - Polycarp and Letters
题意:求连续的小写字母串里,不同字母对多的是多少种
做法:做法感觉和以前的某个题很新爱国,就是循环读,读到小写就标记,计数,读到大写就清空,比较,最后比较最大值是多少就可以了
代码:
//去吧马里奥!把AC公主救回来! // ******** // ************ // ####....#. // #..###.....##.... // ###.......###### // ........... // ##*####### // ####*******###### // ...#***.****.*###.... // ....**********##..... // ....**** *****.... // #### #### // ###### ###### #include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<map> #include<sstream> #include<cstring> #include<vector> #include<iomanip> #include<queue> #include<set> #define LL long long #define _64 __int64 const double PI = atan(1.)*4.; using namespace std; int main(){ int n; cin >> n; char s[300]; for(int i = 0;i < n;i++){ cin >> s[i]; } int vis[300]; int maxn = 0; int num = 0; for(int i = 0;i < 300;i++){vis[i] = 0;} for(int i = 0;i < n;i++){ if(s[i] >= 'A' && s[i] <= 'Z'){ if(maxn <= num){ maxn = num; } num = 0; for(int i = 0;i < 300;i++){vis[i] = 0;} }else{ if(vis[(int)s[i]] == 0){ vis[(int)s[i]] = 1; num++; } } } if(maxn <= num) maxn = num; cout << maxn << endl; }
D - Holiday Of Equality
题意:给出一串数字,求要使每个人的钱都一样,需要从国库里拿出多少钱
做法:排序找到最大的那个值,之后分别减去所有人的钱,之后求和
代码:
//去吧马里奥!把AC公主救回来! // ******** // ************ // ####....#. // #..###.....##.... // ###.......###### // ........... // ##*####### // ####*******###### // ...#***.****.*###.... // ....**********##..... // ....**** *****.... // #### #### // ###### ###### #include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<map> #include<sstream> #include<cstring> #include<vector> #include<iomanip> #include<queue> #include<set> #define LL long long #define _64 __int64 const double PI = atan(1.)*4.; using namespace std; int a[200]; int main(){ int n; cin >> n; for(int i = 0;i < n;i++){ cin >> a[i]; } sort(a,a+n); int cnt = 0; for(int i = 0;i < n;i++){ cnt += a[n-1]-a[i]; } cout << cnt << endl; }
E - Blown Garland
题意:给出字符串,由四种灯组成,而且一定按照某种顺序排列循环,其中!代表坏了,问要将坏的灯泡替换掉每种灯泡各需要多少
做法:因为灯泡的排列顺序是随机的,而且输出的顺序的一定的,因此得给每个灯泡标上号,防止混乱,进行循环,记录灯泡本应该出现的次数,以及实际上出现的次数,最后用应该出现的次数减去实际出现的次数,就是!的数量,且灯泡型号也就知道了
代码:
//去吧马里奥!把AC公主救回来! // ******** // ************ // ####....#. // #..###.....##.... // ###.......###### // ........... // ##*####### // ####*******###### // ...#***.****.*###.... // ....**********##..... // ....**** *****.... // #### #### // ###### ###### #include<iostream> #include<algorithm> #include<cstdio> #include<cmath> #include<string> #include<map> #include<sstream> #include<cstring> #include<vector> #include<iomanip> #include<queue> #include<set> #define LL long long #define _64 __int64 const double PI = atan(1.)*4.; using namespace std; int main(){ char s[300]; cin >> s; int len; len = strlen(s); int num[4]; //int mark[4]; int m[4]; for(int i = 0;i < 4;i++){ num[i] = 0; //mark[i]= 0; m[i] = 0; } int R,G,B,Y; for(int i = 0;i < len;i++){ num[i%4]++; if(s[i] == 'R'){ R = i%4; m[0]++; } if(s[i] == 'B'){ B = i%4; m[1]++; } if(s[i] == 'Y'){ Y = i%4; m[2]++; } if(s[i] == 'G'){ G = i%4; m[3]++; } } cout << num[R]-m[0] << " " << num[B]-m[1] << " " <<num[Y]-m[2] << " " << num[G]-m[3] << endl; }

2020.10.23 Rating 补题报告
浙公网安备 33010602011771号