手串(暴力) - 今日头条2018校园招聘后端方向(9.10)
时间限制:1秒
空间限制:65536K
题目描述
作为一个手串艺人,有金主向你订购了一条包含n个杂色串珠的手串——每个串珠要么无色,要么涂了若干种颜色。为了使手串的色彩看起来不那么单调,金主要求,手串上的任意一种颜色(不能包含无色),在任意连续的m个串珠中至多出现一次(注意这里手串是一个环形)。手串上的颜色一共有c种。现在按顺时针序告诉你n个串珠的手串上,每个串珠用所包含的颜色分别有哪些。请你判断该手串上有多少种颜色不符合要求。即询问有多少种颜色在任意连续m个串珠中出现了至少两次。
输入描述:
第一行输入n, m, c三个数,用空格隔开。(1<=n<=10000, 1<=m<=1000, 1<=c<=50)接下来n行每行的第一个整数num_i(0<=num_i<=c)表示第i颗珠子有多少种颜色。接下来依次读入num_i个数字,每个数字x表示第i颗珠子上包含第x种颜色(1<=x<=c)
输出描述:
一个非负整数,表示该手链上有多少种颜色不符需求。
示例1
输入
5 2 2
3 1 2 3
0
2 2 3
1 2
1 3
输出
2
说明
第一种颜色出现在第1颗串珠,与规则无冲突。
第二种颜色分别出现在第1,3,4颗串珠,第3与第4颗串珠相邻,所以不合要求。
第三种颜色分别出现在第1,3,5颗串珠,第5颗串珠的下一个是第1颗,所以不合要求。
总计有2中颜色的分布是有问题的。
这里第2颗串珠是透明的。
解题思路:由于数据并非很大,10000*1000可以在接受范围内,所有对于每没一个串珠都往后遍历m个判断是否有相同的颜色,并把相同颜色做标记之后遇到相同颜色直接continue,还有个优化情况就是当不符合的颜色达到c的时候就可以直接停止了。注意的问题是遍历到最后的时候要往返到第一个重新遍历直到数量达到m个,还有其它一些m>=n之类的边界条件。
这里不用两边都访问,因为全部都访问一边就可以保证所有的情况都在内了。
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;bool color[55];
vector<int> V[10005];int main()
{int n, m, c, num, x;while(cin >> n >> m >> c){memset(color, 0, sizeof(color));for(int i = 0; i < n; ++i)V[i].clear();for(int i = 0; i < n; ++i){cin >> num;while(num--){cin >> x;V[i].push_back(x);}}if(m==1){cout << 0 << endl;continue;}if(m>=n){cout << c << endl;continue;}int ans = 0;for(int i = 0; i < n; ++i){if(ans==c)break;for(int j = 0; j < V[i].size(); ++j){if(color[V[i][j]])continue;int tmp = 1;int k = i+1;while(tmp<m){if(k==n)k = 0;for(int l = 0; l < V[k].size(); ++l)if(V[k][l]==V[i][j] && !color[V[i][j]]){color[V[i][j]] = true;ans++;}k++;tmp++;}}}cout << ans << endl;}return 0;
}
/*
5 2 2
3 1 2 3
0
2 2 3
1 2
1 3
*/
手串(暴力) - 今日头条2018校园招聘后端方向(9.10)相关推荐
- 今日头条2018校园招聘后端开发工程师(第二批)编程题 - 题解
以前做过第三批的题目,今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解.这一场的题目偏技巧和算法,而第三批的题偏编码.这一场涉及的算法有二分查找.区间动态规划. 原题链接:点这儿. 第 ...
- 今日头条2018校园招聘后端开发工程师(第四批)编程题 - 题解
做过第三批的题目,今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解和第二批的题目,今日头条2018校园招聘后端开发工程师(第二批)编程题 - 题解. 这一场题目还是挺好玩的,也挺有技巧 ...
- 今日头条2018校园招聘后端开发工程师(第二批)编程题 (Java版)
本人技术小白一枚,文章只是记录个人的解题思路和过程 牛客网地址:原题链接 第一题:用户喜好 题目 为了不断优化推荐效果,今日头条每天要存储和处理海量数据.假设有这样一种场景:我们对用户按照它们的注册时 ...
- 今日头条2018校园招聘后端开发工程师(第三批)编程题 - 题解
昨天做了下头条的后端开发工程师的编程题,这编码量大啊,两个小时,三个编程题,一个改错题,一个设计题,说实话,很考技术含量,而且编程题中有两个还特别考细心编码,如果两个小时能做三个题,确实非常不错了,写 ...
- 今日头条2018校园招聘后端开发工程师 (第二批) 编程题 - 字母交换
题目描述: [编码题]字符串S由小写字母构成,长度为n.定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换.询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同? 输入描述: ...
- 今日头条2018校园招聘第一题 ---POJ 2479
第一次参加公司的招聘笔试,虽然只是抱着试试水的心态去参加的,可惜的是第一题就做错了..... 第一题,其实只是一个求最大子段和的变式题,不过笔试的时候也不知道怎么了,就是不知道思路,最后还写了一个错的 ...
- 今日头条2018校园招聘第一次笔试第二题“字符串拼接”题解(一维动态规划及递归解法)
3.24晚的笔试,结束后题目看不到了,有人截图了,来源:https://www.jianshu.com/p/00d3fd1d9e23 最新更新:在leetcode 上有一道类似的题,区别在于第一种操作 ...
- 今日头条2018校招测试开发方向(第一、二、三、四批)编程题汇总 - 题解
对于今日头条这家公司来说,测试的题和后端开发的题几乎是一样的,但是由于第一批的后端开发的题没有在牛客网上放出来,因此,猜测后端开发第一批的题应该和后端开发第一批的题一样,同时也想做一个测试方向编程题的 ...
- 今日头条2018校园春季招聘研发岗位笔试(第一场)经验
笔试公司:今日头条 笔试岗位:后端开发 笔试时间:2018年3月24日19:00-21:00 笔试形式:牛客网在线做题 笔试回忆: 笔试总共五道题.是的,只有五道编码题,没有选择or填空. 第一题,输 ...
最新文章
- 设置Eclipse编码方式
- 单向链表的C语言实现与基本操作
- 手写自己的MyBatis框架-V2.0结果集处理
- Matlab 使用GPU加速 转载
- js知识学习图谱,新手必看
- 马克龙宣布15亿欧元投资AI,DeepMind拥吻巴黎
- 蓝桥杯 ADV-182 算法提高 前10名
- Maven 实现依赖框架jar包的版本管理
- 数据库管理(事务、ACID、并发、封锁、可串行化、隔离)
- fedora安装字体
- 公差带与配合 常用基轴制公差带的相互关系
- matlab异距分组直方图,如何绘制不等距分组的直方图?
- python 修改文件只读_Python脚本去除文件的只读性操作
- 品优购项目--登录页面
- sqoop import 数据同步到hive的用法
- 一名网络工程师尴尬的现状?
- 【java】输入一个数输出它的绝对值
- python模块之 paramiko
- abs、fabs、fabsf函数的用法区别
- 什么是云虚拟主机_云虚拟主机有什么用
热门文章
- ChatGPT想干掉开发人员,做梦去吧
- 不能出门的第10天我焦虑了,为了金三银四我要充电了决定刷完这千道Java试题
- wlan已断开服务器无响应,wlan已关闭打不开啥原因
- win10 android软件下载,win10安卓桌面
- PHP hash加密与解密
- android recocery模式,recovery模式怎么进入,小编教你recovery模式怎么进入
- 【Draw image on desktop with GDI Plus】
- gpio模拟I2C,驱动pcf8574T
- Python爬虫诗词名句网教程
- 未找到导入的项目“C:\Windows\Microsoft.NET\Framework\v2.0.50727\Borland.Common.Targets”。请确认 <Import> 声明中的路径正确