jzoj3928【NOIP2014模拟11.6】射击(贪心)
来源:互联网 发布:博实股份人工智能 编辑:程序博客网 时间:2024/06/04 23:56
3928. 【NOIP2014模拟11.6】射击
Description
有问题,找副连,无聊的时候当然也可以找他啦。小W找到了他的叔叔——东厂厂长——宇宙超级无敌老WS yy。他们叔侄两个商量之后决定用弹弓打破社区里的一些窗户,但是弹弓每秒只能彻底打破一扇窗户。而且如果某户窗户的主人回来了的话,他们就不能进行破坏了(不然会死得很惨的)。因为有的人装的玻璃好,有的人装的玻璃差,有的人装的玻璃高,有的人装的玻璃矮,所以你不能要求他们叔侄两个打破不同的窗户获得的快乐值必须相同。现在他们想知道在能活着的情况下能够获得的最大快乐值。
Input
第一行一个正整数n,表示共有n个窗户。
接下来n行,每行两个整数,第一个为窗子的主人回来的时刻(秒),第二个为破坏该窗户所能获得的快乐值。
Output
最大的快乐值。
分析:按快乐值降序排序,把当前值放在左边最近的一个时刻,由于时刻很大,所以要把每个时刻%10000000。
代码
#include <cstdio>#include <algorithm>#define maxn 300000using namespace std;struct arr{ int t,x;}a[maxn];int n,b[10000000];int mcmp(arr p,arr q){ return p.x>q.x;}int main(){ scanf("%d",&n); int k=0; long long ans=0; for (int i=1;i<=n;i++) scanf("%d%d",&a[i].t,&a[i].x); sort(a+1,a+n+1,mcmp); for (int i=1;i<=n;i++) { a[i].t%=1000000; if (a[i].t==a[i-1].t) k--; else k=a[i].t-1; while (k>=0&&b[k]>0) k--; if (a[i].x>0&&k>=0) ans+=a[i].x; if (a[i].x>0&&k>=0) b[k]=a[i].x; } printf("%lld",ans); }
阅读全文
0 0
- jzoj3928【NOIP2014模拟11.6】射击(贪心)
- 【NOIP2014模拟11.6】射击
- 3928. 【NOIP2014模拟11.6】射击
- jzoj. 3928. 【NOIP2014模拟11.6】射击
- JZOJ 3928. 【NOIP2014模拟11.6】射击
- 3928. 【NOIP2014模拟11.6】射击 (Standard IO)
- jzoj3929【NOIP2014模拟11.6】创世纪(图论,bfs,贪心)
- 【NOIP2014模拟11.6】创世纪
- 3929. 【NOIP2014模拟11.6】创世纪
- noip2014 螺旋矩阵 (模拟)
- jzoj. 3929. 【NOIP2014模拟11.6】创世纪
- JZOJ 3927. 【NOIP2014模拟11.6】可见点数
- JZOJ 3929. 【NOIP2014模拟11.6】创世纪
- 3927. 【NOIP2014模拟11.6】可见点数
- 3929. 【NOIP2014模拟11.6】创世纪 (Standard IO)
- noip2014 无线网路发射器选址 (模拟)
- [NOIP2014][vijos1913]螺旋矩阵(模拟)
- NOIP2014普及组--螺旋矩阵(模拟)
- android_手势滑动+外形支援
- 初次见面python
- 判断字符串只有数字
- 2017.7.10 学习笔记 js基础
- Trie树
- jzoj3928【NOIP2014模拟11.6】射击(贪心)
- 动态申请权限
- poi.jar包学习笔记
- 处理乱码及通过Struts标签显示数据
- 173链表插入排序
- 递归相加
- hdu1022Train Problem I(栈的简单应用)
- CaysnPrinter
- fopen,fseek,fread,fclose