n个珠子做成的手串,有的手串无色,有的有多种颜色。颜色的种类有c种。给出手串中珠子的序列,如果一种颜色在连续m个珠子中出现,则该颜色不合格,求不合格的颜色个数。
#include <iostream>
#include<cmath>
using namespace std;
#include <iostream>
#include<string>
#include<algorithm>
#include<numeric>
using namespace std;
int main() {
int n;
int m;
int c;
int numRes = 0;
cin >> n >> m >> c;
vector<int>colorFirstPos(c+1,0);
vector<int>colorPos(c+1,0);
vector<bool>bColorG(c+1,true);
for(int i = 1; i <= n; ++i){
int numOfColor;
scanf("%d",&numOfColor);//读取每一行第一个数字,就是单个柱子上颜色数目
for(int j = 0; j < numOfColor; ++j){
int color;
scanf("%d",&color);//读取每一行除第一个外的数,就是颜色
if(bColorG[color] && colorFirstPos[color] != 0)
if(i - colorPos[color] < m )
bColorG[color] = false;
if(colorFirstPos[color] == 0)
colorFirstPos[color] = i;
colorPos[color] = i;
}
}
for(int color = 1; color <= c; ++color){
if(!bColorG[color])
++numRes;
else if(colorFirstPos[color] != colorPos[color])
if(colorFirstPos[color] + n - colorPos[color] < m )
++numRes;
}
cout << numRes;
return 0;
}

1万+

被折叠的 条评论
为什么被折叠?



