首页 > 代码库 > Codeforces 758B:Blown Garland(模拟)
Codeforces 758B:Blown Garland(模拟)
http://codeforces.com/problemset/problem/758/B
题意:给出一个字符串,每4个位置对应一个颜色,如果为‘!’的话,代表该灯泡是坏的,问最后每个颜色坏的灯泡的数目。
思路:题意实在挺难懂的(可能我到现在还没看懂)。看样例看了好久才看出来。例如最后一个样例“!GB!RG!Y!”:可以拆分成"!GB!”,"RG!Y","!",R只在第一个位置出现,说明R是在第一个位置的,以此类推,G是在第二个位置,B是在第三个位置,Y是在第四个位置。那么对应每个位置出现的“!”的数目,就是要求的对应颜色的值了。
首先先枚举一次串通过i%4找到每个颜色对应的位置,然后再枚举一遍串,如果对应位置出现“!”就对应颜色答案+1.
1 #include <cstdio> 2 #include <algorithm> 3 #include <iostream> 4 #include <cstring> 5 #include <string> 6 #include <cmath> 7 #include <queue> 8 #include <vector> 9 #include <map>10 #include <set>11 #include <stack>12 using namespace std;13 #define INF 0x3f3f3f3f14 #define N 10001015 typedef long long LL;16 char s[110];17 int a[10], id[10];18 19 int main() {20 cin >> s;21 int len = strlen(s);22 memset(id, -1, sizeof(id));23 for(int i = 0; i < len; i++) {24 if(s[i] == ‘R‘) id[0] = i % 4;25 if(s[i] == ‘B‘) id[1] = i % 4;26 if(s[i] == ‘Y‘) id[2] = i % 4;27 if(s[i] == ‘G‘) id[3] = i % 4;28 }29 for(int i = 0; i < 4; i++) {30 if(id[i] == -1) {31 id[i] = i;32 }33 }34 for(int i = 0; i < len; i++) {35 if(i % 4 == id[0] && s[i] != ‘R‘) a[0]++;36 if(i % 4 == id[1] && s[i] != ‘B‘) a[1]++;37 if(i % 4 == id[2] && s[i] != ‘Y‘) a[2]++;38 if(i % 4 == id[3] && s[i] != ‘G‘) a[3]++;39 }40 for(int i = 0; i < 4; i++) printf("%d ", a[i]);41 return 0;42 }
Codeforces 758B:Blown Garland(模拟)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。