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 题意: 定义一张二 ...
随机推荐
- Mark : Bootstrap fileInput控制预览页面上传、删除、详情按钮
Bootstrap fileInput默认预览上传效果: 而我们可能想要的结果是: 这时候可以通过初始参数layoutTemplates来控制:
- require.js模块化管理和加载js(按需加载)简单实例教学
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代 ...
- 《深入理解Java虚拟机》学习笔记
<深入理解Java虚拟机>学习笔记 一.走近Java JDK(Java Development Kit):包含Java程序设计语言,Java虚拟机,JavaAPI,是用于支持 Java 程 ...
- 记录一次WebService使用的经历
于业务需要,需要和第三方对接一些接口,但是问题是,他们的接口提供是webservice的,本人只精通restful接口(也就是说我比较年轻^-^).好在对面人特别奈斯,一顿指导我,感谢. 废话不多说了 ...
- IE8的 JS 引擎如此不堪?
之前给客户做了个网站,其中有这么一个功能: 文章内容中,有指向某个图片的链接,链接内容为图片名称(文字),点击之后在页面上弹出该图片显示,图片可以为png,jpg,gif等. 于是,祭出了JQuery ...
- (一)安装openvpn服务器端
环境 centos版本 [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 关闭cento ...
- MySQL逻辑架构简介
1.Connectors指的是不同语言中与SQL的交互2 Management Serveices & Utilities: 系统管理和控制工具3 Connection Pool: 连接池管理 ...
- Codeforces #439 Div2 E
#439 Div2 E 题意 给出二维平面,有多个询问: 把某一区域围起来(围墙之间无交点) 移除某一区域的围墙(此时保证围墙一定存在) 选定两个位置问是否可以互相到达 分析 看起来很复杂,其实这道题 ...
- 选择快速源来加速linux系统更新
sudo pacman-mirrors -c China -g 引用自manjaro百度贴吧
- [xsy2300]好题
题意:有一棵树,每个节点有颜色,要找出最小的连通块使得其中的点至少有$k$种不同的颜色,只需输出这个最小连通块的大小 因为$k$很小,所以如果颜色只有$k$种,我们可以直接状压DP,设$f_{i,j} ...