题目描述:

题目理解:

  Sempr从位置0往前走,一路上他会遇到石子,如果这颗石子是他遇到的第奇数颗石子,那么他就把石子往前扔出去,如果他遇到的是第偶数颗石子,他会把它留在原地。需要注意的是,Sempr前面扔出去的石子,会继续作为后续会遇到的石子。如果在一个位置上有多颗石子,那么选出扔的最远的那颗石子扔出去。

  比如说第一个测试案例:Sempr在位置1遇到了第一颗石子,他将石子扔到了1+5=6的位置上。Sempr继续往前走,在位置2上遇到第二颗石子,他将其留在原地,并且继续往前走。当Sempr走到位置6时,他遇到了第三颗石子(这颗石子是由位置1的第一颗石子扔到这儿的),他将这颗石子扔到了6+5=11的位置上,并继续往前走。当Sempr走到位置11时,他遇到第四颗石子,他将其留在原地。至此,该测试案例中的石子就扔完了。所以最终的结果为11。

这道题由于运用到了优先队列,并且在同一个位置有多颗石子时需要更改队列的优先级,所以自己去了解了一下关于优先级修改的相关操作。

C/C++对bool operator < (const p &a)const的认识:http://www.cnblogs.com/ECJTUACM-873284962/p/6771262.html

结构体内嵌比较函数:http://www.cnblogs.com/ZERO-/p/9347296.html

代码分析:

#include <iostream>
#include <queue>
#include <cstdio>
using namespace std;
struct stone
{
int d;
int w;
bool operator <(const stone &a)const//operator为C++里面的重载函数;括号中的const表示参数a对象不会被修改,最后的const表明调用函数对象不会被修改!
{
if(a.d==d)//如果石子的位置与队列中其他石子的位置一样
return a.w<w;//在优先队列中,排序方式与sort函数相反,即默认的排序方式是a.w>w,当前对象的w如果大于其他元素的w(即a.w),那么w的优先级更高
return a.d<d;//否则,位置靠前的优先级高
}
}z;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
priority_queue<stone>q;
int n;
scanf("%d",&n);
while(n--)
{
scanf("%d %d",&z.d,&z.w);
q.push(z);
}
int i=;
while(i)
{
if(i%==)//如果遇到的石头为第奇数颗,扔出去,并将该石子存入队列
{
z=q.top();
q.pop();
z.d+=z.w;
q.push(z);
if(q.size()==)//如果队列中只还剩下1个元素,取出来后退出。
{
printf("%d\n",q.top().d);
break;
}
}
else//如果遇到的石头为第偶数颗,不理它
{
q.pop();
}
i++;
}
}
return ; }

贪心+优先队列之更改优先级-hdu1896的更多相关文章

  1. hihoCoder 1309:任务分配 贪心 优先队列

    #1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN,  ...

  2. UVA 11134 - Fabled Rooks(贪心+优先队列)

    We would like to place  n  rooks, 1 ≤  n  ≤ 5000, on a  n×n  board subject to the following restrict ...

  3. C. Playlist Educational Codeforces Round 62 (Rated for Div. 2) 贪心+优先队列

    C. Playlist time limit per test 2 seconds memory limit per test 256 megabytes input standard input o ...

  4. HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解

    思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...

  5. 贪心+优先队列 HDOJ 5360 Hiking

    题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...

  6. [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)

    传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...

  7. Painting The Fence(贪心+优先队列)

    Painting The Fence(贪心+优先队列) 题目大意:给 m 种数字,一共 n 个,从前往后填,相同的数字最多 k 个在一起,输出构造方案,没有则输出"-1". 解题思 ...

  8. CF140C New Year Snowmen(贪心+优先队列)

    CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...

  9. NYOJ 1107 最高的奖励(贪心+优先队列)

    最高的奖励 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 请问:挖掘机技术哪家强?AC了告诉你! 给你N(N<=3*10^4)个任务,每个任务有一个截止完成时 ...

随机推荐

  1. better-scroll项目中遇到的问题

    1.在项目中发现个问题,用better-scroll实现的轮播图和页面滚动条俩个效果一起出现的时候,当鼠标或手指放在轮播图位置的时候,上下滚动的时候,页面滚动条不动 发现最新的版本就会出这个问题,就是 ...

  2. mysql·事务挂起

          当开启事务后,程序挂了而事务没有提交,那么会被锁住,报错:连接超时,但不影响查询. 下面操作需要权限     一.查询现在被占用的锁信息 select * from information ...

  3. JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?

    Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类, 并提供了良好的接口.        在 Java中,每个异常都是一个对象,它是 Throwable 类或其它子类的实例.当一个方法出 ...

  4. Confluence 6 后台中为站点添加应用导航

    Confluence 6 后台中为站点添加应用导航的连界面和方法. https://www.cwiki.us/display/CONFLUENCEWIKI/Configuring+the+Site+H ...

  5. 【linux】环境变量配置

    假设要添加环境变量 JAVA_HOME 1.先用自己的个人账号 vim /etc/profile 在文件末尾添加 export JAVA_HOME=/usr/java/jdk1..0_144 2. s ...

  6. bzoj 5418

    这是拓展crt的典型应用 在你开始做之前,我一定要告诉你一件事情:虽然这道题看着和拓展crt模板很像,但他俩是有巨大的区别的!不要直接把板子改吧改吧扔上去! 题目模型:求解模线性方程组 其中p1,p2 ...

  7. Python属性(@property)

    创建用于计算机的属性 在Python中,可以通过@property(装饰器)将一个方法转换为属性,从而实现用于计算的属性.将方法转换为属性后,可以直接通过方法名来访问方法,而不需要再添加一对小括号&q ...

  8. FFmpeg的一般流程

    FFMPeg一般流程: 1.av_register_all();//注册所有文件格式和编解码库 2.avformat_network_init();//打开网络视频流 3.av_open_input_ ...

  9. 控制台操作mysql常用命令

    总结: 1. 控制台链接mysql mysql -u lzpddd -pmypassword -h -D mydb -S /opt/mysql/data/mysql//mysql.sock 2.

  10. 理解并设计rest/restful风格接口

    网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信.这导致AP ...