六省联考2017 题解

day1

T1 期末考试

题意

(n) 位同学,每位同学都参加了全部的 (m) 门课程的期末考试,都在焦急的等待成绩的公布。

(i) 位同学希望在第 (t_i) 天或之前得知所有课程的成绩。如果在第 (t_i) 天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生 (C) 不愉快度。

对于第 (i) 门课程,按照原本的计划,会在第 (b_i) 天公布成绩。

有如下两种操作可以调整公布成绩的时间:

将负责课程 (X) 的部分老师调整到课程 (Y),调整之后公布课程 (X) 成绩的时间推迟一天,公布课程 (Y) 成绩的时间提前一天;每次操作产生 (A) 不愉快度。
增加一部分老师负责学科 (Z),这将导致学科 (Z) 的出成绩时间提前一天;每次操作产生 (B) 不愉快度。

上面两种操作中的参数 (X,Y,Z) 均可任意指定,每种操作均可以执行多次,每次执行时都可以重新指定参数。

现在希望你通过合理的操作,使得最后总的不愉快度之和最小,输出最小的不愉快度之和即可。

样例输入与输出

input

100 100 2
4 5
5 1 2 3
1 1 2 3 3

output

6

题解

十分容易发现,假若最后结束的课程的结束日期确定,那么学生等待所产生的代价是确定的,且可以O(1)计算

那么,枚举该结束日期,我们只要能够O(log)地计算出使得所有课程均在这一天及其之前结束所需要的代价就可以了

这同样并不困难。考虑两种操作,发现:如果 (A > B) ,那么,第一种操作完全不需要,只用第二种操作,代价很好算

假如 (A < B) ,那么两种操作显然优先上第一种,我们可以快速地计算出最多使用多少次第一种操作,代价同样很好算

那么,这道题就完美地解决了 φ(≧ω≦*)♪

原文地址:https://www.cnblogs.com/nflslzt/p/8724447.html