今日头条笔试

来源:互联网 发布:手机服装设计软件 编辑:程序博客网 时间:2024/04/28 14:22
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[N];int f[N];int ans[N];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;}/*51 2 3 3 531 2 12 4 53 5 3*/
原创粉丝点击