P4644 [USACO05DEC] Cleaning Shifts S
P4644 [USACO05DEC] Cleaning Shifts S
题目描述
约翰的奶牛们从小娇生惯养,她们无法容忍牛棚里的任何脏东西。约翰发现,如果要使这群有洁癖的奶牛满意,他不得不雇佣她们中的一些来清扫牛棚,约翰的奶牛中有 $ N(1 \leq N \leq 10000) $ 头愿意通过清扫牛棚来挣一些零花钱。
由于在某个时段中奶牛们会在牛棚里随时随地地乱扔垃圾,自然地,她们要求在这段时间里,无论什么时候至少要有一头奶牛正在打扫。需要打扫的时段从某一天的第 $ M $ 秒开始,到第 $ E $ 秒结束 $ (0 \leq M \leq E \leq 86399) $。注意这里的秒是指时间段而不是时间点,也就是说,每天需要打扫的总时间是 $ E-M+1 $ 秒。
约翰已经从每头牛那里得到了她们愿意接受的工作计划:对于某一头牛,她每天都愿意在笫 $ T_1 \ldots T_2 $ 秒的时间段内工作 $ (M \leq T_1 \leq T_2 \leq E) $ ,所要求的报酬是 $ S $ 美元 $ (0 \leq S \leq 500000) $。与需打扫时段的描述一样,如果一头奶牛愿意工作的时段是每天的第 $ 10 \ldots 20 $ 秒,那她总共工作的时间是 $ 11 $ 秒,而不是 $ 10 $ 秒。
约翰一旦决定雇佣某一头奶牛,就必须付给她全额的工资,而不能只让她工作一段时间,然后再按这段时间在她愿意工作的总时间中所占的百分比来决定她的工资。现在请你帮约翰决定该雇佣哪些奶牛以保持牛棚的清洁,当然,在能让奶牛们满意的前提下,约翰希望使总花费尽量小。
输入格式
第 $ 1 $ 行: $ 3 $ 个正整数 $ N,M,E $ 。
第 $ 2 $ 到 $ N+1 $ 行:第 $ i+1 $ 行给出了编号为 $ i $ 的奶牛的工作计划,即 $ 3 $ 个正整数 $ T_1,T_2,S $ 。
输出格式
输出一个整数,表示约翰需要为牛棚清理工作支付的最少费用。如果清理工作不可能完成,那么输出 $ -1 $ 。
输入输出样例 #1
输入 #1
3 0 4
0 2 3
3 4 2
0 0 1
输出 #1
5
说明/提示
约翰有 $ 3 $ 头牛,牛棚在第 $ 0 $ 秒到第 $ 4 $ 秒之间需要打扫。 约翰雇佣前两头牛清扫牛棚,可以只花 $ 5 $ 美元就完成一整天的清扫。
思路
这道题出现了求最值,首先考虑dp,然后发现似乎状态是可以定义的。
不管了,直接设 \(f_i\) 指覆盖了 \([1,i]\) 秒的方案中最小花费,那么转移直接得:
那么这里显然是需要对于牛按照右端点进行排序的。
但是这样是 \(O(N^2)\) 的做法,肯定爆炸,所以考虑优化。
观察式子发现,这其实是一个区间求最小值的式子,那么当然可以维护一棵线段树进行优化。
时间复杂度 \(O(N\log_2N)\)。

浙公网安备 33010602011771号