博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法74----手串(莫队算法)
阅读量:6910 次
发布时间:2019-06-27

本文共 1754 字,大约阅读时间需要 5 分钟。

一、题目:

作为一个手串艺人,有金主向你订购了一条包含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 33 1 2 302 2 31 21 3
输出例子1:
2
例子说明1:
第一种颜色出现在第1颗串珠,与规则无冲突。第二种颜色分别出现在第 1,3,4颗串珠,第3颗与第4颗串珠相邻,所以不合要求。第三种颜色分别出现在第1,3,5颗串珠,第5颗串珠的下一个是第1颗,所以不合要求。总计有2种颜色的分布是有问题的。 这里第2颗串珠是透明的。

二、C++代码:

https://www.nowcoder.com/discuss/39688?type=0&order=0&pos=24&page=1

http://s3.nowcoder.com/discuss/39735?type=6&order=0&pos=10859&page=1

莫队算法:

https://www.cnblogs.com/Paul-Guderian/p/6933799.html

https://www.cnblogs.com/CsOH/p/5904430.html

 
#include 
#include
#include
#include
#include
using namespace std;typedef long long LL;int cnt[55], n, m, c;vector
cs[20005];set
ans;void check(){ for (int i = 1; i <= c; i ++) { if(cnt[i] > 1) ans.insert(i); }}int main(){ int p, x; scanf("%d %d %d", &n, &m, &c); for (int i = 1; i <= n; i ++) { scanf("%d", &p); while(p --) { scanf("%d", &x); cs[i].push_back(x); } cs[i + n] = cs[i]; } for (int i = 1; i <= n + m; i ++) { int sz = cs[i].size(); for (int j = 0; j < sz; j ++) { cnt[cs[i][j]] ++; } if(i > m) { sz = cs[i - m].size(); for (int j = 0; j < sz; j ++) { cnt[cs[i - m][j]] --; } } check(); } cout << ans.size() << endl; return 0;}
View Code

 

转载于:https://www.cnblogs.com/Lee-yl/p/10349120.html

你可能感兴趣的文章
Delphi的三目运算 ifthen 和iif
查看>>
libcurl多线程超时设置不安全(转)
查看>>
3种web会话管理的方式
查看>>
Atitit 常用比较复杂的图像滤镜 attilax大总结
查看>>
ife任务刷题总结(一)-css reset与清除浮动
查看>>
JSContext
查看>>
字符识别(模板匹配&BP神经网络训练)
查看>>
【转】iOS 删除已经配置的类库和移除CocoaPods
查看>>
Python 列表
查看>>
[java] jsoup 解析网页获取省市区域信息
查看>>
如何限制用户在某一时间段多次访问接口
查看>>
Linux-4.4-x86_64 内核配置选项简介【转】
查看>>
linux中service *** start与直接运行/usr/bin/***的区别
查看>>
BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
查看>>
开源网址
查看>>
国际C语言混乱代码大赛代码赏析(一)【转】
查看>>
ArcGIS Engine中空间参照(地理坐标)相关方法总结
查看>>
linux重启服务的脚本命令
查看>>
[Ramda] Declaratively Map Data Transformations to Object Properties Using Ramda evolve
查看>>
修改MySQL数据库中表和表中字段的编码方式的方法
查看>>