/*
一开始想到的是 对于每个区间操作
先按左端点排序(包含的区间 留这打的区间)
我们维护pos表示 a数组找到了哪
对于当前这个区间 只需要找 pos--r这个区间
用set维护能用的数 没放到a中一个 就在set里面删除
对于下次处理的区间 上次的l到这次的l里的数 再扔到set里面 然后 本地跑4+s 怎么搞都过不了...... 其实可以不用对区间操作, 这样子常数比较大
直接维护每个点 向左延伸到哪(就是这个区间里的数不重复)
我们填i的时候 它向左延伸的左端点l 一定比i-1的l要大
所以拿个指针走一走
常数小
另外说一句 多校太可怕了.....
25号继续相约hdu
*/
#include<cstdio>
#include<iostream>
#include<set>
#define maxn 100010
using namespace std;
int T,n,m,pre[maxn],a[maxn];
set<int>s;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
int pos=,l,r;s.clear();
for(int i=;i<=n;i++)a[i]=;
for(int i=;i<=n;i++)pre[i]=i;
for(int i=;i<=n;i++)s.insert(i);
for(int i=;i<=m;i++){
scanf("%d%d",&l,&r);
pre[r]=min(pre[r],l);
}
for(int i=n-;i>=;i--)
pre[i]=min(pre[i],pre[i+]); for(int i=;i<=n;i++){
while(pos<pre[i]){
s.insert(a[pos]);pos++;
}
a[i]=*s.begin();s.erase(a[i]);
}
for(int i=;i<n;i++)
printf("%d ",a[i]==?:a[i]);
printf("%d\n",a[n]==?:a[n]);
}
return ;
} tle #include<cstdio>
#include<algorithm>
#include<set>
#include<cstdlib>
#define maxn 100010
using namespace std;
int T,n,N,m,a[maxn];
struct node{
int l,r;
}A[maxn],B[maxn];
set<int> s;
int cmp(const node &X,const node &Y){
if(X.l==Y.l)return X.r>Y.r;
return X.l<Y.l;
}
int init(){
int x=;char s=getchar();
while(s<''||s>'')s=getchar();
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
return x;
}
int main(){
T=init();
while(T--){
n=init();m=init();
s.clear();N=;
for(int i=;i<=n;++i)a[i]=;
for(int i=;i<=m;++i){
B[i].l=init();B[i].r=init();
}
sort(B+,B++m,cmp);
for(int i=;i<=m;++i)
if(B[i+].l>=B[i].l&&B[i+].r<=B[i].r)continue;
else A[++N]=B[i];
int pos=A[].l-,st;set<int>::iterator p;
for(int i=;i<=n;++i)s.insert(i);
for(int i=;i<=N;++i){
st=pos+;
for(p=s.begin();p!=s.end();++p){
a[++pos]=*p;
if(pos>=A[i].r)break;
}
for(int j=st;j<=pos;++j)
s.erase(a[j]);
for(int j=A[i+].l-;j>=A[i].l;--j)
s.insert(a[j]);
}
for(int i=;i<=n;++i)
printf("%d ",a[i]==?:a[i]);
printf("\n");
}
return ;
}

HDU Distinct Values的更多相关文章

  1. hdu 6301 Distinct Values (思维+set)

    hdu 6301 Distinct Values 题目传送门 题意: 给你m个区间,让你求出一个长度为n的区间且满足在这些区间的数不重复, 并且要求字典序最小 思路: 如果我们已经求出这个序列了,你会 ...

  2. hdu多校1004 Distinct Values

    Distinct Values Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): ...

  3. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  4. HDU 多校对抗赛 D Distinct Values

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. hdu 6301 Distinct Values (贪心)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. 2018 Multi-University Training Contest 1 Distinct Values 【贪心 + set】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6301 Distinct Values Time Limit: 4000/2000 MS (Java/Ot ...

  7. HDU6301 Distinct Values (多校第一场1004) (贪心)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. Distinct Values(贪心)

    问题 D: Distinct Values 时间限制: 1 Sec  内存限制: 128 MB提交: 13  解决: 5[提交] [状态] [讨论版] [命题人:admin] 题目描述 Chiaki ...

  9. 杭电2018暑假多校第一场 D Distinct Values hdu6301 贪心

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

随机推荐

  1. Python启动浏览器Firefox\Chrome\IE

    # -*- coding:utf-8 -*- import os import selenium from selenium import webdriver from selenium.webdri ...

  2. RabbitMQ 官方NET教程(二)【工作队列】

    这篇中我们将会创建一个工作队列用来在工作者(consumer)间分发耗时任务. 工作队列的主要任务是:避免立刻执行资源密集型任务和避免必须等待其完成.相反地,我们进行任务调度:我们把任务封装为消息发送 ...

  3. JQuery 一些特殊符号的使用

    前言:我写博客的频率与我的清闲程度成正比..   太闲了所以想记录一下JQuery里的特殊符号,级别:入门级.用到哪里写到哪里,不全面是肯定的. 其实只要接触前端就肯定少不了用jquery,但是以前太 ...

  4. 关于python学习路线

    *Python进阶(目录/书籍/学习路线) 忘了从哪里转的了,没办法标记哦,实在不好意思... 目录:) 1. 简介&helloworld&开发环境配置 2.基本语法:标识符& ...

  5. slf4j日志只输出到控制台,没输出到日志文件

    最近使用SLF4J遇到了一个比较头疼的坑,日志输出到控制台没有问题,但是始终没有输出到日志文件.无论怎麽修改日志配置,始终是老样子. 有一种绝望,是各种百度.google却还是解决不了问题..直到我在 ...

  6. JSP_内置对象_out

    out对象是JspWriter类的实例,是向客户端输出内容的常用对象,常用方法如下: void println() 向客户端打印字符串 void clear() 清除缓冲区的内容,如果在flush之后 ...

  7. vue移动端Ui组件 mint-ui 使用指南

    1.上啦加载下拉刷新的使用 this.$refs.loadmore.onTopLoaded(); this.$refs.loadmore.onBottomLoaded(); 上啦刷新下拉加载的 动画显 ...

  8. H5网页涂鸦canvas

    最近做了个播放页面,标题和一个iframe;需要对这个iframe可以进行网页涂鸦.网页涂鸦肯定是canvas了.网上找了个差不多的,实验下来问题很多,干脆自己一步步修改,学习. 效果: 本项目没有引 ...

  9. PAT_A1122#Hamiltonian Cycle

    Source: PAT A1122 Hamiltonian Cycle (25 分) Description: The "Hamilton cycle problem" is to ...

  10. 15.5.5 【Task实现细节】围绕 await 表达式的控制

    任何 await 表达式均表示执行路径的一个分支.首先,被等待的异步操作得到一个awaiter,然后检查其 IsCompleted 属性.若返回 true ,即可立即获得结果并继续.否则,需进行以下处 ...