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

Problem Description
There are n
soda conveniently labeled by 1,2,…,n.
beta, their best friends, wants to invite some soda to go hiking. The
i-th
soda will go hiking if the total number of soda that go hiking except him is no less than
li
and no larger than ri.
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
li
and no larger than ri,
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.
 
Input
There are multiple test cases. The first line of input contains an integer
T,
indicating the number of test cases. For each test case:



The first contains an integer n
(1≤n≤105),
the number of soda. The second line constains n
integers l1,l2,…,ln.
The third line constains n
integers r1,r2,…,rn.
(0≤li≤ri≤n)

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.
 
Output
For each test case, output the maximum number of soda. Then in the second line output a permutation of
1,2,…,n
denoting the invitation order. If there are multiple solutions, print any of them.
 
Sample Input
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
 
Sample Output
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
 
Source
#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的更多相关文章

  1. hdu 5360 Hiking(优先队列+贪心)

    题目:http://acm.hdu.edu.cn/showproblem.php? pid=5360 题意:beta有n个朋友,beta要邀请他的朋友go hiking,已知每一个朋友的理想人数[L, ...

  2. 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 ...

  3. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  4. HDU 6125 - Free from square | 2017 Multi-University Training Contest 7

    思路来自这里 - - /* HDU 6125 - Free from square [ 分组,状压,DP ] | 2017 Multi-University Training Contest 7 题意 ...

  5. HDU 6129 - Just do it | 2017 Multi-University Training Contest 7

    比赛时脑子一直想着按位卷积... 按题解的思路: /* HDU 6129 - Just do it [ 规律,组合数 ] | 2017 Multi-University Training Contes ...

  6. HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5

    思路和任意模数FFT模板都来自 这里 看了一晚上那篇<再探快速傅里叶变换>还是懵得不行,可能水平还没到- - 只能先存个模板了,这题单模数NTT跑了5.9s,没敢写三模数NTT,可能姿势太 ...

  7. HDU 6093 - Rikka with Number | 2017 Multi-University Training Contest 5

    JAVA+大数搞了一遍- - 不是很麻烦- - /* HDU 6093 - Rikka with Number [ 进制转换,康托展开,大数 ] | 2017 Multi-University Tra ...

  8. HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5

    看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...

  9. HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4

    /* HDU 6073 - Matching In Multiplication [ 图论 ] | 2017 Multi-University Training Contest 4 题意: 定义一张二 ...

随机推荐

  1. HTML5 拖拽事件

    dragstart:拖拽开始 drag: 拖拽中,会不停的触发 dragend:拖拽结束 ondraglevea:有元素离开了本元素 ondragenter:有元素进入了本元素 ondragover: ...

  2. [ 脚本 ] RHEL6.x 及Centos6.x 初始化脚本

    #!/bin/bash # check network echo "-------------check Network-------------" ping -c -t mirr ...

  3. 简单unix 局域网的TCP会话

    client.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <e ...

  4. Selenium2+python自动化71-多个浏览器之间的切换【转载】

    前言 有时候一些业务的功能涉及到多个系统,需要在web系统1打开造一些数据,然后用到某些参数是动态生成的,需要调用web系统2里面的参数. 举个简单例子:在做某些业务的时候,需要手机短信验证码,我不可 ...

  5. Selenium2+python自动化59-数据驱动(ddt)【转载】

    前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一 ...

  6. slatstack Master的配置

    Salt系统非常简单并且易于配置,Salt系统的两个组件都有各自的配置文件.如"salt-master"是通过主配置文件来配置的,"salt-minion"是通 ...

  7. ubuntu下执行ulimit返回“不允许的操作”,问题解决思路

    在ubuntu下执行ulimit,希望修改允许的最大打开文件数,但返回“不允许的操作”. 使用ulimit -a查看当前配置 core file size (blocks, -c) 0 data se ...

  8. UVA Rails(stl-stack)

    具体思路是从B方向的序列 倒推 栈C 的入栈出栈顺序,  以B方向的5,4,3,2,1为例子:从一个数字5开始,要想从栈C拿到5号车厢,5号车厢得入栈C,且5号车厢处于栈顶位置,为了保证5号车  厢在 ...

  9. AHOI2009中国象棋

    首先以行为阶段,根据象棋的规则,在同一行中,至多只能有两个炮,同理:在同一列中,至多只能有两个炮思考一个可以覆盖整个状态空间的dp数组:dp[i]表示到了第i行接下来我们想:某列中的炮能否通过位运算求 ...

  10. COW

    COW 时间限制: 1 Sec  内存限制: 64 MB提交: 41  解决: 18[提交][状态][讨论版] 题目描述 Bessie the cow has stumbled across an i ...