题目大意:

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题的更多相关文章

  1. hdu 4548 第六周H题(美素数)

    第六周H题 - 数论,晒素数 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   De ...

  2. 2013年省赛H题

    2013年省赛H题你不能每次都快速幂算A^x,优化就是预处理,把10^9预处理成10^5和10^4.想法真的是非常巧妙啊N=100000构造两个数组,f1[N],间隔为Af2[1e4]间隔为A^N,中 ...

  3. http://codeforces.com/gym/100623/attachments H题

    http://codeforces.com/gym/100623/attachments H题已经给出来的,包括后来添加的,都累加得到ans,那么从1-ans都是可以凑出来的,如果ans<a[n ...

  4. 2019牛客暑期多校训练营(第三场)B题、H题

    传送门 题意: 就是说给你一个由0或1组成的字符串,让你找出来一个0的数量和1的数量相等的最长子字符串和最长子序列 题解: 可以把0当作-1,把1当作1来计算字符串的前缀和 这样的话,当两个位置的前缀 ...

  5. 计蒜客 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 ...

  6. 计蒜客 31453 - Hard to prepare - [递归][2018ICPC徐州网络预赛A题]

    题目链接:https://nanti.jisuanke.com/t/31453 After Incident, a feast is usually held in Hakurei Shrine. T ...

  7. 计蒜客 31459 - Trace - [线段树][2018ICPC徐州网络预赛G题]

    题目链接:https://nanti.jisuanke.com/t/31459 样例输入 3 1 4 4 1 3 3 样例输出 10 题意: 二维平面上给出 $n$ 个点,每个点坐标 $\left( ...

  8. ACM-ICPC 2018徐州网络赛-H题 Ryuji doesn't want to study

    死于update的一个long long写成int了 真的不想写过程了 ******** 树状数组,一个平的一个斜着的,怎么斜都行 题库链接:https://nanti.jisuanke.com/t/ ...

  9. 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] ...

随机推荐

  1. luogu4677山区建小学题解--区间DP

    题目链接 https://www.luogu.org/problemnew/show/P4677 分析 这道题方法跟之前题不一样,我们相当于枚举一个左右端点来线性扩展,同时划分断点进行决策 \(f[i ...

  2. springboot-异步、发送邮件(一)

    pom.xml <!--邮件javax.mail--> <dependency> <groupId>org.springframework.boot</gro ...

  3. ef core many to many

    https://stackoverflow.com/questions/46184678/fluent-api-many-to-many-in-entity-framework-core/461847 ...

  4. jQuery 手写菜单(ing)

    菜单支持多级 直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  5. C语言——指针总结

    在创建指针时,我们首先要做的是先初始化它,没有初始化的指针是很危险的,因为指针可以指向一个地址后直接改变它的值,所以为了避免我们的指针在创建后指向一个危险区域(即可能指向系统文件等),我们会先给它一个 ...

  6. 页面加载完毕后调用js方法进行布局操控 已实验

    页面加载完毕后调用js方法进行布局操控 已实验 $(function(){ var check1 = $("[id$=SMS]").is(':checked'); var bl=$ ...

  7. java集合之hashMap,初始长度,高并发死锁,java8 hashMap做的性能提升

    众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry.这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干. HashMap ...

  8. CHD-5.3.6集群安装

    我是基于Apache-hadoop2.7.3版本安装成功后,已有的环境进行安装chd-5..6 已用的环境: JDK版本: java version "1.8.0_191" Jav ...

  9. django请求周期和请求信息

    Django的请求周期 1,概述 首先我们知道HTTP请求及服务端响应中传输的所有数据都是字符串. 在Django中,当我们访问一个的url时,会通过路由匹配进入相应的html网页. 那么: Djan ...

  10. 移动端meta常用的设置

    1.qq强制横屏或者竖屏显示    :   <meta name="x5-orientation" content="portrait ||andscape&quo ...