XIX Open Cup named after E.V. Pankratiev. Grand Prix of Eurasia, Division 1.

A

签到。

C

源点向每个软件连边。把每个软件拆成对应版本数个点,每个软件向版本连边。把每个conflict也看成一个点。每个版本向它对应的conflict连边,conflict向汇点连边。没有在conflict里的版本直接向汇点连边。所有边的容量都是$1$,跑最大流即可。conflict的意思也就是这些点最多只能选一个,那么拆点并限制容量即可。

D

把每个点跟它有限制的点加入一个set,加边时用并查集维护,然后启发式合并两个set就行了。

E

签到。

H

这一看到一定是二分啊。然后T了一整场。

在eps到1e-7之后这种写法就很容易T了。

分数二分就用限定一下循环次数。

踩坑

I

题意就是有$n$条线段顺序加入,以及$n$个查询某个点在多少条线段上。

如果输入都是整数的话就是傻逼题。但是这个题输入都是实数,最多到小数点后六位。

把所有输入都乘以$1000000$,然后一个动态开点的线段树可以解决这个问题。

不过写法有点神奇,不用pushup,如果这个点进入了这个区间,那么这个区间的值就对答案有贡献,然后往下走就行了。

要用到llround函数。

J

堆里面存一下当前坐标,到这个地方turn的次数以及当前的MP数。用turn来做优先队列比较的参数。跑迪杰斯特拉就行了。

K

不想做。

猜你喜欢

转载自www.cnblogs.com/Mrzdtz220/p/11673090.html