A.孤独的解锁者
显然是让最多的传送门被使用,那么考虑网络流
源点向入点向 (f_i),出点向汇点连 (f_i),有传送门的边相邻连一下就行了
直接冲最大流不加当前弧优化过掉了,但是考场把向汇点的边的流量写错了,就少了 (100)
B.闪耀的灾星
考虑一种求凸包面积的做法:边上的点和原点求叉积
那么题目转化为每个边出现的概率乘在右边的点都不存在的概率
钦定一个出点之后把点按照连边的极角排一下,那么在一侧的点极角序必然相邻,使用单调指针扫一下
实现十分见仁见智,注意极角是 atan2(y,x)
,另外处理三点共线的情况
可以使用线段树来维护 (1-p_i) 的乘积来避免出现 (0) 的情况
C.奇怪的数列
发现 (k) 很小,那么使用超级钢琴的做法用优先队列维护所有情况
用主席树直接求区间和,那么需要支持区间赋值,用标记永久化不难写出来
维护区间 (max),每次弹出的元素位置线段树上二分得到之后赋个 (-inf) 就行了