记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持。
附上汇总贴:小猴编程C++ | 汇总-CSDN博客【题目描述】有一天,小猴在刷朋友圈时看到了一段游戏视频。这个游戏的名字叫涂色游戏,视频中的游戏界面是一个 n 行 m 列的网格,初始时每个格子都是白色(用数字 0 表示)。其中每一行的左侧、每一列的上方都有一把带颜色的刷子。玩家点击某个刷子后,这个刷子会将其右侧(或下方)的一整行(或一整列)涂上同一种颜色,该行(或该列)格子原有的颜色都会被覆盖成新涂上的颜色,且颜色层数 +1。游戏为了防止玩家疯狂的点击涂色的刷子,所以设定了保护机制:在每次涂色结束后,把所有被涂上 k 层颜色的方格的颜色都清空,让这些方格都变成白色的。小猴也通过小程序点击进入了这个游戏,游戏中小猴一共进行了 q 次操作,每次操作用三个整数 opi,xi,ci 表示:若 opi=1,则表示给第 xi 行的所有方格都涂成颜色 ci;若 opi=2,则表示给第 xi 列的所有方格都涂成颜色 ci。在所有涂色操作结束后,最终共有多少方格被涂上了颜色(不是白色)。【输入】第一行包含四个整数 n,m,q,k,其含义见题目描述。接下来 q 行,每行包含三个整数 opi,xi,ci,表示一次操作。【输出】一行一个整数,表示答案。【输入样例】
3 4 5 21 3 12 4 21 2 11 3 22 2 1
【输出样例】6
【代码详解】#include <bits/stdc++.h>using namespace std;int n, m, q, k, op, x, y, s[200005], r[100005], c[100005];long long ans=0;int main(){ cin >> n >> m >> q >> k; for (int i=1; i<=q; i++) { cin >> op >> x >> y; if (op==1) r[x]++; else c[x]++; } for (int i=1; i<=m; i++) { s[c[i]%k]++; } s[k] = s[0]; for (int i=1; i<=n; i++) { ans += m - s[k- r[i]%k]; } cout << ans << endl; return 0;}
【运行结果】3 4 5 21 3 12 4 21 2 11 3 22 2 16
0 评论