[SCOI2009]生日礼物 单调性尺取法

题意:给你n个k种颜色的点,每个点都有坐标和颜色两个属性,选出一个长度尽量短的区间,使得每种颜色的点都在区间内出现。

 

数据范围:

对于50%的数据, N≤10000;

对于80%的数据, N≤800000;

对于100%的数据,1≤N≤1000000,1≤K≤60,0≤珠子位置<2^{31}

--------------------------------------------------我是分割线-------------------------------------------------------

题解:单调性尺取法的经典应用。先将点按照坐标排序,用两个变量lr来枚举区间,如果lr的区间不满足要求,r++,如果lr的区间满足要求,记录答案,l++。

排序时间复杂度O(NlogN),尺取时间复杂度O(N),总时间复杂度O(NlogN)。

#include<bits/stdc++.h>#define ll long long
#define mp make_pair
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define per(i, a, b) for(int i = (a); i >= (b); i--)using namespace std;typedef pair<int, int> pii;
typedef double db;
const int N = 1e6 + 50;
struct node { int x, id; } a[N]; 
int n, k, h, vis[N], q[N], u, ans = 1e9, cnt; 
inline int read(){int x = 0, f = 1;char ch = getchar();while(ch < '0' || ch > '9') { if(ch == '-') f = -1; ch = getchar();}while(ch >='0' && ch <='9') { x = (x<<3)+(x<<1)+(ch^48); ch = getchar();}return x*f;
}
bool mycmp(node a, node b){ return a.x < b.x; }
void insert(int x) { if(vis[x] == 0) cnt++; vis[x]++; }
void remove(int x) { if(vis[x] == 1) cnt--; vis[x]--; }
void init(){n = read(); k = read();rep(i, 1, k){int t = read();rep(j, 1, t) a[++h].x = read(), a[h].id = i;}sort(a+1, a+n+1, mycmp);
}
void work(){int l = 1, r = 1;while(r <= n){insert(a[r].id);while(true) {remove(a[l].id); if(cnt == k) l++;else { insert(a[l].id); break;}}if(cnt == k) ans = min(ans, a[r].x - a[l].x);r++;}printf("%d\n", ans);
}
int main(){init();work();return 0;
}
View Code

 

转载于:https://www.cnblogs.com/smilke/p/11580240.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/549475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

就算忘了自己也忘不了你

就算忘了自己也忘不了你——代腾飞 2009年4月24日 于成都曾经你说要我紧紧地抱住你让我们的两颗心能紧贴在一起用你的柔情将他们水浮交融彼此渗透到对方的心底我毫不犹豫照做 曾经你说你要用你的脚轻轻放在我的胸膛上你好走到离我心最近的地方让你的脚印镌刻在我的心里成为不…

PJ2018T4 对称二叉树 树形结构

题意&#xff1a;现在给出一棵二叉树&#xff0c;希望你找出它的一棵子树&#xff0c;该子树为对称二叉树&#xff0c;且节点数最多。请输出这棵子树的节点数。对称二叉树满足&#xff1a;将这棵树所有节点的左右子树交换后&#xff0c;新树和原树对应位置的结构相同且点权相等…

Flex的事件(十四)

一、 关于键盘事件<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />程序响应一个按键或一系列按键并执行一些动作&#xff0c;例如Controlq退出程序。Flex支持所有来自后台操作系统的所有组合键操作&#xff0c;它同样允许你覆…

EditPlus构建轻量级编译环境

你还在为机子跑VS&#xff0c;VC6.0吃力而苦恼吗&#xff1f;最近发现网上一个小窍门&#xff0c;就是用EditPlus文本编辑器构建轻量级编译环境&#xff0c; 轻量级的东西就是受人喜欢&#xff0c;要不说Spring能流行起来呢。最近自学C#&#xff0c;有了Java思想&#xff0c;加…

OCP-052考试题库汇总(58)-CUUG内部解答版

In one of your databases: 1.USER1 and USER2 have no system privileges. 2.ROLE1 only has these privileges: ?CREATE SESSION ?CREATE TABLE ?CREATE VIEW Examine these commands: SQL> conn / as sysdba Connected. SQL> GRANT create table, role1 TO user1 W…

提高ASP.Net应用程序性能的十大方法

一、返回多个数据集 检查你的访问数据库的代码&#xff0c;看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集&#xff0c;可以减少与数据库通信的时间&#xff0c;使你的系统具有扩展性&#xff0c;…

【NOIP2015提高组】子串 区间DP+滚动数组优化

题意&#xff1a; 有两个仅包含小写英文字母的字符串 A 和 B。 现在要从字符串 A 中取出 k 个互不重叠的非空子串&#xff0c;然后把这 k 个子串按照其在字符串 A 中出现的顺序依次连接起来得到一个新的字符串。 请问有多少种方案可以使得这个新串与字符串 B 相等&#xff1f; …

