17-比赛1 D - IPC Trainers (贪心 + 优先队列)
题目描述
本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练。训练营的日
程安排有 M 天,每天最多上一节课。第 i 名教练在第 Di 天到达,直到训练营结束才离开。第 i 名
教练希望上 Ti 节课。要是少上了课,那么教练会感到扎心,每少上一节,扎心值就会加 Si。
作为主办方,你希望最小化所有教练的扎心值之和。
数据范围
1 ≤ T ≤ 10
• 1 ≤ N, D, Si ≤ 1e5
• 1 ≤ Di
, Ti ≤ D
输入格式
输入的第一行包含一个整数 T,代表测试数据的组数。接下来是 T 组数据。
每组数据的第一行包含两个整数 N 和 M。接下来 N 行,每行包含三个整数 Di, Ti, Si。
输出格式
对于每组数据,输出一行,包含一个整数,代表扎心值之和的最小值。
样例输入
3
2 3
1 2 300
2 2 100
2 3
1 1 100
2 2 300
2 3
3 2 150
1 1 200
样例输出
100
0
150
=====================================================================================================================================
比赛时未做出的题目
学长的题解:
贪心的想每一天让扎心值最大的教练上课 ,所以需要一个数据结构支持查询最大值,插入元素,删除最大值。
优先队列priority_queue可以完美实现这些要求。
=====================================================================================================================================
代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + ;
struct Node{
int beg,day,s;
}node[N];
bool operator<(Node a,Node b){ //通过这个方法,自定义优先队列的顺序
return a.s < b.s;
}
priority_queue<Node> que;
bool cmp(Node a,Node b){
return a.beg < b.beg;
}
int main()
{
int T; scanf("%d",&T);
while(T--)
{
int n,D;
scanf("%d %d",&n,&D);
for(int i = ; i <= n; ++i) scanf("%d %d %d",&node[i].beg,&node[i].day,&node[i].s);
sort(node+,node+n+,cmp);
int now = ;
//从每一天开始,每一天优先让能在这一天上课的扎心值最高的教师上课
for(int i = ; i <= D; ++i){
//将能在第i天上课的教师加入优先队列
while(now <= n && node[now].beg == i) que.push(node[now]),++now;
//加入完毕之后,让扎心值最高的教师上这一天的课
if(!que.empty()){
Node temp;
temp = que.top();
que.pop();
--temp.day; //这位老师想要上的天数-1
if(temp.day) que.push(temp);
}
}
long long sum = ;
//遍历优先队列
while(!que.empty()) sum += (long long)que.top().day*que.top().s,que.pop();
printf("%lld\n",sum);
}
}
17-比赛1 D - IPC Trainers (贪心 + 优先队列)的更多相关文章
- 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/ ...
- 【BZOJ 1572】 1572: [Usaco2009 Open]工作安排Job(贪心+优先队列)
1572: [Usaco2009 Open]工作安排Job Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单 ...
随机推荐
- ATL
Normal COM.cpp #include "resource.h" // 主符号 #include "ATLCOM_i.h" #include " ...
- 算法练习-Palindrome Number
判断回文整数 来源 https://leetcode.com/problems/palindrome-number/ 要求 判断一个整数是不是回文数,尽量减少内存暂用. 思路 可能的情况: 负数的应当 ...
- 西门子 SINAMICS S120 Web server 用户名和默认密码
sinamics web server可以通过浏览器查看驱动器故障等信息,是一个比较方便的辅助工具. 1. 一般用户 SINAMICS 密码 无 2. 管理员 Administrator 密码 Adm ...
- April 11 2017 Week 15 Tuesday
Love is hard to get into, but harder to get out of. 相爱不易,相忘更难. The past are hurt, but I think we can ...
- 常用mysql系统参数参考
http://aaronsa.blog.51cto.com/5157083/1741481
- 虚连接 tcp
由TCP 建立的连接叫做虚连接(virtual connection),这是因为它们是由软件实现的,底层的系统并不对连接提供硬件或软件支持,只是两台机器上的TCP 软件模块通过交换消息来实现逻辑...
- linux客户端传输文件到Windows本地
1.rz/sz安装及使用方法 和 FileZilla 功能类似用于上传文件,上传速度比较慢适用比较小的文件 yum安装: $ sudo yum install lrzsz 打开SecureCRT ...
- 奇异值分解(SVD)原理及应用
一.奇异值与特征值基础知识: 特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法.两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征. ...
- theano中tensor的构造方法
import theano.tensor as T x = T.scalar('myvar') myvar = 256 print type(x),x,myvar 运行结果: <class 't ...
- ES6 初体验 —— gulp+Babel 搭建ES6环境
ES6已经火了好久了,我却一直没有在项目中尝试过使用ES6写代码,只是写过几个Demo,在大型项目中使用ES6这件事,我一直不太敢做.最近公司要求做一个小的H5活动专题,我想不如就在这个小项目中使用E ...