51nod 1163-最高的奖励
来源:互联网 发布:孩子气的战争动作数据 编辑:程序博客网 时间:2024/05/29 14:04
题目链接:51nod 1163-最高的奖励
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。
解决方法是贪心法,首先耗时都是固定的1个单位时间,时间没有上限,但实际总耗时一定小于等于最晚结束的事件的结束时间,未保证和最大,不能简单根据结束时间先后来选取,应该根据权重来贪心。
具体规则就是从最晚结束时间开始往前,每次选出当前时间下所能选择的权重最大的事件,没有则跳过当前时间继续往前,这样就能保障结果最大了
代码:
#include<iostream>#include<climits>#include<vector>#include<algorithm>#include<queue>using namespace std;struct node{ int endtime; int value; bool operator < (node x){ if(value!=x.value)return value>x.value; else return endtime>x.endtime; }};vector<node> all;int main(){ node u; int n; cin>>n; int maxtime=-1; while(n--){ cin>>u.endtime>>u.value; all.push_back(u); if(u.endtime>maxtime)maxtime=u.endtime; } long long ans=0; sort(all.begin(),all.end()); //事先排序方便选取出合适的事件 while(maxtime>0){ for(vector<node>::iterator i=all.begin();i!=all.end();i++){ if(i->endtime>=maxtime){ ans+=i->value; i=all.erase(i); break; } } maxtime--; } cout<<ans;}
阅读全文
0 0
- 51NOD 1163 最高的奖励
- 51nod 1163 最高的奖励(贪心)
- 51nod 1163 最高的奖励
- 51nod-【1163 最高的奖励】
- 51nod 1163 最高的奖励【贪心】
- 51Nod 1163 最高的奖励
- 51nod-1163 最高的奖励(贪心)
- 51nod 1163 最高的奖励 贪心
- 51Nod 1163 最高的奖励 ( 贪心
- 51nod 1163 最高的奖励
- 水题:51Nod 1163-最高的奖励
- 51nod 1163 最高的奖励
- 51nod 1163 最高的奖励
- 51nod 1163 最高的奖励
- 51nod 1163 最高的奖励
- 1163 最高的奖励-51Nod
- 51nod 1163 最高的奖励(贪心)
- 51nod 1163 最高的奖励
- shiro框架之动态URL权限控制 十九
- shiro框架之无状态Web应用集成 二十
- Broadcasts
- 数据集整理,不断补充
- shiro框架之授予身份及身份切换 二十一
- 51nod 1163-最高的奖励
- 记录使用 LeanCloud 的两年
- shiro框架之集成验证码 二十二
- Ubuntu下shadowsocks配置说明
- 利用Django进行Web开发系列(一)
- 进程和线程
- shiro框架之多项目集中权限管理及分布式会话 二十三
- qt+python的Linux服务器日志显示
- App Widgets 应用程序小部件