NYOJ 1107 最高的奖励(贪心+优先队列)
最高的奖励
时间限制:1000 ms | 内存限制:65535 KB难度:3
- 描述
请问:挖掘机技术哪家强?AC了告诉你!
给你N(N<=3*10^4)个任务,每个任务有一个截止完成时间t(1=<t<=10^9)和完成该任务的奖励v(1=<v<=10^9),每个任务要花一天完成,问最多能获得多少奖励?
- 输入
-
多组 测试数据。第一行一个数N,表示任务总数。接下来N行,每行两个数t和v,如上所述。
- 输出
-
对于每组数据输出最高的奖励。
- 样例输入
-
7
4 20
2 60
4 70
3 40
1 30
4 50
6 10 - 样例输出
-
230
这道题刚开始贪心没有用优先队列,是按照价值来的,但是感觉不对. 最后才知道按照天数来进行贪心.
代码如下:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <queue>
#include <algorithm> using namespace std;
const int N = ;
bool vis[N];
struct Node{
int day, value;
friend bool operator < (const Node a, const Node b)
{
return a.value > b.value;//value小的优先级高
}
}; bool cmp(const Node a, const Node b)//二级排序, 先按照天数来排,天数小的在前,相同天数的情况下再按照奖励大小来排,奖励大的在前
{
if (a.day != b.day)
return a.day < b.day;
return a.value > b.value;
}
int n;
Node node[N];
int main()
{
while (~scanf("%d", &n) && n)
{
for (int i = ; i < n; i++)
{
scanf("%d %d", &node[i].day, &node[i].value); }
sort(node, node + n, cmp);
priority_queue<Node> Q;
memset(vis, false, sizeof(vis));
for (int i = ; i < n; i++)
{
if (!vis[node[i].day])//如果这一天没有其它任务占有
{
vis[node[i].day] = true;
Q.push(node[i]);
}
else
{
if (Q.size() < node[i].day)//如果这一天前面有空闲的天数
Q.push(node[i]);
else
{
Node tmp = Q.top();//将它与最小值比较,如果大于添加到队列中的最小值,就要替换
if (tmp.value < node[i].value)
{
Q.push(node[i]);
Q.pop();
}
}
}
}
long long ans = ;
while (!Q.empty())
{
Node tmp = Q.top();
Q.pop();
ans += tmp.value;
}
cout << ans << endl;
} return ;
}
NYOJ 1107 最高的奖励(贪心+优先队列)的更多相关文章
- 51nod 1163 最高的奖励(贪心+优先队列)
题目链接:51nod 1163 最高的奖励 看着这题我立马就想到昨天也做了一道贪心加优先队列的题了奥. 按任务最晚结束时间从小到大排序,依次选择任务,如果该任务最晚结束时间比当前时间点晚,则将该任务的 ...
- hihoCoder 1309:任务分配 贪心 优先队列
#1309 : 任务分配 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定 N 项任务的起至时间( S1, E1 ), ( S2, E2 ), ..., ( SN, ...
- UVA 11134 - Fabled Rooks(贪心+优先队列)
We would like to place n rooks, 1 ≤ n ≤ 5000, on a n×n board subject to the following restrict ...
- 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 ...
- HDU 6438 网络赛 Buy and Resell(贪心 + 优先队列)题解
思路:维护一个递增队列,如果当天的w比队首大,那么我们给收益增加 w - q.top(),这里的意思可以理解为w对总收益的贡献而不是真正获利的具体数额,这样我们就能求出最大收益.注意一下,如果w对收益 ...
- 贪心+优先队列 HDOJ 5360 Hiking
题目传送门 /* 题意:求邀请顺序使得去爬山的人最多,每个人有去的条件 贪心+优先队列:首先按照l和r从小到大排序,每一次将当前人数相同的被邀请者入队,那么只要能当前人数比最多人数条件小,该人能 被邀 ...
- [POJ1456]Supermarket(贪心 + 优先队列 || 并查集)
传送门 1.贪心 + 优先队列 按照时间排序从前往后 很简单不多说 ——代码 #include <queue> #include <cstdio> #include <i ...
- Painting The Fence(贪心+优先队列)
Painting The Fence(贪心+优先队列) 题目大意:给 m 种数字,一共 n 个,从前往后填,相同的数字最多 k 个在一起,输出构造方案,没有则输出"-1". 解题思 ...
- CF140C New Year Snowmen(贪心+优先队列)
CF140C 贪心+优先队列 贪心策略:每次取出数量最多的三种球,合成一个答案,再把雪球数都-1再插回去,只要还剩下三种雪球就可以不断地合成 雪球数用优先队列维护 #include <bits/ ...
随机推荐
- 解决m2eclipse之Unable to update index for central |
maven 不能更新,真烦人,转载他人的 maven是个好东西,eclipse上的maven插件m2eclipse也非常方便,但是最近这个东西经常无法连接到maven index的更新网站,然后ecl ...
- eclipse问题解决(maven插件link方式安装失败)
一.link方式安装eclipse的一款插件:maven (附:若不熟悉link方式,则进入此处:link方式安装eclipse插件) 其间,只弹出警告,大概意思是:部分内容,未经授权,谨慎使 ...
- [UOJ Round#4 A] [#51] 元旦三侠的游戏 【容斥 + 递推】
题目链接:UOJ - 51 据说这题与 CF 39E 类似. 题目分析 一看题目描述,啊,博弈论,不会!等待爆零吧... 这时,XCJ神犇拯救了我,他说,这题可以直接搜啊. 注意!是用记忆化搜索,状态 ...
- Top WAF
http://blog.csdn.net/force_eagle/article/details/9396087
- Apache HTTPServer与JBoss/Tomcat的整合与请求分发
http://www.blogjava.net/supercrsky/archive/2008/12/24/248143.html
- Maven实战二
简述: 现需要 在Eclipse中配置Maven插件 安装maven应用,配置Maven环境变量 建立Maven管理的工程 用Maven导入Gson包, 编写简易Json输出程序 步骤: 1. 首先到 ...
- MySQL默认INFORMATION_SCHEMA,MySQL,TEST三个数据库用途
本文简要说明了MySQL数据库安装好后自带的INFORMATION_SCHEMA,MySQL,TEST三个数据库的用途. 第一个数据库INFORMATION_SCHEMA:提供了访问数据库元数据的方式 ...
- MFC中对话框的工具栏的使用
1.新建一个MFC项目:在资源视图中新建Toolbar资源: 2.编辑状态栏: 3.在***Dlg.h文件中添加CToolBar类型或其派生类型的一个变量如:(CdlgToolBar myToolBa ...
- shell command使用技巧
1窗口可以merge 2.可以通过 control+t打开窗口
- PHP去除空白字符
例子1: <?php $var = " This is a beautiful day!"; // 删除字符串中的所有空白字符(不包括全角空格) $var1 = preg_r ...
