HDU 4302 Holedox Eating(multiset)
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)的更多相关文章
- HDU 4302 Holedox Eating (STL + 模拟)
Holedox Eating Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- hdu 4302 Holedox Eating(优先队列/线段树)
题意:一只蚂蚁位与原点,在x轴正半轴上会不时地出现一些蛋糕,蚂蚁每次想吃蛋糕时选取最近的去吃,如果前后距离相同,则吃眼前的那一块(即方向为蚂蚁的正前),求最后蚂蚁行进距离. 思路:优先队列q存储蚂蚁前 ...
- HDU 4302 Holedox Eating (线段树模拟)
题意:一个老鼠在一条长度为L的直线上跑,吃蛋糕,老鼠只能沿直线移动.开始时没有蛋糕,老鼠的初始位置是0. 有两个操作,0 x 代表在位置x添加一个蛋糕: 1 代表老鼠想吃蛋糕.老鼠每次都会选择离自己最 ...
- hdu 4302 Holedox Eating
http://acm.hdu.edu.cn/showproblem.php?pid=4302 #include <cstdio> #include <cstring> #inc ...
- HDU 5938 Four Operations(四则运算)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU 5775 Bubble Sort(冒泡排序)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU 1711 Number Sequence(数列)
HDU 1711 Number Sequence(数列) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU 1005 Number Sequence(数列)
HDU 1005 Number Sequence(数列) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- HDU 1176 免费馅饼 (动态规划)
HDU 1176 免费馅饼 (动态规划) Description 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人品实在是太好了,这馅饼 ...
随机推荐
- Presto 学习
Presto 基础知识与概念学习可以参考这些博客: presto 0.166概述 https://www.cnblogs.com/sorco/p/7060166.html Presto学习-prest ...
- go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量
go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...
- Python+OpenCV图像处理(七)—— 滤波与模糊操作
过滤是信号和图像处理中基本的任务.其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息.过滤可以移除图像中的噪音.提取感兴趣的可视特征.允许图像重采样等等.频域分析将图像分成从低频到高频 ...
- Python爬虫——小说
#encoding:utf8 import re import urllib2 url = 'http://www.23us.com/html/55/55304/' request = urllib2 ...
- Hybrid App中原生页面 VS H5页面(分享)
本文部分转自 http://www.jianshu.com/p/00ff5664e000 现有3类主流APP,分别为:Web App.Hybrid App(混合模式移动应用,Hybrid有“混合的” ...
- JS3D效果
<!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...
- 怎样从外网访问内网MongoDB数据库?
本地安装了一个MongoDB数据库,只能在局域网内访问到,怎样从外网也能访问到本地的MongoDB数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动MongoDB数据库 默认安装 ...
- Java 安全套接字编程以及keytool 使用最佳实践
概述 利用 Java 的 JSSE(Java Secure Socket Extension)技术,我们可以方便的编写安全套接字程序,关于 JSSE 的介绍,可以参阅 Oracle 网站提供的 JSS ...
- Docker学习笔记之搭建 Java Web 项目运行环境
0x00 概述 Java Web 泛指以 Java 程序为基础向外提供 Web 服务的技术及相关工具,狭义上来说,我们也可以说 Java Web 是由 Servlet 程序提供的 Web 服务. 对我 ...
- python面向对象三大特性之一继承、多态、封装
继承,即在定义一个类时,以另一个类为参数,则称这个新定义的类继承了参数类,父类又称为基类. 单继承表示只继承一个类,多继承表示继承多个类. class parent1: pass class pare ...