HDU Distinct Values
/*
一开始想到的是 对于每个区间操作
先按左端点排序(包含的区间 留这打的区间)
我们维护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的更多相关文章
- hdu 6301 Distinct Values (思维+set)
hdu 6301 Distinct Values 题目传送门 题意: 给你m个区间,让你求出一个长度为n的区间且满足在这些区间的数不重复, 并且要求字典序最小 思路: 如果我们已经求出这个序列了,你会 ...
- hdu多校1004 Distinct Values
Distinct Values Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): ...
- 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 ...
- HDU 多校对抗赛 D Distinct Values
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- hdu 6301 Distinct Values (贪心)
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 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 ...
- HDU6301 Distinct Values (多校第一场1004) (贪心)
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- Distinct Values(贪心)
问题 D: Distinct Values 时间限制: 1 Sec 内存限制: 128 MB提交: 13 解决: 5[提交] [状态] [讨论版] [命题人:admin] 题目描述 Chiaki ...
- 杭电2018暑假多校第一场 D Distinct Values hdu6301 贪心
Distinct Values Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
随机推荐
- 禁止tomcat扫描jar包的tld文件
禁止tomcat扫描jar包的tld文件tomcat/conf/logging.properties 取消注释org.apache.jasper.compiler.TldLocationsCache. ...
- Jquery 获取父页面下指定iframe里的指定元素
var div1=$("#iframe1",window.parent.document).contents().find("#div1");
- Deutsch lernen (14)
1. das Abseits, - 越位 Der Linienrichter winkte Abseits. winken - winkte - gewunken 示意 2. abs ...
- 时序分析:ARIMA模型(非平稳时间序列)
转载于一篇硕士论文.... ARIMA模型意为求和自回归滑动平均模型(IntergratedAut少regressive MovingAverageModel),简记为ARIMA(p,d,q),p,q ...
- java中的位运算及移位运算
为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: & 按位与 | 按位或 ^ 按位异或 ~ 按位取反 Java中有三个移位运算符: 左移:&l ...
- (转)淘淘商城系列——Solr集群搭建
http://blog.csdn.net/yerenyuan_pku/article/details/72957201 我们之前做的搜索使用的是Solr的单机版来实现的,正是由于我们现在商品数据量不多 ...
- commons.dbutils 的使用列子
c0p3的导入请参考前文 https://www.cnblogs.com/appium/p/10183016.html JdbcUtils: package cn.itcast.jdbc; impor ...
- ecshop 后台增加栏目
① 后台左侧导航添加菜单 Ecshop后台增加一个左侧列表菜单需要修改三个文件/admin/includes/inc_menu.php /admin/includes/inc_priv.php /la ...
- 在win7下,easyphp安装过程中MSVCR110.DLL没有被指定在WINDOWS上运行,或者它包含错误
这是安装easyphp后启动时出现的错误界面.查网上一大堆说法,基本上p用没有.真正解决的办法去m$站点 http://www.microsoft.com/zh-CN/download/details ...
- ro多层的事务处理失败的困惑
现象: 用 :: ::'' 在客户端用上面的语句取得数据,然后修改数据,通过RO的web service提交数据失败: 用 -- ::-- ::'‘ 在客户端用上面的语句取得数据,然后修改数据,通过R ...