1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚

Time Limit: 5 Sec  Memory Limit: 64 MB
Submit: 941  Solved: 403
[Submit][Status][Discuss]

Description

Farmer John's cows, pampered since birth, have reached new heights of fastidiousness. They now require their barn to be immaculate. Farmer John, the most obliging of farmers, has no choice but hire some of the cows to clean the barn. Farmer John has N (1 <= N <= 10,000) cows who are willing to do some cleaning. Because dust falls continuously, the cows require that the farm be continuously cleaned during the workday, which runs from second number M to second number E during the day (0 <= M <= E <= 86,399). Note that the total number of seconds during which cleaning is to take place is E-M+1. During any given second M..E, at least one cow must be cleaning. Each cow has submitted a job application indicating her willingness to work during a certain interval T1..T2 (where M <= T1 <= T2 <= E) for a certain salary of S (where 0 <= S <= 500,000). Note that a cow who indicated the interval 10..20 would work for 11 seconds, not 10. Farmer John must either accept or reject each individual application; he may NOT ask a cow to work only a fraction of the time it indicated and receive a corresponding fraction of the salary. Find a schedule in which every second of the workday is covered by at least one cow and which minimizes the total salary that goes to the cows.

    约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西.约翰发现,如果要使这群有洁癖的奶牛满意,他不得不雇佣她们中的一些来清扫牛棚, 约翰的奶牛中有N(1≤N≤10000)头愿意通过清扫牛棚来挣一些零花钱.由于在某个时段中奶牛们会在牛棚里随时随地地乱扔垃圾,自然地,她们要求在这段时间里,无论什么时候至少要有一头奶牛正在打扫.需要打扫的时段从某一天的第M秒开始,到第E秒结束f0≤M≤E≤86399).注意这里的秒是指时间段而不是时间点,也就是说,每天需要打扫的总时间是E-M+I秒. 约翰已经从每头牛那里得到了她们愿意接受的工作计划:对于某一头牛,她每天都愿意在笫Ti,.T2秒的时间段内工作(M≤Ti≤马≤E),所要求的报酬是S美元(0≤S≤500000).与需打扫时段的描述一样,如果一头奶牛愿意工作的时段是每天的第10_20秒,那她总共工作的时间是11秒,而不是10秒.约翰一旦决定雇佣某一头奶牛,就必须付给她全额的工资,而不能只让她工作一段时间,然后再按这段时间在她愿意工作的总时间中所占的百分比来决定她的工资.现在请你帮约翰决定该雇佣哪些奶牛以保持牛棚的清洁,当然,在能让奶牛们满意的前提下,约翰希望使总花费尽量小.

Input

* Line 1: Three space-separated integers: N, M, and E. * Lines 2..N+1: Line i+1 describes cow i's schedule with three space-separated integers: T1, T2, and S.

    第1行:3个正整数N,M,E,用空格隔开.
    第2到N+1行:第i+l行给出了编号为i的奶牛的工作计划,即3个用空格隔开的正整数Ti,T2,S.

Output

* Line 1: a single integer that is either the minimum total salary to get the barn cleaned or else -1 if it is impossible to clean the barn.

    输出一个整数,表示约翰需要为牛棚清理工作支付的最少费用.如果清理工作不可能完成,
那么输出-1.

Sample Input

3 0 4 //三头牛,要打扫从0到4号stall
0 2 3 //一号牛,从0号stall打扫到2号,工资为3
3 4 2
0 0 1

Sample Output

5

这本来应该是个线段树+DP的题,我只用DP暴力居然过了。。

dp[i]表示前i秒都有牛打扫的最小花费

dp[i] = min(dp[j]+s[i].cost, dp[i])  其中s[i].y==i,s[i].x-1<=j<=i-1

其中s[i].y为第i头牛的工作结束时间,s[i].x为开始时间,按s[i].y排序

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct Cow
{int cost;int x, y;bool operator < (const Cow &b) const{if(y<b.y)return 1;return 0;}
}Cow;
Cow s[10005];
LL dp[100005];
int main(void)
{int e, m, n, i, j, p;scanf("%d%d%d", &n, &e, &m);m -= --e;for(i=1;i<=n;i++){scanf("%d%d%d", &s[i].x, &s[i].y, &s[i].cost);s[i].x -= e, s[i].y -= e;}sort(s+1, s+n+1);memset(dp, 62, sizeof(dp));dp[0] = 0;p = 1;for(i=1;i<=m;i++){while(s[p].y==i){for(j=s[p].x-1;j<=i-1;j++)dp[i] = min(dp[j]+s[p].cost, dp[i]);p++;}}if(dp[m]<=(LL)1e12)printf("%lld\n", dp[m]);elseprintf("-1\n");return 0;
}

