用到优先队列

 #include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<queue>
#define N 1000005
using namespace std;
struct Node
{
int r,l,id;
bool operator <(Node a) const{return l>a.l;}//为了优先队列的优先级的排列,>队列顶端是最小的,反之是最大的
}soda[N];
int cmp(Node a,Node b)
{
return a.r<b.r;
}
int vis[];
vector<int> ans;
priority_queue<Node> que;
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
memset(vis,,sizeof(vis));
ans.clear();
while(!que.empty()) que.pop();
for(int i=;i<n;i++)
{
cin>>soda[i].r;
soda[i].id=i+;
}
for(int i=;i<n;i++) cin>>soda[i].l;
sort(soda,soda+n,cmp);
int num=;
int id=;
for(int i=;i<n;i++)
{
while(id<n)
{
if(soda[id].r<=num)
{
que.push(soda[id]);
id++;
}
else break;
}
while(!que.empty())
{
if(que.top().l>=num)
{
ans.push_back(que.top().id);
vis[que.top().id]=;
que.pop();
num++;
break;
}
else que.pop();
}
}
int cnt = ;
int i;
printf("%d\n", ans.size()) ;
for(i = ; i < ans.size() ; i++)
{
cnt++ ;
if( cnt == n )
printf("%d\n", ans[i]) ;
else
printf("%d ", ans[i]) ;
}
for(i = ; i <= n ; i++)
{
if( vis[i] ) continue ;
cnt++ ;
if( cnt == n )
printf("%d\n", i) ;
else
printf("%d ", i) ;
}
}
return ; }

hdu 5306 优先队列的更多相关文章

  1. HDU 4006 优先队列

    The kth great number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Oth ...

  2. hdu 5818 (优先队列) Joint Stacks

    题目:这里 题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个 ...

  3. hdu 4302 优先队列

    进一步学习了优先队列的用法 题意:一只小动物在直线上走,起始位置为零,之后会出现食物,动物要去距离自己最短的食物那,若两边的食物距离相等,则选择之前走的方向的食物 0 x,代表x的位置出现了食物,1代 ...

  4. hdu 4393 优先队列

    用优先队列储存每个人的初始距离和编号,每轮求出最快的人,然后pop掉 一开始想遍历队列的,后来发现队列没办法遍历,汗-_-! 题意,给几个第一秒冲出的距离和以后速度,求每秒后最前面人的编号,求完后最前 ...

  5. HDU 1058 优先队列or堆

    本来应当是一道优先队列或者堆的题 因为每个数都应该是已经得到的数*2 *3 *5 *7而得到的 但是 2*7 大于 3*2 这就必须保证每次取得都是没有拿过的最小的数 但是它主动降低难度在样例里卖了个 ...

  6. hdu 2258 优先队列

    Continuous Same Game (1) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java ...

  7. hdu 4544 优先队列+贪心

    题意:最近,减肥失败的湫湫为发泄心中郁闷,在玩一个消灭免子的游戏.游戏规则很简单,用箭杀死免子即可.箭是一种消耗品,已知有M种不同类型的箭可以选择,并且每种箭都会对兔子造成伤害,对应的伤害值分别为Di ...

  8. HDU 5700 优先队列(或者multiset) 或 线段树

    题目大意:有n个区间,求k个区间,使得这k个区间相交的区间内数字之和最大.数列的数字均>=0 优先队列思路: 按照左端点sort,然后枚举左端点,假设他被覆盖过k次,然后用优先队列来维护最右端即 ...

  9. hdu 1026(优先队列+路径输出)

    Ignatius and the Princess I Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...

随机推荐

  1. Kinect SDK 安装失败

    错误提示:Kinect Management failed to start. 原因: 1, Kinect Management 服务相依的 Plug and Play的服务没有启动. 2,系统安装了 ...

  2. 【C语言】pragma

    ① #pragma comment (lib, "libgsl.a") 这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得 链接器在链接库的时候要去找libgs ...

  3. 最小集合(51nod 1616)

    A君有一个集合. 这个集合有个神奇的性质. 若X,Y属于该集合,那么X与Y的最大公因数也属于该集合. 但是他忘了这个集合中原先有哪些数字. 不过幸运的是,他记起了其中n个数字. 当然,或许会因为过度紧 ...

  4. microsofr visual studio编写c语言

    过程: 1.创建win32 控制台项目 文件->新建->项目->Visual C++ ->Win32   输入项目名称   选择项目保存位置 2.添加->新建如图

  5. MVC学习笔记---MVC框架执行顺序

    一.把路由添加到路由表, 二.注册ControllerBuilder(老板)和默认工厂(DefaultControllerFactory) 2.1默认工厂获取可以创建的Controller. 三.由于 ...

  6. CLR via C#(08)-操作符

    对于操作符,我们并不陌生,例如+,-,*,%等二元操作符,以及++,!等一元操作符.但是对于非基元类型,我们需要通过一些自定义方法才能使用这些操作符.今天主要和大家分享关于操作符重载和转换操作符的知识 ...

  7. android:installLocation = "auto" 的用法

    在Froyo(android 2.2,API Level:8)中引入了android:installLocation.通过设置该属性可以使得开发者以及用户决定程序的安装位置. android:inst ...

  8. Shell编程基础教程4--控制流结构

    4.控制流结构    4.1.控制结构            4.2.if then else语句        格式: if 条件1 //如果条件1为真 then 命令1 //那么,执行命令1 el ...

  9. 11g 使用rman duplicate复制数据库,创建辅助实例

    一,创建所需目录 1)创建审计文件目录 PROD1@dbrac1 /dsg/oracle11$ cd $ORACLE_BASE/admin PROD1@dbrac1 /u01/app/oracle/a ...

  10. 初识SQL Server Integration Service

    SSIS(SQL Server Integration Service)是Microsoft 从SQL Server2005 以后发布的,现在一直跟随每个SQL server版本.它是Microsof ...