题目大意:

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. [转载]什么是白化(whitening)?

    [转载]什么是白化(whitening)? 来源:https://blog.csdn.net/hjimce/article/details/50864602 白化whitening 原文地址:http ...

  2. ES6入门六:class的基本语法、继承、私有与静态属性、修饰器

    基本语法 继承 私有属性与方法.静态属性与方法 修饰器(Decorator) 一.基本语法 class Grammar{ constructor(name,age){ //定义对象自身的方法和属性 t ...

  3. IDEA的第一个java程序

    import java.util.Scanner;public class 阶乘{ public static void main(String[] args) { int sum=1,i; Scan ...

  4. sql 创建新表时的完成格式

    1 create table [dbo].[Customer] ( CustomerID int identity(1,1) not null, [Name] [nvarchar](50) null, ...

  5. InnoDB意向锁的作用

    https://www.zhihu.com/question/51513268?sort=created IX,IS是表级锁,不会和行级的X,S锁发生冲突.只会和表级的X,S发生冲突. 意向锁是一种快 ...

  6. 解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在

    当maven项目里面有用到JDK内部的一些类或者接口的时候,用maven编译一般会出现如下错误: 程序包:com.sun.xml.internal.bind.marshaller.CharacterE ...

  7. 变种XSS:持久控制

    变种XSS:持久控制 tig3r · 2015/11/30 10:42 0x00 引言 首先声明,这不是一个新洞,看过 Homakov 文章(最后附)以及译文的人想必对这种漏洞有所了解. 但原文写的太 ...

  8. Kubernetes对象中的PersistentVolume、PersistentVolumeClaim和StorageClass的概念关系

    Kubernetes容器要持久化数据,离不开volume,k8s的volume和Docker原生概念中的volume有一些差别,不过本次不讲这个,本次要明确的是k8s持久化数据用到的几个对象Persi ...

  9. D. Happy Tree Party CodeForces 593D【树链剖分,树边权转点权】

    Codeforces Round #329 (Div. 2) D. Happy Tree Party time limit per test 3 seconds memory limit per te ...

  10. Java入门第三季——Java中的集合框架(中):Map&HashMap

    package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 学生类 * @author Ad ...