bzoj 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(DP)相关推荐

  1. 1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 DP + 线段树 / SPFA

    1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 975  Solved ...

  2. 【BZOJ】1672: [Usaco2005 Dec]Cleaning Shifts 清理牛棚(dp/线段树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1672 dp很好想,但是是n^2的..但是可以水过..(5s啊..) 按左端点排序后 f[i]表示取第 ...

  3. poj 2376 bzoj 3389: [Usaco2004 Dec]Cleaning Shifts安排值班(贪心)

    3389: [Usaco2004 Dec]Cleaning Shifts安排值班 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 462  Solved ...

  4. bzoj 1673: [Usaco2005 Dec]Scales 天平(DFS)

    1673: [Usaco2005 Dec]Scales 天平 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 695  Solved: 253 [Subm ...

  5. bzoj 1671: [Usaco2005 Dec]Knights of Ni 骑士(BFS)

    1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 416  Solved: 26 ...

  6. bzoj 1731 [Usaco2005 dec]Layout 排队布局——差分约束

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1731 对差分约束理解更深.还发现美妙博客:http://www.cppblog.com/me ...

  7. bzoj3389:[Usaco2004 Dec]Cleaning Shifts安排值班

    思路:可以贪心,也可以最短路. 贪心写法:因为在保证合法的前提下,我们选择的区间一定要右端点尽量靠后才行,于是我们每次就选择一个合法的并且右端点最靠后的区间就好了(如果没有合法的输出-1即可).时间复 ...

  8. bzoj 1731: [Usaco2005 dec]Layout 排队布局【差分约束】

    差分约束裸题,用了比较蠢的方法,先dfs_spfa判负环,再bfs_spfa跑最短路 注意到"奶牛排在队伍中的顺序和它们的编号是相同的",所以\( d_i-d_{i-1}>= ...

  9. BZOJ 1673 [Usaco2005 Dec]Scales 天平:dfs 启发式搜索 A*搜索

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1673 题意: 有n个砝码(n <= 1000),重量为w[i]. 你要从中选择一些砝 ...

最新文章

  1. 2 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之MySql的搭建
  2. CentOS 7安装Redis服务
  3. VTK:vtkBillboardTextActor3D用法实战
  4. Java得到请求的IP地址
  5. asp.net 的页面几种传值方式
  6. AliOS Things 基于组件化思想的多bin特性
  7. [Python] 创建一个整数列表:range()
  8. mysql创建存储过程及遍历查询结果,mysql 用存储过程遍历结果集
  9. define定义的函数如何引用_3分钟短文:Laravel 编程中优雅地添加定义常量
  10. solidworks迈迪设计宝_机械入门|那些看起来很牛X的机械结构,是如何设计的?...
  11. 联想笔记本修复计算机还原系统失败,联想笔记本电脑重装系统不成功,联想笔记本系统恢复...
  12. 【电子商务突围物流瓶颈】南风窗商业杂志采访我的观点
  13. java 保存对象_Java将对象保存到文件中/从文件中读取对象
  14. 解决IOS浏览器或者微信浏览器播放audio音效第二次播放不全
  15. 20200415 计算机的基础之host配置
  16. 复试21天Day 21
  17. 视频通讯客服系统实现(附wins源码)
  18. 数学建模 之 ARCH模型和GARCH模型
  19. 记在2019,winter is coming
  20. java程序设计之炮打飞机

热门文章

  1. python和java的区别-三分钟看懂Python和Java的区别
  2. python工资一般多少p-5万的工资,用Python算一算少交多少税?
  3. python与excel-Python和Excel终于可以
  4. python自动化办公实例-python自动化测试实例解析
  5. python读音-Python怎么读
  6. 语音识别十年来发展的历程
  7. App开发定制的种类:企业需要开发哪种App?
  8. PUT与POST的相同点和不同点
  9. 封装echarts 柱状图和曲线
  10. LeetCode 583 两个字符串的删除操作