您的位置:首页 > 其它

今日头条笔试

2017-09-10 23:29 246 查看
1、#include<iostream>
#include<vector>
using namespace std;
int main(){
int n, m, c;
n = m = c = 0;
cin >> n >> m >> c;
vector< vector<int> > color(c + 1);
for (int i = 0; i<c + 1; i++){
color[i].resize(n, 0);
}
int col = 0;
int tmp = 0;
for (int j = 0; j<n; j++){
cin >> col;
for (int z = 0; z<col; z++){
cin >> tmp;
color[tmp][j] = 1;
}
}
int sum = 0;
for (int i = 1; i<c + 1; i++){
int sumflag = 0;
for (int j = 0; j<n; j++){
for (int z = 0; z<m; z++){
sumflag += color[i][(j + z) % n];
}
}
if (sumflag/m>1)
sum++;
}
cout << sum;
return 0;
}
第二种:
#include <iostream>
#include <algorithm>
#include <math.h>
#include <stack>
#include <string>
#include <set>
using namespace std;

int main(){
int n,m,c;
cin>>n>>m>>c;
int col[51][10000];
for(int i = 0;i<n;i++){
//初始化数组;
for(int j = 0;j<51;j++){
col[j][i] = 0;
}

int num;//每个位置珠子颜色个数
cin>>num;
for(int j = 0;j<num;j++){
int color;//珠子颜色
cin>>color;
col[color][i] = 1;
}
}
//看位置i的col相隔最小
int count = 0;//颜色不符合个数
for(int i = 1; i<51; i++){
int begin = 0;
int mm = n;//相差最小距离
int p = 0;
bool flag = 0;
for(int j = 0; j<n; j++){
if(col[i][j] == 1){
if(flag == 0){
flag = 1;
begin = j;//第一个位置
p = j;
}
else{
mm = min(mm, j-p);
p = j;

}
}
}
mm = min(mm, n+begin-p);
if(mm<m){
count++;
}
}
cout<<count;
return 0;
}


2、

#include<cstdio>
#include<map>
#include<algorithm>
using namespace std;
const int N = 300003;
struct P{
int l, r, k, id;

}p
;

int f
;
int ans
;
map<int, int>mp;

bool cmp(P x, P y){
return x.l < y.l;
}
int main(){
int n, Q;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d" ,&f[i]);
}
scanf("%d", &Q);
for(int i = 1; i <= Q; i++){
scanf("%d%d%d",&p[i].l, &p[i].r, &p[i].k);
p[i].id = i;
}
p[0].r = 0;
sort(p + 1, p + Q + 1, cmp);
int nowL = 0, nowR = 0;
for(int i = 1; i <= Q; i++){

int l = p[i].l;
int r = p[i].r;
if(l >= p[i-1].r){
mp.clear();
for(int j = p[i].l; j <= p[i].r; j++){
mp[f[j]] ++;
}
nowL = p[i].l; nowR = p[i].r;
}else{
while(nowL < l){
mp[f[nowL]] --;
nowL ++;
}
while(nowR < r){
nowR ++;
mp[f[nowR]] ++;
}
}
ans[p[i].id] = mp[p[i].k];
}
for(int i = 1; i <= Q; i++){
printf("%d\n", ans[i]);
}
return 0;
}
/*
5
1 2 3 3 5
3
1 2 1
2 4 5
3 5 3
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  今日头条