hdu 4302 优先队列
进一步学习了优先队列的用法
题意:一只小动物在直线上走,起始位置为零,之后会出现食物,动物要去距离自己最短的食物那,若两边的食物距离相等,则选择之前走的方向的食物
0 x,代表x的位置出现了食物,1代表去吃一个食物
#include<stdio.h>
#include<queue>
#include<iostream>
#include<algorithm>
using namespace std;
struct cmp
{
bool operator()(int x,int y)
{
return x>y;
}
};
priority_queue<int,vector<int>,cmp>q;
priority_queue<int>q2;
int main()
{
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
int L,n;
int A,B;
int iCase=;
scanf("%d",&T);
while(T--)
{
iCase++;
scanf("%d%d",&L,&n);
while(!q.empty())q.pop();
while(!q2.empty())q2.pop();
int x=;
int ans=;
int t=;
while(n--)
{
scanf("%d",&A);
if(A==)
{
scanf("%d",&B);
if(B>=x)q.push(B); //记录右边的点
else q2.push(B); //记录左边的点
}
else
{
if(!q.empty()&&!q2.empty())
{
int temp1=q.top();
int temp2=q2.top();
if(temp1-x<x-temp2)
{
t=;
ans+=q.top()-x;
x=q.top();
q.pop();
}
else if(temp1-x>x-temp2)
{
t=-;
ans+=x-q2.top();
x=q2.top();
q2.pop();
}
else if(t==)
{
ans+=q.top()-x;
x=q.top();
q.pop();
}
else
{
ans+=x-q2.top();
x=q2.top();
q2.pop();
}
}
else if(!q.empty())
{
t=;
ans+=q.top()-x;
x=q.top();
q.pop();
}
else if(!q2.empty())
{
t=-;
ans+=x-q2.top();
x=q2.top();
q2.pop();
}
} }
printf("Case %d: %d\n",iCase,ans);
}
return ;
}
hdu 4302 优先队列的更多相关文章
- hdu 4302 Holedox Eating(优先队列/线段树)
题意:一只蚂蚁位与原点,在x轴正半轴上会不时地出现一些蛋糕,蚂蚁每次想吃蛋糕时选取最近的去吃,如果前后距离相同,则吃眼前的那一块(即方向为蚂蚁的正前),求最后蚂蚁行进距离. 思路:优先队列q存储蚂蚁前 ...
- hdu 4302 Holedox Eating
http://acm.hdu.edu.cn/showproblem.php?pid=4302 #include <cstdio> #include <cstring> #inc ...
- HDU 4302 Holedox Eating(multiset)
http://acm.hdu.edu.cn/showproblem.php?pid=4302 题意: 在一条直线上,会有多条命令,如果是0,那么就会在x位置处出现一个蛋糕,如果是1,某人就会找到最近的 ...
- hdu 5306 优先队列
用到优先队列 #include<iostream> #include<string> #include<algorithm> #include<cstdio& ...
- HDU 4006 优先队列
The kth great number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- hdu 5818 (优先队列) Joint Stacks
题目:这里 题意: 两个类似于栈的列表,栈a和栈b,n个操作,push a x表示把数x放进a栈的栈底,pop b 表示将栈b的栈顶元素取出输出,并释放这个栈顶元素,merge a b表示把后面的那个 ...
- hdu 4393 优先队列
用优先队列储存每个人的初始距离和编号,每轮求出最快的人,然后pop掉 一开始想遍历队列的,后来发现队列没办法遍历,汗-_-! 题意,给几个第一秒冲出的距离和以后速度,求每秒后最前面人的编号,求完后最前 ...
- HDU 1058 优先队列or堆
本来应当是一道优先队列或者堆的题 因为每个数都应该是已经得到的数*2 *3 *5 *7而得到的 但是 2*7 大于 3*2 这就必须保证每次取得都是没有拿过的最小的数 但是它主动降低难度在样例里卖了个 ...
- hdu 2258 优先队列
Continuous Same Game (1) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
随机推荐
- 如何获取xcassets中LaunchImage图片
NSDictionary * dic = @{@"320x480" : @"LaunchImage-700", @"320x568" : @ ...
- Nginx变量的实现机制
Nginx有两种定义变量的方式,一种是在配置文件中使用set指令(由rewrite模块提供支持),另一种是在模块内定义变量. 变量相关结构体: struct ngx_http_variable_s { ...
- 使用Adivisor配置增强处理
使用Adivisor配置增强处理 实现步骤: 1.通过MethodBeforeAdivice接口实现前置增强处理 public class ServiceBeforeAdvisor implement ...
- WPF 屏蔽Alt+F4强制退出
if (e.KeyStates == Keyboard.GetKeyStates(Key.F4) && Keyboard.Modifiers == ModifierKeys.Alt) ...
- GDB中应该知道的几个调试方法 来自陈皓
GDB中应该知道的几个调试方法 2011年2月10日陈皓发表评论阅读评论62,325 人阅读 七.八年前写过一篇<用GDB调试程序>,于是,从那以后,很多朋友在MSN上以及给我发邮件询 ...
- Web SQL数据库
Web SQL数据库:它是一个独立的规范,引入了一组使用SQL操作客户端数据库的API. openDatabase方法:这个方法使用现有的数据库或者新建的数据库创建一个数据库对象.如果数据库存在,op ...
- HTML 标准属性 和 事件属性
HTML的公共属性 HTML 和 XHTML 标签支持的标准属性 核心属性 (Core Attributes) 以下标签不提供下面的属性:base.head.html.meta.param.scrip ...
- Truck History(prim & mst)
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 19772 Accepted: 7633 De ...
- How To Install Linux, Nginx, MySQL, PHP (LEMP) Stack on Debian 7
https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on- ...
- 序列化.to_sym
<%= link_to t('links.list'), showable_paths[@subchannel_item.showable_type.to_sym], target: '_bla ...