Stones 优先队列
There are many stones on the road, when he meet a stone, he will
throw it ahead as far as possible if it is the odd stone he meet, or
leave it where it was if it is the even stone. Now give you some
informations about the stones on the road, you are to tell me the
distance from the start point to the farthest stone after Sempr walk by.
Please pay attention that if two or more stones stay at the same
position, you will meet the larger one(the one with the smallest Di, as
described in the Input) first.
which means the test cases in the input file. Then followed by T test
cases.
For each test case, I will give you an Integer N(0<N<=100,000)
in the first line, which means the number of stones on the road. Then
followed by N lines and there are two integers Pi(0<=Pi<=100,000)
and Di(0<=Di<=1,000) in the line, which means the position of the
i-th stone and how far Sempr can throw it.
OutputJust output one line for one test case, as described in the Description.
Sample Input
2
2
1 5
2 4
2
1 5
6 6
Sample Output
11
12 题意是求从出发点到最后一块石头的距离,遇到奇数石头可以扔,偶数不管,那么就是创建优先队列,扔出去的,按照扔出去以后的位置和原来能扔的距离入队就好了。不停直到队列为空。 代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue> using namespace std; struct stone
{
int loc,dis;
friend bool operator <(stone a,stone b)
{
if(a.loc==b.loc)return a.dis>b.dis;
return a.loc>b.loc;
}
}temp,cn;
int main()
{
int T,n,p,d,loca=,c=,maxi=;
priority_queue <stone>q;
scanf("%d",&T);
while(T--)
{
loca=c=maxi=;
scanf("%d",&n);
for(int i=;i<n;i++)
{
scanf("%d%d",&p,&d);
temp.loc=p,temp.dis=d;
q.push(temp);
}
while(!q.empty())
{
c++;
cn=q.top();
q.pop();
if(loca<cn.loc)loca=cn.loc;
if(c%==)
{
temp.loc=loca+cn.dis;
if(maxi<temp.loc)maxi=temp.loc;
temp.dis=cn.dis;
q.push(temp);
}
}
printf("%d\n",maxi>loca?maxi:loca);
}
}
Stones 优先队列的更多相关文章
- E - Stones 优先队列
来源1896 Because of the wrong status of the bicycle, Sempr begin to walk east to west every morning an ...
- Hdu1896 Stones(优先队列) 2017-01-17 13:07 40人阅读 评论(0) 收藏
Stones Time Limit : 5000/3000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submis ...
- HDU 1896 Stones (优先队列)
Problem Description Because of the wrong status of the bicycle, Sempr begin to walk east to west eve ...
- HDU 1896 Stones --优先队列+搜索
一直向前搜..做法有点像模拟.但是要用到出队入队,有点像搜索. 代码: #include <iostream> #include <cstdio> #include <c ...
- Stones(优先队列)
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- HDU 1896:Stones(优先队列)
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) Total Sub ...
- hdoj 1896 Stones【优先队列】
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
- HDU 1896 Stones(优先队列)
还是优先队列 #include<iostream> #include<cstdio> #include<cstring> #include<queue> ...
- HDU 1896 Stones (优先队列)
Stones Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Subm ...
随机推荐
- 解决SVN图标不显示问题
Windows最多只允许15个覆盖图标,它自己又用了几个,结果给用户用的就11个左右了,如果你安装了其他网盘,那可用的就更少了. 解决方法: 1.在运行里输入regedit进入注册表 2.依次打开HK ...
- spring boot: 中文显示乱码,在applicationContext里面配置
spring boot: 中文显示乱码,在applicationContext里面配置 applicationContext.properties ########################## ...
- 【异常】Application failed to start due to an exception org.springframework.beans.factory.BeanCurrentlyInCreationException
一. 异常信息: 2018-05-17 18:03:22.224 -DEBUG [ restartedMain] o.s.b.d.LoggingFailureAnalysisReporter ...
- SQL Server日志清空方法
1.清空日志:DUMP TRANSACTION databasename WITH NO_LOG 2.截断事务日志:BACKUP LOG databasename WITH ...
- SQL Server数据库 优化查询速度
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 ...
- 在EO中对数据的重复性进行验证
只有在数据提交到EO中的时候才会执行set方法进行验证. 如果想要实现实时验证,可以在输入参数的地方添加事件,但是无需为此事件创建方法. 我的理解: 1.我们在页面上对内容进行修改的时候,OAF框架仅 ...
- OC MRC之autorelease问题(代码分析)
// // main.m // 08-autorelease // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. All ...
- 使用GAN 进行异常检测——anoGAN,TODO,待用于安全分析实验
先说实验成功的代码: git clone https://github.com/tkwoo/anogan-keras.git mkdir weights python main.py --mode t ...
- c中gets函数使用可能导致缓冲区溢出
头文件:#include <stdio.h> gets()函数用于从缓冲区中读取字符串,其原型如下: char *gets(char *string); gets()函数从流中读取字 ...
- javaScript面向对象是什么?(一)
js就是个面向对象语言,一切皆对象 一.什么是面向对象? 简单点,就这么说吧.生活中有一些个物品,譬如(哈哈,还想起个譬如)说一个iPhone,我们也不知道里面的工作原理吧?但是咱们会按按钮呀,用一俩 ...