/*
一开始想到的是 对于每个区间操作
先按左端点排序(包含的区间 留这打的区间)
我们维护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. 禁止tomcat扫描jar包的tld文件

    禁止tomcat扫描jar包的tld文件tomcat/conf/logging.properties 取消注释org.apache.jasper.compiler.TldLocationsCache. ...

  2. Jquery 获取父页面下指定iframe里的指定元素

    var div1=$("#iframe1",window.parent.document).contents().find("#div1");

  3. Deutsch lernen (14)

    1.    das Abseits, -  越位 Der Linienrichter winkte Abseits.  winken - winkte - gewunken  示意 2.    abs ...

  4. 时序分析:ARIMA模型(非平稳时间序列)

    转载于一篇硕士论文.... ARIMA模型意为求和自回归滑动平均模型(IntergratedAut少regressive MovingAverageModel),简记为ARIMA(p,d,q),p,q ...

  5. java中的位运算及移位运算

    为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: &    按位与 |     按位或 ^    按位异或 ~    按位取反 Java中有三个移位运算符: 左移:&l ...

  6. (转)淘淘商城系列——Solr集群搭建

    http://blog.csdn.net/yerenyuan_pku/article/details/72957201 我们之前做的搜索使用的是Solr的单机版来实现的,正是由于我们现在商品数据量不多 ...

  7. commons.dbutils 的使用列子

    c0p3的导入请参考前文 https://www.cnblogs.com/appium/p/10183016.html JdbcUtils: package cn.itcast.jdbc; impor ...

  8. ecshop 后台增加栏目

    ① 后台左侧导航添加菜单 Ecshop后台增加一个左侧列表菜单需要修改三个文件/admin/includes/inc_menu.php /admin/includes/inc_priv.php /la ...

  9. 在win7下,easyphp安装过程中MSVCR110.DLL没有被指定在WINDOWS上运行,或者它包含错误

    这是安装easyphp后启动时出现的错误界面.查网上一大堆说法,基本上p用没有.真正解决的办法去m$站点 http://www.microsoft.com/zh-CN/download/details ...

  10. ro多层的事务处理失败的困惑

    现象: 用 :: ::'' 在客户端用上面的语句取得数据,然后修改数据,通过RO的web service提交数据失败: 用 -- ::-- ::'‘ 在客户端用上面的语句取得数据,然后修改数据,通过R ...