Codeforces 758B:Blown Garland(模拟)

Posted Shadowdsp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 0x3f3f3f3f
14 #define N 100010
15 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(模拟)的主要内容,如果未能解决你的问题,请参考以下文章

哪里有最新版ps下载和安装教程

“我的开源项目被‘盗用’了!”

gc方法与finalize方法的区别

select2 设置选中值新方法

在 R Shiny 中连接到 BigQuery

UICollectionView可拖动,并且某个cell不能动