维护两个优先队列即可。要注意,当出现蛋糕的位置刚好在狗的位置时,存在右边。

注意输出大小写。。。

#include <iostream>
#include <queue>
#include <cstdio> using namespace std; struct RP{
int pos;
bool operator < (const RP &t)const{
if(pos>t.pos) return true;
return false;
}
};
struct LP{
int pos;
bool operator < (const LP &t)const{
if(pos<t.pos) return true;
return false;
}
}; priority_queue<LP>LeftPush;
priority_queue<RP>RightPush;
LP tmpL;
RP tmpR; void Clear(){
while(!LeftPush.empty())
LeftPush.pop();
while(!RightPush.empty())
RightPush.pop();
} int main(){
int T,P,N,POS,kase=0;
int op,position;
int direct,left,right;
bool flagL,flagR;
scanf("%d",&T);
int ans;
while(T--){
Clear();
POS=0;
direct=1;
ans=0;
scanf("%d%d",&P,&N);
while(N--){
scanf("%d",&op);
if(!op){
scanf("%d",&position);
if(position>=POS){
tmpR.pos=position;
RightPush.push(tmpR);
}
else if(position<POS){
tmpL.pos=position;
LeftPush.push(tmpL);
}
}
else{
flagR=flagL=false;
if(!RightPush.empty()){
flagR=true;
tmpR=RightPush.top();
}
if(!LeftPush.empty()){
flagL=true;
tmpL=LeftPush.top();
}
if(!flagR&&!flagL){
// direct=-1;
continue;
}
else if(!flagR&&flagL){
direct=-1;
ans+=(POS-tmpL.pos);
POS=tmpL.pos;
LeftPush.pop();
}
else if(flagR&&!flagL){
direct=1;
ans+=(tmpR.pos-POS);
POS=tmpR.pos;
RightPush.pop();
}
else{
left=POS-tmpL.pos;
right=tmpR.pos-POS;
if(right<left){
direct=1;
ans+=right;
RightPush.pop();
POS=tmpR.pos;
}
else if(left<right){
ans+=left;
direct=-1;
LeftPush.pop();
POS=tmpL.pos;
}
else {
if(direct>0){
direct=1;
ans+=right;
RightPush.pop();
POS=tmpR.pos;
}
else{
ans+=left;
direct=-1;
LeftPush.pop();
POS=tmpL.pos;
}
}
}
}
}
printf("Case %d: %d\n",++kase,ans);
}
return 0;
}

  

HDU 4302 Contest 1的更多相关文章

  1. hdu 4302 Holedox Eating

    http://acm.hdu.edu.cn/showproblem.php?pid=4302 #include <cstdio> #include <cstring> #inc ...

  2. HDU 4302 Holedox Eating(multiset)

    http://acm.hdu.edu.cn/showproblem.php?pid=4302 题意: 在一条直线上,会有多条命令,如果是0,那么就会在x位置处出现一个蛋糕,如果是1,某人就会找到最近的 ...

  3. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  4. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  5. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  6. HDU 4302 Holedox Eating (STL + 模拟)

    Holedox Eating Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  7. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  8. hdu 4302 优先队列

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

  9. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

随机推荐

  1. BA--三相异步电机_星三角降压启动

    星一三角启动就是一种简单方便的降压启动方式,同时还可通过手动和自动操作控制方式实现. 星三角起动的优点还是很显著的,因为同任何别的减压起动器相比较,其结构最简单,价格也最便宜 除此之外,星三角起动方式 ...

  2. opencv3.2+opencv_contrib+cmake

    转自原文 opencv3.2+opencv_contrib+cmake 心得体会 初学OpenCV发现opencv3.2(下载链接在附录)是没有xfeatures2d等模块的.第三方库opencv_c ...

  3. 图像滤镜艺术---保留细节的磨皮之C#程序实现

    上一篇博文"保留细节的磨皮滤镜之PS实现"一文中.我简介了本人自己总结的一种非常easy的磨皮滤镜,这个滤镜在磨光皮肤的同一时候,会保留非常不错的细节,今天,我将介绍使用C#程序实 ...

  4. cocos2D(六)----CCLayer

    一个游戏中能够有非常多个场景,每一个场景里面又可能包括有多个图层,这里的图层一般就是CCLayer对象.CCLayer本身差点儿没什么功能.对照CCNode,CCLayer可用于接收触摸和加速计输入. ...

  5. 基于QMP实现对qemu虚拟机进行交互

    本文详解QMP,包含qmp.hmp.qemu-guest-agent的介绍.工作原理.配置方法.范例 小慢哥的原创文章,欢迎转载 目录 ▪ QMP介绍 ▪ QMP语法 ▪ 单独使用qemu,启用QMP ...

  6. Windows下慎用内核隔离

    1. 开启内核隔离后只能通过注册表关闭   2. 开启内核隔离后, 默认会启动hybrid-v, 这个东西和虚拟机是冲突的, 这样就用不了虚拟机了.   3. 解决方法: 关闭内核隔离后, 再关闭已经 ...

  7. linux压缩(解压缩)命令详解

    一.tar命令          tar可以为文件和目录创建档案.利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件.tar 最初被用来在磁带上创 ...

  8. POJ 3660 Floyd传递闭包

    题意:牛有强弱,给出一些牛的强弱的胜负关系,问可以确定几头牛的排名. 思路: Floyd传递闭包 // by SiriusRen #include <bitset> #include &l ...

  9. 微信小程序 | canvas绘图

    1.新的尺寸单位 rpx rpx(responsive pixel): 可以根据屏幕宽度进行自适应. 规定屏幕宽为750rpx.如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则 ...

  10. vscode 插件推荐 - 献给所有前端工程师

    VScode现在已经越来越完善.性能远超Atom和webstorm,你有什么理由不用它?在这里,我会给你们推荐很多实用的插件,让你对 vscode 有更深刻的体会,渐渐地你就会知道它有多好用. 走马观 ...