教你如何去淘便宜机票

机票四月二十日集体变相涨价后&#xff0c;中央电视台曾经报道&#xff0c;今后没有5折以下机票&#xff0c;今后也不再叫多少折&#xff0c;而是直接报价&#xff0c;但是春秋航空不再此之列&#xff0c;原因是这次变相提价是一个叫中航信公司在操作&#xff0c;他们不代理春秋…

使用kibana或postman操作Elasticsearch的常用命令

前言服务器&#xff1a;CentOS-6.7 运行系统&#xff1a;windows10 JDK版本&#xff1a;1.8 Elasticsearch版本&#xff1a;5.6.6 插件&#xff1a;kibana、elasticsearch-head 工具&#xff1a;postman 一、集群查看集群是否健康 GET /_cluster/health二、节点查看节点列表后面…

asp.net 实现一级域名与二级域名共享COOKIE

COOKIE可以自动由子级域名分享&#xff0c;无须做什么特别设置。对网站www.abc.com&#xff0c;check.abc.com来说&#xff0c;它们都是二级域名&#xff0c;一级域名是abc.com。所以&#xff0c;保存COOKIE的时候&#xff0c;将Cookie的Domain设置成“.abc.com”&#xff0c;无…

32位单精度浮点乘法器的FPGA实现

摘 要: 采用Verilog HDL语言, 在FPGA上实现了32位单精度浮点乘法器的设计, 通过采用改进型Booth编码&#xff0c;和Wallace 树结构, 提高了乘法器的速度。本文使用Altera Quartus II 4.1仿真软件, 采用的器件是EPF10K100EQ 240 -1, 对乘法器进行了波形仿真, 并采用0.5CMOS工艺…

Elasticsearch修改字段之别名,扩展数据迁移

https://blog.csdn.net/amaranth__/article/details/84497075 转载于:https://www.cnblogs.com/zeenzhou/p/11588599.html

网工视频13第13章.计算机系统开发运行与配置疑难问题

网工视频请留下你的邮箱&#xff0c;我给你发邮件。转载于:https://blog.51cto.com/ricebetter2010/155609

ES 基本操作

0.查看集群是否健康GET /_cluster/health 1.查询所有索引GET /_cat/indices?v 2.查询单个索引的映射GET /index_trans_detail/_mapping 3.删除indexDELETE /index_trans_detail,index_two 4. 添加字段映射PUT /index_trans_detail/_mapping/type_trans_detail{ "properti…

我们的运动会

不久前&#xff0c;我们举办了微软中国研发集团的首届运动会。遗憾的是&#xff0c;当时我自己由于公务在身没能参加。事后同事们把许多精彩的图片与我分享&#xff0c;让我十分羡慕他们有机会大显身手&#xff0c;现在贴出来让大家看看他们的飒爽英姿&#xff0c;一睹为快。运…

ES建立索引步骤, 1,index 2.mapping 3,别名

1.建立索引PUT /index_trans_detail 2.建立mappingPOST /index_trans_detail/type_trans_detail/_mapping{ "type_trans_detail": { "properties": { "id": { "type": "long" }, "entId": { "type": &q…

java路径问题

Java路径 Java中使用的路径&#xff0c;分为两种&#xff1a;绝对路径和相对路径。具体而言&#xff0c;又分为四种&#xff1a; 一、URI形式的绝对资源路径 如&#xff1a;file:/D:/java/eclipse32/workspace/jbpmtest3/bin/aaa.b URL是URI的特例。URL的前缀/协议&#xff0c;…

题解P1613跑路

今天没什么好说的那我就卖个萌吧(&#xff5e;&#xffe3;▽&#xffe3;)&#xff5e; Luogu 一道思维题可能仅是对我来说&#xff0c;对于大佬们都是显然的 简化题意 给你一个图&#xff0c;找到一个路径&#xff0c;使其路径的二进制位中\(1\)的个数最少 分析 这题的题目就…

路由重分布列表控制例子

OSPF与RIP路由重分布配置&#xff0c;使用重分布列表&#xff0c;对分布的路由进行控制的配置如上例图所示&#xff1a;“RIP与OSPF路由重分布例子”switchA(config)#router ripswitchA(config-router)#network 192.168.10.0switchA(config-router)#network 192.168.20.0switch…

git随笔

repo init -u ssh://wangxygit.fd565.com:29418/Product/F3/Lichee.git rm .repo/ -rf rm ~/.ssh/* -rf ssh-keygen cat ~/.ssh/id_rsa.pu repo sync -j8 —————————————————————————————————————————————————————————…