[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 ...
随机推荐
- HDU 5236 Article(概率DP)
http://acm.hdu.edu.cn/showproblem.php?pid=5236 题意:现在有人要在文本编辑器中输入n个字符,然而这个编辑器有点问题. 在i+0.1s(i>=0)的时 ...
- 清除memcached缓存
telnet localhost 11211 flush_all 最后要一定要关闭dos窗体,不然会导致memcached写值返回ture,但是实际上并没有写入值
- Codeforces 769D k-Интересные пары чисел
题目链接:http://codeforces.com/contest/769/problem/D 搜索题 考虑这些数的值域较小,直接${O(2^{k})}$次方枚举每个数字二进制位上是否改变,剪枝一下 ...
- 使用Rancher的RKE部署Kubernetes要点
简要说明: RKE (Rancher Kubernetes Engine)是RancherLabs提供的一个工具,可以在裸机.虚拟机.公私有云上快速安装Kubernetes集群.整个集群的部署只需要一 ...
- HTML5语义化
转载自:https://www.cnblogs.com/fliu/articles/5244866.html 1.什么是HTML语义化? 用合理.正确的标签来展示内容,比如h1~h6定义标题,便于开发 ...
- [Android] for ArcFace Demo
虹软人脸识别引擎Android的Demo演示,可以直接下载使用 下载地址 https://github.com/asdfqwrasdf/ArcFaceDemo 工程如何使用? 1.下载代码: git ...
- 关于datatables自适应以及自定义列宽度的总结
table-layout:fixed;可以自定义列的宽度 <div id="bizhi" style="width:100%;height: 85%;overflo ...
- DAY4 if、while和for
一.if 判断 语法一: if 条件: # 以下是上一条if 的子代码块 print(子代码1) print(子代码2) print(子代码3) if 运行完之后会执行代码下方 上一缩进级 的代码块 ...
- Debug记录(1)
今天下午在给nRF52832写程序时,莫名遇到了这个错误 错误id是一个很奇怪的数. 原代码如下: static void timers_init(void) { uint32_t timer_err ...
- AtCoder Grand Contest 025 B - RGB Coloring
B - RGB Coloring 求ax + by = k (0<=x<=n && 0<=y<=n)的方案数,最后乘上C(n, x)*C(n,y) 代码: #i ...