http://acm.hdu.edu.cn/showproblem.php?pid=4302

题意:

在一条直线上,会有多条命令,如果是0,那么就会在x位置处出现一个蛋糕,如果是1,某人就会找到最近的蛋糕去吃。一开始在0坐标处,如果两边都有距离相同的蛋糕,则不改变方向。求经过的总距离。

思路:

multiset维护,每次1命令时在multiset找距离最近的即可。

 #include<iostream>
#include<cstdio>
#include<set>
using namespace std; int L,n;
multiset<int> s;
multiset<int>::iterator it; int main()
{
//freopen("in.txt","r",stdin);
int T;
int kase = ;
scanf("%d",&T);
while(T--)
{
s.clear();
scanf("%d%d",&L,&n);
int ans = ;
int pos = , dir = ;
for(int i=;i<n;i++)
{
int op;
scanf("%d",&op);
if(op==)
{
int x; scanf("%d",&x);
s.insert(x);
}
else
{
if(s.size()==) continue;
it = s.lower_bound(pos);
int tmp1 = -, tmp2 = -;
if(it!=s.end())
{
tmp1 = *it - pos;
}
if(it!=s.begin())
{
tmp2 = pos - *(--it);
}
if(tmp1 == )
{
if(tmp2==-) s.erase(it);
else s.erase(++it);
continue;
}
if(tmp1 == -)
{
ans += tmp2;
dir = ;
pos = *it;
s.erase(it);
}
else if(tmp2 == -)
{
ans += tmp1;
dir = ;
pos = *it;
s.erase(it);
}
else if(tmp1 == tmp2)
{
if(dir == )
{
ans += tmp1;
pos = *(++it);
s.erase(it);
}
else
{
ans += tmp2;
pos = *it;
s.erase(it);
}
}
else
{
if(tmp1 < tmp2)
{
ans += tmp1;
dir = ;
pos = *(++it);
s.erase(it);
}
else
{
ans +=tmp2;
dir = ;
pos = *it;
s.erase(it);
}
}
}
}
printf("Case %d: ",++kase);
printf("%d\n",ans);
}
return ;
}

HDU 4302 Holedox Eating(multiset)的更多相关文章

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

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

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

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

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

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

  4. hdu 4302 Holedox Eating

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

  5. HDU 5938 Four Operations(四则运算)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  6. HDU 5775 Bubble Sort(冒泡排序)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  7. HDU 1711 Number Sequence(数列)

    HDU 1711 Number Sequence(数列) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...

  8. HDU 1005 Number Sequence(数列)

    HDU 1005 Number Sequence(数列) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...

  9. HDU 1176 免费馅饼 (动态规划)

    HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...

随机推荐

  1. 【转】ETL介绍与ETL工具比较

    本文转载自:http://blog.csdn.net/u013412535/article/details/43462537 ETL,是英文 Extract-Transform-Load 的缩写,用来 ...

  2. scss简单用法

  3. What’s WOYO PDR-007 Paintless Dent Repair Heat Induction?

    when you car body with dent, which tools can fixing this problem? is there a device which with the c ...

  4. PDF文档导出

    代码如下: /// <summary> /// 获取html内容,转成PDF(注册) /// </summary> public void DownloadPDFByHTML( ...

  5. Linux下解析域名命令-dig 命令使用详解

    Linux下解析域名除了使用nslookup之外,开可以使用dig命令来解析域名,dig命令可以得到更多的域名信息.dig 命令主要用来从 DNS 域名服务器查询主机地址信息.dig的全称是 (dom ...

  6. 前端框架VUE----babel

    这个是解析我们es6的代码的,为什么要用它呢,因为对于一些ie浏览器,甚至FF浏览器,低版本的还不能识别我们的es6代码,那么vue里面好多还让我们去写es6的代码,这个时候我们就可以用babel这个 ...

  7. Linux centos7 下 svn 服务器搭建

    摘自:https://www.cnblogs.com/mymelon/p/5483215.html 鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在 ...

  8. 分页的模块layui

    //调用分页模块 var laypage = layui.laypage; //分页的配置项 laypage.render({ elem:"page",//(指向存放分页的容器,值 ...

  9. Centos下搭建golang环境

    一.下载安装包 先查看一下我的Centos版本,这里是6.4. # cat /etc/redhat-release CentOS release 6.4 (Final) 去go语言中文社区下载想要下载 ...

  10. XX-net

    环境:win10企业版 #停用“ip helper”服务 net stop "ip helper" #启用“ip helper”服务 net start "ip help ...