贪心+优先队列之更改优先级-hdu1896
题目描述:
题目理解:
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=1;while(i){if(i%2==1)//如果遇到的石头为第奇数颗,扔出去,并将该石子存入队列 {z=q.top();q.pop();z.d+=z.w;q.push(z);if(q.size()==1)//如果队列中只还剩下1个元素,取出来后退出。 {printf("%d\n",q.top().d);break;}}else//如果遇到的石头为第偶数颗,不理它 {q.pop();}i++;}}return 0;}
转载于:https://www.cnblogs.com/LJHAHA/p/10012776.html
贪心+优先队列之更改优先级-hdu1896相关推荐
- LA 4254 Processor 处理器 【二分 贪心 优先队列】
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=21663 二分: 最大值最小的问题通过二分来求解.对处理器速度进行 ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 1163 最高的奖励(贪心+优先队列)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励.在结束时间之前完成该任务,就可以获得对应的奖励.完成每一个任务所需的时间都是1个单位时间.有时候完成所有任务是不可能的,因为时间上可能会有冲突 ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 1 /* 2 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 3 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小, ...
- 贪心(优先队列) - New Year Snowmen - CodeForces - 140C
贪心(优先队列) - New Year Snowmen - CodeForces - 140C 题意: 给定一个长度为n的正整数序列a1,a2,...,an.给定一个长度为n的正整数序列a_1,a_2 ...
- CodeForces 140C New Year Snowmen (贪心+优先队列)
题意:n个数,选三个严格下降的数为一组,求最多能选多少组,并列出每组哪些数. 题解:贪心+优先队列 最多能选多少组,那么必须贪心数量多的. 例如:1 1 2 3 4 5 如果按照数的大小排序,只能贪到 ...
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
- 【BHOJ 女娲加农炮 |、||】贪心 | 优先队列 | 堆 | E
这次我们通过两道例题来总结一下优先队列的用法和实现: 目录: [BHOJ 1512]女娲加农炮 [BHOJ 1517]女娲加农炮II [BHOJ 1512]女娲加农炮 核心:贪心 + 优先队列 URL ...
- 设计软件调节CPU使用率及更改优先级
一.设计师有时需要同时打开不同的设计软件,但有些设计软件占用资源很高,像3Dmax渲染时会占用所有CPU资源基本做不了其它操作,用以下方法就可以调节CPU使用率. 1.以7800x6核12线程操作3D ...
最新文章
- 结合Apache和Tomcat实现集群和负载均衡
- 联合权值 NOIP2014 提高组 Day1 T2
- Java反斜线(\)路径与转义字符的小坑
- 从无到有到完善 - Teams抽奖机器人开发历程
- php scandir sftp,CentOS 下使用SFTP实现网站自动生成FTP账号,实现Chroot功能
- d06调试详细说明_PIC系列单片机配置字详细介绍(长期实践总结的压箱底资料)
- 求向量的垂线_高考数学填空题如何快速求直线关于直线对称的直线方程
- 什么是AJAX (转贴)
- c语言word类型的题库,可下载c语言上机题库word版
- fmd单片机c语言教程,ft62f08x_c语言 FMD单片机C语言列子程序 - 下载 - 搜珍网
- java dcm4che findscu实现workList通讯——客户端SCU
- iweboffice之word——常用属性的设置
- UE4 粒子特效基础学习 (03-制作上升光线特效)
- 使用windows内存-内存映射文件
- 日本房产泡沫的崩塌,虽然很长,希望80后仔细阅读
- iPad goodnotes 5 打开很慢“准备自己的资料库,获得更快体验”解决
- 什么是固态硬盘及其优缺点【转】
- 什么是CF , correlation filer ? 【无标题】
- ogm session_Hibernate OGM:降低进入NoSQL的障碍
- VAPS XT航空仪表开发第一节
热门文章
- 腾讯云对象存储 python_腾讯云对象存储(COS)服务的 API
- pcb二次钻孔_作为一名合格的PCB设计工程师,了解生产制造很重要
- javascript 时间类型 Date
- redis 缓存数据格式
- sqlalchemy like
- flask-sqlAlchemy 创建表
- 如何导出源文件_正骨室001期 | 如何避免色彩损失
- 基于KVM、Xen、OpenVZ等虚拟化技术的WEB在线管理工具
- windows + Linux 自定义模板配置 怎么使用自定义规范管理器
- Java基础学习总结(145)——Java SPI(Service Provider Interface)简介