HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6
Hiking
Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 97 Accepted Submission(s): 56
Special Judge
soda conveniently labeled by 1,2,…,n
beta, their best friends, wants to invite some soda to go hiking. The
i
soda will go hiking if the total number of soda that go hiking except him is no less than
l
and no larger than r
beta will follow the rules below to invite soda one by one:
1. he selects a soda not invited before;
2. he tells soda the number of soda who agree to go hiking by now;
3. soda will agree or disagree according to the number he hears.
Note: beta will always tell the truth and soda will agree if and only if the number he hears is no less than
l
and no larger than r
otherwise he will disagree. Once soda agrees to go hiking he will not regret even if the final total number fails to meet some soda's will.
Help beta design an invitation order that the number of soda who agree to go hiking is maximum.
T
indicating the number of test cases. For each test case:
The first contains an integer n
(1≤n≤10
the number of soda. The second line constains n
integers l
The third line constains n
integers r
(0≤l
It is guaranteed that the total number of soda in the input doesn't exceed 1000000. The number of test cases in the input doesn't exceed 600.
1,2,…,n
denoting the invitation order. If there are multiple solutions, print any of them.
4
8
4 1 3 2 2 1 0 3
5 3 6 4 2 1 7 6
8
3 3 2 0 5 0 3 6
4 5 2 7 7 6 7 6
8
2 2 3 3 3 0 0 2
7 4 3 6 3 2 2 5
8
5 6 5 3 3 1 2 4
6 7 7 6 5 4 3 5
7
1 7 6 5 2 4 3 8
8
4 6 3 1 2 5 8 7
7
3 6 7 1 5 2 8 4
0
1 2 3 4 5 6 7 8
#include<stdio.h>
#include<queue>
#include<algorithm>
#include<string.h>
using namespace std;
const int N = 100005;
struct nnn
{
int l,r,id;
}node[N];
struct NNNN
{
int r,id;
friend bool operator<(NNNN aa,NNNN bb){
return aa.r>bb.r;
}
}; priority_queue<NNNN>q;
int id[N];
bool vist[N]; bool cmp1(nnn aa, nnn bb){ return aa.l<bb.l;}
int main()
{
int T,n,ans;
NNNN now;
scanf("%d",&T);
while(T--){
scanf("%d",&n);
ans=0; for(int i=0; i<n; i++){
scanf("%d",&node[i].l);
node[i].id=i+1;
}
for(int i=0; i<n; i++)
scanf("%d",&node[i].r);
sort(node,node+n,cmp1);
memset(vist,0,sizeof(vist));
int i=0;
while(i<n){
bool ff=0;
while(i<n&&ans>=node[i].l&&ans<=node[i].r){
now.r=node[i].r; now.id=node[i].id;
q.push(now);
//printf("in = %d\n",now.id);
i++; ff=1;
}
if(ff)i--;
while(!q.empty()){
now=q.top(); q.pop();
if(now.r<ans)continue;
//printf("out = %d\n",now.id);
ans++; id[ans]=now.id;vist[now.id]=1;
if(node[i+1].l<=ans)
break;
}
i++;
}
while(!q.empty()) {
now=q.top(); q.pop();
if(now.r<ans)continue;
//printf("out = %d\n",now.id);
ans++; id[ans]=now.id; vist[now.id]=1;
} bool fff=0;
printf("%d\n",ans);
for( i=1; i<=ans; i++) if(i>1) printf(" %d",id[i]); else if(i==1) printf("%d",id[i]);
if(ans)fff=1;
for( i=1; i<=n; i++) if(vist[i]==0&&fff) printf(" %d",i); else if(vist[i]==0) printf("%d",i),fff=1;
printf("\n");
}
}
HDU 5360 Hiking(优先队列)2015 Multi-University Training Contest 6的更多相关文章
- hdu 5360 Hiking(优先队列+贪心)
题目:http://acm.hdu.edu.cn/showproblem.php? pid=5360 题意:beta有n个朋友,beta要邀请他的朋友go hiking,已知每一个朋友的理想人数[L, ...
- 2015 Multi-University Training Contest 6 hdu 5360 Hiking
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Su ...
- HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5
思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...
- HDU 6125 - Free from square | 2017 Multi-University Training Contest 7
思路来自这里 - - /* HDU 6125 - Free from square [ 分组,状压,DP ] | 2017 Multi-University Training Contest 7 题意 ...
- HDU 6129 - Just do it | 2017 Multi-University Training Contest 7
比赛时脑子一直想着按位卷积... 按题解的思路: /* HDU 6129 - Just do it [ 规律,组合数 ] | 2017 Multi-University Training Contes ...
- HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5
思路和任意模数FFT模板都来自 这里 看了一晚上那篇<再探快速傅里叶变换>还是懵得不行,可能水平还没到- - 只能先存个模板了,这题单模数NTT跑了5.9s,没敢写三模数NTT,可能姿势太 ...
- HDU 6093 - Rikka with Number | 2017 Multi-University Training Contest 5
JAVA+大数搞了一遍- - 不是很麻烦- - /* HDU 6093 - Rikka with Number [ 进制转换,康托展开,大数 ] | 2017 Multi-University Tra ...
- HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5
看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...
- HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4
/* HDU 6073 - Matching In Multiplication [ 图论 ] | 2017 Multi-University Training Contest 4 题意: 定义一张二 ...
随机推荐
- bootstrapValidator关于verbose需要优化的地方
开发中需要用到bootstrapValidator的配置verbose:false,达到当前验证不通过不往下在验证的效果 问题: 当前字段需要remote验证时,此配置无效,原因在于remote是异步 ...
- Max-heap && Min-heap && push_heap
最大堆:make_heap(vi.begin(),vi.end()) #include <iostream> #include <vector> #include <al ...
- hdu5079
这道题的难点在于思考dp表示什么 首先可以令ans[len]表示白色子矩阵边长最大值大于等于len的方案数则ans[len]-ans[len+1]就是beautifulness为len的方案数 白色子 ...
- MySQL密码不能登陆问题
由于种种原因,在进行开发的时候我一直是基于Windows平台,并且以前初学的时候常常重装不同版本的 MySQL数据库.因此长时间不使用后就产生了一些冲突的问题. 简单描述下,今天用以前 ...
- java开发3~5年工作经验面试题
关于java基础 String,StringBuilder,StringBuffer区别是什么?底层数据结构是什么?分别是如何实现的? HashSet的底层实现是什么?它与HashMap有什么关系? ...
- Maven学习笔记2
Maven安装配置 1.下载Maven 官方地址:http://maven.apache.org/download.cgi 将下载的压缩包解压到你要安装 Maven 的文件夹.假设你解压缩到文件夹 – ...
- 欧拉定理【p4861】按钮
Background Ada被关在了一个房间里. Description 房间的铁门上有一个按钮,还有一个显示屏显示着"1". 旁边还有一行小字:"这是一个高精度M进制计 ...
- RPD Volume 172 Issue 1-3 December 2016 评论04 end
这一篇作为本期的结束是因为发现后面的一些基本上也是EPR有关的会议内容, Contribution of Harold M. Swartz to In VivoEPR and EPR Dosimetr ...
- APP换肤
一.需求说明 当一个APP用户量大的时候,就需要给不同的用户做标签,用来彰显身份.比如QQ的会员,VIP等不同的皮肤功能. 二.实现方法. 所谓不同的皮肤,就是不同的权限(身份)显示不同的本地或者网络 ...
- [BZOJ4367][IOI2014]Holiday(决策单调性+分治+主席树)
4367: [IOI2014]holiday假期 Time Limit: 20 Sec Memory Limit: 64 MBSubmit: 421 Solved: 128[Submit][Sta ...