题意:有一个小动物在长L的数轴上,最开始这只小动物在0点,每个时候,有可能有两种事件,第一种是数轴上某一点会出现一份食物,另一种是小动物想找吃的,这种情况小动物会找最近的一个食物,然后过去,如果两边的食物距离相同,那么就按最后一次移动的方向去,如果两边都没有食物,就呆在原地。

思路:刚开始想用线段树做来着,但是想了想感觉好麻烦,后来想这题其实就是从左边找个最大值,从右边找个最小值嘛,那就可以用两个优先队列搞了。还有一点就是注意一下当前位置就有食物的情况就行了。

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<stack>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define eps 1e-9
#define pi acos(-1.0)
using namespace std;
typedef long long ll;
using namespace std;
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int t,L,n,tcase=0;scanf("%d",&t);while(t--){tcase++;priority_queue<int>ql;priority_queue<int,vector<int>,greater<int> >qr;scanf("%d%d",&L,&n);int now=0,scnt=0;int tp,v,lmove=-1;int sum=0;while(n--){scanf("%d",&tp);if(tp){if(scnt) scnt--;else{int lp=-1,rp=-1;if(!ql.empty()) lp=ql.top();if(!qr.empty()) rp=qr.top();if(lp==-1&&rp==-1) continue;if(lp==-1) lmove=1;else if(rp==-1) lmove=0;else if(now-lp<rp-now) lmove=0;else if(now-lp>rp-now) lmove=1;if(lmove){sum+=(rp-now);now=rp;scnt=0;qr.pop();while(!qr.empty()&&(qr.top()==rp)){scnt++;qr.pop();}}else{sum+=(now-lp);now=lp;scnt=0;ql.pop();while(!ql.empty()&&(ql.top()==lp)){scnt++;ql.pop();}}}}else{scanf("%d",&v);if(v>now) qr.push(v);else if(v<now) ql.push(v);else scnt++;}}printf("Case %d: %d\n",tcase,sum);}return 0;
}

hdu 4302 Holedox Eating(优先队列)相关推荐

  1. hdu 4302 Holedox Eating

    优先队列做法:用两个优先队列维护信息,蛋糕大于他当前所在位置的,用从小到大的优先级:蛋糕小于等于他当前所在位置,用从大到小的优先级.两个队列取出的元素再进行比较 #include <iostre ...

  2. HDOJ 4302 Holedox Eating (multiset || 线段树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4302 思路:很多人说这题是个线段树题...不过当时没想出来怎么用线段树做~后面再补吧... 比赛时用的 ...

  3. HDU 4857 拓扑排序 优先队列

    n个数,已经有大小关系,现给m个约束,规定a在b之前,剩下的数要尽可能往前移.输出序列 大小关系显然使用拓扑结构,关键在于n个数本身就有大小关系,那么考虑反向建图,优先选择值最大的入度为零的点,这样得 ...

  4. [HDU] 2611 Sequence two -优先队列和一般队列一起使用。

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2611 方法: 和hdu 2610不一样,该题中要求的顺序除了根据长度外是根据数字大小而不是数字所在的 ...

  5. HDU 1242 Rescue BFS+优先队列

    题目链接:点击打开链接http://acm.hdu.edu.cn/showproblem.php?pid=1242 #include <stdio.h> #include <stri ...

  6. hdu 幸福列车_优先队列+结构体

    这道题是优先队列数组+结构体,题意很好懂,就是要注意最后记得把优先队列数组清空. #include <iostream> #include <string> #include ...

  7. HDU - 1434 幸福列车 优先队列

    Description 一批幸福的列车即将从杭州驶向幸福的终点站--温州,身为总列车长的linle有一些奇怪的癖好. 他会记录下全部乘客的名字(name)和他们的人品值(RP),根据这些将他们排序,并 ...

  8. HDU 4666 Hyperspace(优先队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4666 题意:两种操作:(1)增加一个点到序列中:(2)删除序列中的某个点.在每次操作之后,输出序列中曼 ...

  9. hdu 4302 STL multiset

    用multiset过 #include<cstdio> #include<cstring> #include<iostream> #include<set&g ...

最新文章

  1. 如何使用Fiddler抓包操作?
  2. VC++中进程间相互通信的十一种方法
  3. 十九、深入Python匿名函数
  4. 重复类发展手法_正确的护肤手法(动态演示),喜欢就拿去收藏吧!
  5. 浅谈String str = 和 new String()的区别
  6. SQL JOB 调用 SSIS package 权限问题
  7. 在服务器上安装centos系统
  8. Xp计算机同步时间,windows xp时间不准不能自动同步的解决办法
  9. 三角函数 弧度角度换算
  10. YARN 删除所有ACCEPTED任务的命令
  11. [CSS3] 使用边框和背景(设置元素的背景)
  12. CentOS + Mongodb 搭建NodeBB [转载翻译]
  13. postman获取返回值及tests[]用法
  14. MySQL结课体会,听课心得体会小结
  15. zookeeper 集群搭建及常见问题解决(虚拟机)
  16. 计算sin(x)的定积分
  17. 传销——别在我跟前买阔
  18. android逆向分析之从smali到java
  19. USB等高速差分信号是否需要包地?
  20. 值传递和引用传递详解

热门文章

  1. PPT中图片(形状)叠加时的透明效果
  2. Android:ping
  3. Node.JS基础知识之命令行窗口(Windows 的命令行窗口)
  4. 同步Overleaf, Github与本地latex文件
  5. 52ypay comsubmit php,Hack易支付平台 - 一站式免签约支付方案-Hack易支付
  6. 互联网用户公众账号信息服务管理规定
  7. 什么是进程、进程的概念?
  8. 相差为2的两个素数称为孪生素数
  9. 云服务器搭建GitLab
  10. Bullet physics 引擎的官方文档翻译