/*
一开始想到的是 对于每个区间操作
先按左端点排序(包含的区间 留这打的区间)
我们维护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. B - Double Cola

    Problem description Sheldon, Leonard, Penny, Rajesh and Howard are in the queue for a "Double C ...

  2. jQuery 对象转成 DOM 对象

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  3. ScreenRecord(about C# winform)

    由于一些不得不做的事(哈,有时间再聊),所以就不得不写一个关于录屏的软件了,如此无力的开篇,开始吧. 在网上搜了很多关于录屏的源码,发现都使不了,剧情的需要很难满足.于是突然想到了github上的一个 ...

  4. C#将文件压缩成一个文件流,供前端下载

    直接上代码供大家参考... 前端页面就是一个下载的Button.. <body> <form id="form1" runat="server" ...

  5. jvm堆外直接内存实现高性能接入层

    jvm堆外直接内存实现高性能接入层https://blog.csdn.net/phil_code/article/details/69056086

  6. Beta冲刺-星期三

    这个作业属于哪个课程  <课程的链接>            这个作业要求在哪里 <作业要求的链接> 团队名称 Three cobblers 这个作业的目标 剩余任务预估,分配 ...

  7. 【Oracle】数据迁移工具(1):SQL Loader

    SQL Loader是一种数据加载工具,可以把外部数据加载到Oracle数据库中.SQL Loader中的参数有很多,本文只在第一部分中列出常用参数.要想运用SQL Loader工具 ,需要我们编辑一 ...

  8. 【Linux】七种文件类型

    Linux中的七种文件类型 d 目录文件. l 符号链接(指向另一个文件). s 套接字文件. b 块设备文件,二进制文件. c 字符设备文件. p 命名管道文件. - 普通文件

  9. 【python】os.getcwd和getcwdu

    print os.getcwd(), type(os.getcwd()) print os.getcwdu(), type(os.getcwdu()) 结果如下: C:\Users\Administr ...

  10. 【sqli-labs】 less42 POST -Error based -String -Stacked(POST型基于错误的堆叠查询字符型注入)

    Forgot your password? New User click here? 看源码,可以发现和less 24不同的一点在于password字段没有进行转义处理 那就对password字段进行 ...