[codechef July Challenge 2017] IPC Trainers
IPCTRAIN: 训练营教练
题目描述
本次印度编程训练营(Indian Programming Camp,IPC)共请到了 N 名教练。训练营的日
程安排有 M 天,每天最多上一节课。第 i 名教练在第 Di 天到达,直到训练营结束才离开。第 i 名
教练希望上 Ti 节课。要是少上了课,那么教练会感到扎心,每少上一节,扎心值就会加 Si。
作为主办方,你希望最小化所有教练的扎心值之和。
输入格式
输入的第一行包含一个整数 T,代表测试数据的组数。接下来是 T 组数据。
每组数据的第一行包含两个整数 N 和 D。接下来 N 行,每行包含三个整数 Di
, Ti
, Si。
输出格式
对于每组数据,输出一行,包含一个整数,代表扎心值之和的最小值。
数据范围和子任务
• 1 ≤ T ≤ 10
• 1 ≤ N, D, Si ≤ 105
• 1 ≤ Di
, Ti ≤ D
子任务 1(40 分):
• 1 leqN, D, Si ≤ 103
子任务 2(60 分):
• 无附加限制
样例数据
输入
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
样例解释
对于第一组数据,两名教练都想上两节课,分别在第 1 和第 2 天到达。可以安排第一名教练
上头两天的课程,第二名教练上最后一天的课程。这样第二名教练少上了一节课,扎心程度为
100。可以证明不存在更好的排课方案。
对于第二组数据,可以让所有教练都满意。
对于第三组数据,第一名教练第三天才到,却想上两节课。一天一节课,训练营就三天,所
以只能让他扎心。第二名教练第一天就到了,但只想上一节课,所以可以给他安排第 1 天或者第 2
天。但无论如何,总有一天没有课上。
这题还是比较水的。当然是一个贪心的想法。在某一天,很多人会要求上课。那怎么办?挑代价最大的呗,之后一直都挑代价最大的(且需要能取,没有取完),最后就能得到最优解。那么想到了这里,我们自然会有一个用堆维护的想法。每一天从堆里面挑出最大的一个,那么这个教授需要要求上课的天数少了一天。如果某个教授要求天数变为了0,那么他就没事了。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
];
long long ans;
struct per{
int arr,cla,unh;
bool operator < (const per &other) const {return arr<other.arr;}
}a[];
inline int read(){
; char ch=getchar();
') ch=getchar();
+ch-',ch=getchar();
return x;
}
void put(int x){
heap[++len]=x;
; son>>=)
]].unh&&a[heap[son]].unh>a[heap[son>>]].unh) swap(heap[son],heap[son>>]);
else break;
}
void get(){
heap[]=heap[len],heap[len]=,len--;
; (fa<<)<=n;){
int son;
]].unh>a[heap[fa<<|]].unh||(fa<<|)>n) son=fa<<; |;
if (a[heap[son]].unh>a[heap[fa]].unh) swap(heap[son],heap[fa]),fa=son;
else return;
}
}
int main(){
for (int Ts=read(); Ts; Ts--){
n=read(),D=read(),ans=len=;
memset(a,,sizeof a);
memset(heap,,sizeof heap);
; i<=n; i++) a[i].arr=read(),a[i].cla=read(),a[i].unh=read();
sort(a+,a++n);
;
; days<=D; days++){
while (j<=n&&a[j].arr==days) put(j),j++;
if (!len) continue;
]; a[x].cla--;
if (!a[x].cla) get();
}
; i<=n; i++) ans+=(long long)a[i].unh*a[i].cla;
printf("%lld\n",ans);
}
;
}
[codechef July Challenge 2017] IPC Trainers的更多相关文章
- [codechef July Challenge 2017] Calculator
CALC: 计算器题目描述大厨有一个计算器,计算器上有两个屏幕和两个按钮.初始时每个屏幕上显示的都是 0.每按一次第一个按钮,就会让第一个屏幕上显示的数字加 1,同时消耗 1 单位的能量.每按一次第二 ...
- [codechef July Challenge 2017] Chef and Sign Sequences
CHEFSIGN: 大厨与符号序列题目描述大厨昨天捡到了一个奇怪的字符串 s,这是一个仅包含‘<’.‘=’和‘>’三种比较符号的字符串.记字符串长度为 N,大厨想要在字符串的开头.结尾,和 ...
- [codechef July Challenge 2017] Pishty and tree
PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries
https://www.codechef.com/DEC17/problems/CHEFEXQ 题意: 位置i的数改为k 询问区间[1,i]内有多少个前缀的异或和为k 分块 sum[i][j] 表示第 ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays
https://www.codechef.com/DEC17/problems/CHEFHAM #include<cstdio> #include<cstring> #incl ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Total Diamonds
https://www.codechef.com/DEC17/problems/VK18 #include<cstdio> #include<iostream> #includ ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Penalty Shoot-out
https://www.codechef.com/DEC17/problems/CPLAY #include<cstdio> #include<algorithm> using ...
- CF&&CC百套计划2 CodeChef December Challenge 2017 Chef And his Cake
https://www.codechef.com/DEC17/problems/GIT01 #include<cstdio> #include<algorithm> using ...
- codechef January Challenge 2017 简要题解
https://www.codechef.com/JAN17 Cats and Dogs 签到题 #include<cstdio> int min(int a,int b){return ...
随机推荐
- NOIP2018退役祭
退役感受 在写下这个标题的时候,我的心情是复杂的,无非就是感觉像对一位将要赶往战场的士兵说:"你的战争已经输掉了." 退役了,没有什么好说的.无论再怎么抱怨这题出的真烂也无法改变了 ...
- python线程 有问题?
- 项目Alpha冲刺--4/10
项目Alpha冲刺--4/10 1.团队信息 团队名称:基于云的胜利冲锋队 成员信息 队员学号 队员姓名 个人博客地址 备注 221500201 孙文慈 https://www.cnblogs.com ...
- codeforces gym 101164 K Cutting 字符串hash
题意:给你两个字符串a,b,不区分大小写,将b分成三段,重新拼接,问是否能得到A: 思路:暴力枚举两个断点,然后check的时候需要字符串hash,O(1)复杂度N*N: 题目链接:传送门 #prag ...
- 字符串函数 mysql 和sqlserver 中对于字符串的常用函数和区别
1. 对于字符串大小写的统一 mysql和sqlserver中都有同名函数lower()和upper(),但是mysql中还有另外一对函数,达到同样的目的,lcase()和ucase(),也就是英文中 ...
- async、await在ASP.NET[ MVC]中之线程死锁的故事
场景重构 public ActionResult Index(string ucode) { string userInfo = GetUserInfo(ucode).Result; ViewData ...
- 有了art-template,如有神助
<div class="form-group col-lg-12"> <label class="control-label col-lg-3 text ...
- java+selenium的helloworld
在学校上测试课程,接触到自动化管理工具,在加上助教工作需要改作业,所以想着学下selenium这一强大的web自动化工具. 1.lenium官网:http://www.seleniumhq.org/ ...
- .NET Core 管道
从用户发请求到服务器响应返回数据 请求从 Request进去 先经过 Middleware(中间件) 然后经过AuthoriationFilters授权验证(token验证和 多租户验证) 在经 ...
- python3+虹软2.0 离线人脸识别 demo
python3+虹软2.0的所有功能整合测试完成,并对虹软所有功能进行了封装,现提供demo主要功能,1.人脸识别2.人脸特征提取3.特征比对4.特征数据存储与比对其他特征没有添加 虹软SDK下载戳这 ...