题目描述: 有一串(首尾相连)的珠子(共N个),现在总共有C种颜色,第i个珠子上有num[i]种颜色(并提供每个颜色),如果连续相连的M个珠子上出现了相同的颜色x,那么认为颜色x是不合法的。问这串珠子上有多少种不合法的颜色。 代码地址:http://paste.ubuntu.com/25505991/ #include <iostream> #include <cstdio> #include <cstring> #include <set> #include <vector> using namespace std; typedef long long LL; int cnt[55], n, m, c; vector<int> cs[20005]; set<int> ans; void check() { for (int i = 1; i <= c; i ++) { if(cnt[i] > 1) ans.insert(i); } } int main() { int p, x; scanf("%d %d %d", &n, &m, &c); for (int i = 1; i <= n; i ++) { scanf("%d", &p); while(p --) { scanf("%d", &x); cs[i].push_back(x); } cs[i + n] = cs[i]; } for (int i = 1; i <= n + m; i ++) { int sz = cs[i].size(); for (int j = 0; j < sz; j ++) { cnt[cs[i][j]] ++; } if(i > m) { sz = cs[i - m].size(); for (int j = 0; j < sz; j ++) { cnt[cs[i - m][j]] --; } } check(); } cout << ans.size() << endl; return 0; }
点赞 1

相关推荐

喵_coding:年底缺人是短视频营造出来的 而且一般说的也很宽泛 不是特指后端
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务