Holedox Eating

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 2862    Accepted Submission(s): 952

Problem Description
Holedox is a small animal which can be considered as one point. It lives in a straight pipe whose length is L. Holedox can only move along the pipe. Cakes may appear anywhere in the pipe, from time to time. When Holedox wants to eat cakes, it always goes to the nearest one and eats it. If there are many pieces of cake in different directions Holedox can choose, Holedox will choose one in the direction which is the direction of its last movement. If there are no cakes present, Holedox just stays where it is.
 
Input
The input consists of several test cases. The first line of the input contains a single integer T (1 <= T <= 10), the number of test cases, followed by the input data for each test case.The first line of each case contains two integers L,n(1<=L,n<=100000), representing the length of the pipe, and the number of events. 
The next n lines, each line describes an event. 0 x(0<=x<=L, x is a integer) represents a piece of cake appears in the x position; 1 represent Holedox wants to eat a cake.
In each case, Holedox always starts off at the position 0.
 
Output
Output the total distance Holedox will move. Holedox don’t need to return to the position 0.
 
Sample Input
3
10 8
0 1
0 5
1
0 2
0 0
1
1
1

10 7
0 1
0 5
1
0 2
0 0
1
1

10 8
0 1
0 1
0 5
1
0 2
0 0
1
1

 
Sample Output
Case 1: 9
Case 2: 4
Case 3: 2
 
Author
BUPT
 
Source
 
Recommend
zhuyuanchen520
 
题意:在一条直线上一开始一只小动物在0点,然后有两种操作,一种是在某一点上放一块蛋糕,另一种是去吃一块蛋糕。其中吃蛋糕有规定,先吃离小动物最近的蛋糕,如果有两块蛋糕离小动物的距离一样近,先吃当时的朝向的蛋糕,问所有操作以后小动物所走的路多长。
 
#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue> using namespace std; int L,n;
priority_queue<int,vector<int>,greater<int> >q1; //升序,(比loc大的,即蛋糕在自己位置的右边)
priority_queue<int> q2; //降序,(比loc小的,即蛋糕在自己位置的左边)
int loc,dir,ans=; //loc代表自己的位置,dir==0表示向左,dir==1表示向右,ans为答案 void Forward(){ //向前走
int tmp=q1.top();
q1.pop();
ans+=tmp-loc;
loc=tmp;
dir=;
} void Back(){ //向后走
int tmp=q2.top();
q2.pop();
ans+=loc-tmp;
loc=tmp;
dir=;
} int main(){ //freopen("input.txt","r",stdin); int t,cases=;
scanf("%d",&t);
while(t--){
while(!q1.empty())
q1.pop();
while(!q2.empty())
q2.pop();
scanf("%d%d",&L,&n);
loc=,dir=,ans=;
int op,x;
while(n--){
scanf("%d",&op);
if(op==){
scanf("%d",&x);
if(x>=loc)
q1.push(x);
else
q2.push(x);
}else{
if(q1.empty() && q2.empty()) //没有蛋糕则什么也不做
continue;
if(q1.empty() && !q2.empty()){
Back();
continue;
}
if(!q1.empty() && q2.empty()){
Forward();
continue;
}
if(!q1.empty() && !q2.empty()){
int tmp1=q1.top();
int tmp2=q2.top();
if(tmp1-loc>loc-tmp2)
Back();
else if(tmp1-loc<loc-tmp2)
Forward();
else{
if(dir==)
Forward();
else
Back();
}
}
}
}
printf("Case %d: %d\n",++cases,ans);
}
return ;
}

HDU 4302 Holedox Eating (STL + 模拟)的更多相关文章

  1. HDU 4302 Holedox Eating (线段树模拟)

    题意:一个老鼠在一条长度为L的直线上跑,吃蛋糕,老鼠只能沿直线移动.开始时没有蛋糕,老鼠的初始位置是0. 有两个操作,0 x 代表在位置x添加一个蛋糕: 1 代表老鼠想吃蛋糕.老鼠每次都会选择离自己最 ...

  2. hdu 4302 Holedox Eating

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

  3. HDU 4302 Holedox Eating(multiset)

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

  4. hdu 4302 Holedox Eating(优先队列/线段树)

    题意:一只蚂蚁位与原点,在x轴正半轴上会不时地出现一些蛋糕,蚂蚁每次想吃蛋糕时选取最近的去吃,如果前后距离相同,则吃眼前的那一块(即方向为蚂蚁的正前),求最后蚂蚁行进距离. 思路:优先队列q存储蚂蚁前 ...

  5. Holedox Eating HDU4302 模拟

    Problem Description Holedox is a small animal which can be considered as one point. It lives in a st ...

  6. multiset || 线段树 HDOJ 4302 Holedox Eating

    题目传送门 题意:一个长度L的管子,起点在0.n次操作,0 p表示在p的位置放上蛋糕,1表示去吃掉最近的蛋糕(如果左右都有蛋糕且距离相同,那么吃同方向的蛋糕),问最终走了多少路程 分析:用multis ...

  7. hdu------(4302)Holedox Eating(树状数组+二分)

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

  8. stl+模拟 CCF2016 4 路径解析

    // stl+模拟 CCF2016 4 路径解析 // 一开始题意理解错了.... #include <iostream> #include <string> #include ...

  9. HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)

    HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...

随机推荐

  1. Eclipse技术: 项目文件中过滤.o文件

    1. 右建项目 -> Properties. 2. 增加过滤规则

  2. 数据库迁移工具Navicat Premium之OracleToMysql

    一.问题 由于工作需要,需要把业务库的数据库从oracle签到mysql,免费开源 二.解决办法 2.1:ETL单个对象进行转移(最笨的办法,所以抛弃掉了) 2.2:使用Navicat Premium ...

  3. [Docker] Hooking a Volume to Node.js Source Code

    Normally when you create a Volume, it will store in Docket Host, you can also tell the folder which ...

  4. easyui form load 数据表单有下拉框

    (function () { $('#text1').combobox({ url: 'http://localhost:5463/test/getComboJson' }) $('#text2'). ...

  5. Springboot单元测试(MockBean||SpyBean)

    转载:https://blog.csdn.net/maiyikai/article/details/78483423 本来要写springboot集成netty实现的,但是想起来单元测试没总结,那就趁 ...

  6. centos6默认python2.6升级2.7 卸载python2.6升级2.7

    转自:http://blog.csdn.net/u010098331/article/details/52190354 本文介绍CentOS 6.3从自带的Pyhon版本是2.6升级到2.7.6的方法 ...

  7. Mycat读写分离、主从切换学习(转)

    http://blog.csdn.net/zhanglei_16/article/details/50707487 Mycat读写分离.主从切换学习问题一:分表.分库的优缺点,以及分表无法成为主流分表 ...

  8. javascript常用的公共方法

    附件下载 //摘要:将指定字符串中的格式项替换为指定数组中相应对象的字符串表示形式. //参数:复合格式字符串. //返回结果:format的副本,其中的格式项已替换为 args 中相应对象的字符串表 ...

  9. typescript - 前言介绍

    众所周知,JavaScript是弱语言(子承父业都表达不了),因此比较大的企业考虑到可维护性以及安全性来说,都不用它开发,因此Typescript诞生了,它并不是为了替换JavaScript而诞生的, ...

  10. Yahoo邮箱最后登录,成为历史!