今日头条笔试
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 */
相关文章推荐
- 今日头条2018春招笔试题js版本
- 今日头条笔试题
- 今日头条春招研发笔试题解密
- 今日头条笔试
- 今日头条笔试题
- 多边形构成问题(今日头条笔试题)
- [今日头条] 笔试题目2016/9/28
- [置顶] 今日头条2018春季校园招聘研发岗位笔试 题解 临时版
- 2018春招-今日头条笔试题-第一题(python)
- 异或今日头条笔试
- 今日头条2017暑期实习生招聘笔试编程题之函数最宽尖峰
- 【笔试】今日头条 形式化输出
- 今日头条一面笔试面试题!!!!!完整
- 今日头条 异或 笔试题
- 2018春招-今日头条笔试题-第三题(python)
- 今日头条2018春季校园招聘研发岗位笔试编程题第一、二题
- 今日头条笔试题-形式化算式
- 数组元素前移问题(今日头条笔试题)
- 今日头条笔试题(一)
- 今日头条笔试之手串问题