题目大意:
n个人,每人论文字数(w_i)在区间([L_i, R_i])上,每人成绩为(n-K_i),(K_i)为字数大于自己的人数,要求在每人成绩不低于自己最优情况能得到的成绩下尽量减少(sum_{i=1}^{n} w_i)。
思路:
注意对题目中(K_i)的理解
The grade of the i-th student (g_i) is (n-K_i),(K_i) is the number of (j in [1, n]) satisfies that (w_j > w_i).
"the number of……satisfies that……"应译为满足……情况的数量。
我们可以“模拟”减轻内卷的这个过程。
假定所有人都在卷,每人论文字数就都为(R_i),我们以(R_i)为第一关键词从小到大排序,就可以得到每个人最优情况下能得到的成绩。
此时要减轻内卷,同时不低于能拿到的最优成绩,则以(L_i)为第二关键词从大到小排序,即可保证原来的排名,同时尽量减小(w_i)。
[L1---------R1]
[L2----R2]
当(R1==R2)时,为了不改变原来的排名,需要(L1==L2)。
Code:
n = int(input())
stu = []
for i in range(n):
a, b = map(int, input().split())
stu.append((a, b))
stu.sort(key=lambda x: (x[1], -x[0]))
last = 0
ans = 0
for i in range(n):
last = max(last, stu[i][0])
ans += last
print(ans)