2018icpc 徐州h题
题目大意:
https://codeforces.com/gym/102012/problem/H?csrf_token=c9d0191a64a241166d54a565b1615125
区间[l , r] 中有n条线 问用k种颜色最多能染多少区间 并输出区间和r - l;
∑n <= 2e6,1 <= k <= 2e5,0 <= l < r <= 1e9。
解题思路:
把N*2 个端点排序, 对端点和颜色进行入队出队操作 当颜色为空时说明这个区间满足要求,并将此线段保留到延迟染色的队伍中等待下次染色
ac代码:
#include<bits/stdc++.h>
#define sz(x) ((int)x.size())
//#define mp(x, y) make_pair(x, y)
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAXN = ;
int T, n, k, col[MAXN];
struct Node{
int st, id;
Node(){}
Node(int _st, int _id){//方便结构体赋值
st = _st; id = _id;
}
bool operator < (const Node &nd) const{//否则多定义一个cmd排序
if(st == nd.st) return id < nd.id;
return st < nd.st;
}
}seg[MAXN];
queue<int> rCol, rSeg;
int main(){
scanf("%d", &T);
while(T --){
scanf("%d%d", &n, &k);
while(sz(rCol)) rCol.pop();
while(sz(rSeg)) rSeg.pop();
for(int i = ; i <= n; i ++){
int l, r;
scanf("%d%d", &l, &r);
col[i] = ;
seg[i] = Node(l, i);
seg[i + n] = Node(r, -i);
}
if(n < k){
printf("0\n1");
for(int i = ; i <= n; i ++)
printf("");
printf("\n");
continue;
}
sort(seg + , seg + *n + );
for(int i = ; i <= k; i ++)
rCol.push(i);
ll ans = ;
for(int i = ; i <= *n; i ++){
if(sz(rCol) == )//没有颜色可染,此端点到前个端点必满足条件
ans += seg[i].st - seg[i - ].st;
if(seg[i].id > ){//左端点进来
if(sz(rCol)){//有颜色染色 ,没颜色放入延迟染色
int tc = rCol.front();
col[seg[i].id] = tc;
rCol.pop();
}
else
rSeg.push(seg[i].id);
}
else{//右端点出去
if(col[- seg[i].id])//已经染色则归还颜色
rCol.push(col[- seg[i].id]);
else//没有说明不做贡献
col[- seg[i].id] = ;
}
while(sz(rCol) && sz(rSeg)){
int tc = rCol.front();
int ts = rSeg.front();
rSeg.pop();
if(col[ts]) continue;//归还了颜色没有出队
col[ts] = tc;
rCol.pop();
}
}
printf("%I64d\n", ans);
for(int i = ; i <= n; i ++)
printf("%d%c", col[i], i == n ? '\n' : ' ');
}
return ;
}
2018icpc 徐州h题的更多相关文章
- hdu 4548   第六周H题(美素数)
		
第六周H题 - 数论,晒素数 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u De ...
 - 2013年省赛H题
		
2013年省赛H题你不能每次都快速幂算A^x,优化就是预处理,把10^9预处理成10^5和10^4.想法真的是非常巧妙啊N=100000构造两个数组,f1[N],间隔为Af2[1e4]间隔为A^N,中 ...
 - http://codeforces.com/gym/100623/attachments H题
		
http://codeforces.com/gym/100623/attachments H题已经给出来的,包括后来添加的,都累加得到ans,那么从1-ans都是可以凑出来的,如果ans<a[n ...
 - 2019牛客暑期多校训练营(第三场)B题、H题
		
传送门 题意: 就是说给你一个由0或1组成的字符串,让你找出来一个0的数量和1的数量相等的最长子字符串和最长子序列 题解: 可以把0当作-1,把1当作1来计算字符串的前缀和 这样的话,当两个位置的前缀 ...
 - 计蒜客 31460 - Ryuji doesn't want to study - [线段树][2018ICPC徐州网络预赛H题]
		
题目链接:https://nanti.jisuanke.com/t/31460 Ryuji is not a good student, and he doesn't want to study. B ...
 - 计蒜客 31453 - Hard to prepare - [递归][2018ICPC徐州网络预赛A题]
		
题目链接:https://nanti.jisuanke.com/t/31453 After Incident, a feast is usually held in Hakurei Shrine. T ...
 - 计蒜客 31459 - Trace - [线段树][2018ICPC徐州网络预赛G题]
		
题目链接:https://nanti.jisuanke.com/t/31459 样例输入 3 1 4 4 1 3 3 样例输出 10 题意: 二维平面上给出 $n$ 个点,每个点坐标 $\left( ...
 - ACM-ICPC 2018徐州网络赛-H题 Ryuji doesn't want to study
		
死于update的一个long long写成int了 真的不想写过程了 ******** 树状数组,一个平的一个斜着的,怎么斜都行 题库链接:https://nanti.jisuanke.com/t/ ...
 - 2018icpc徐州网络赛-H Ryuji doesn't want to study(线段树)
		
题意: 有n个数的一个数组a,有两个操作: 1 l r:查询区间[l,r]内$a[l]*(r-l+1)+a[l+1]*(r-l)+a[l+2]*(r-l-1)+\cdots+a[r-1]*2+a[r] ...
 
随机推荐
- luogu4677山区建小学题解--区间DP
			
题目链接 https://www.luogu.org/problemnew/show/P4677 分析 这道题方法跟之前题不一样,我们相当于枚举一个左右端点来线性扩展,同时划分断点进行决策 \(f[i ...
 - springboot-异步、发送邮件(一)
			
pom.xml <!--邮件javax.mail--> <dependency> <groupId>org.springframework.boot</gro ...
 - ef core many to many
			
https://stackoverflow.com/questions/46184678/fluent-api-many-to-many-in-entity-framework-core/461847 ...
 - jQuery 手写菜单(ing)
			
菜单支持多级 直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
 - C语言——指针总结
			
在创建指针时,我们首先要做的是先初始化它,没有初始化的指针是很危险的,因为指针可以指向一个地址后直接改变它的值,所以为了避免我们的指针在创建后指向一个危险区域(即可能指向系统文件等),我们会先给它一个 ...
 - 页面加载完毕后调用js方法进行布局操控 已实验
			
页面加载完毕后调用js方法进行布局操控 已实验 $(function(){ var check1 = $("[id$=SMS]").is(':checked'); var bl=$ ...
 - java集合之hashMap,初始长度,高并发死锁,java8 hashMap做的性能提升
			
众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry.这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干. HashMap ...
 - CHD-5.3.6集群安装
			
我是基于Apache-hadoop2.7.3版本安装成功后,已有的环境进行安装chd-5..6 已用的环境: JDK版本: java version "1.8.0_191" Jav ...
 - django请求周期和请求信息
			
Django的请求周期 1,概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页. 那么: Djan ...
 - 移动端meta常用的设置
			
1.qq强制横屏或者竖屏显示 : <meta name="x5-orientation" content="portrait ||andscape&quo ...