4 solutions
-
2
这道题 我觉得 挺有意思的。 来说下做这道题的时候,我身边小伙伴的奇思妙想。哈哈 ~
①看到 0和1 想到 二进制,奈何 存储的 数 太多,怎么转呢?当然 也有容器 是专门存二进制的。Bitset。
②还有 想推导 公式的,他发现 每一个连续的0 作为一段,0的个数 设为 zeroNum,老师的人数 设为 m,则 方案数 = zeroNum + 1 - m。
③然后 还有想直接 暴力模拟的,整个过程模拟下来就行了。
最后我采取的是 ② 和 ③,大家 不要觉得我是在说故事,这确实是 做这道题的时候,发生的真人真事。我们都是 小白,所以 在一起 探讨了一下。
#include <iostream> #include <cmath> #include <string> using namespace std; char arr18[2005][2005]; char brr18[2005]; int main(void) { int n, m; cin >> n >> m; for (int i = 0; i < n; ++i) { cin >> arr18[i]; } cin >> brr18; int ans = 0; for (int i = 0; i < n; ++i) { int zeroNum = 0; for (int j = 0; j <= n; ++j) { if (arr18[i][j] == '0') { zeroNum++;// 这段 0 的 数目是几个 } else { int temp = zeroNum + 1 - m; if (temp > 0) { ans += temp; } zeroNum = 0; } } } cout << ans << endl; return 0; }
相较于 上道题 P1111 Ball Dropping 这种纯数学的东西,我觉得这道题 真心是 还好。。
Information
- ID
- 129
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 212
- Accepted
- 57
- Uploaded By