2020 China Collegiate Programming Contest, Weihai Site

就是说,再来写一场

A - Golden Spirit

场A(-1)。

fjj写的,是个分讨题,具体细节我也不知道hhh没细想。

B - Labyrinth

场1A。

如果起点终点围城的矩形内没有黑洞,那就直接走。

否则一定存在一条最短路径使得经过黑洞四周的点,因此拿这些点分别做单源最短路即可。

效率: O ( 168 n m ) O(168nm) O(168nm)

一定要看到是 n m ≤ 200000 nm \le 200000 nm200000 ,不是 n , m ≤ 200000 n,m \le 200000 n,m200000

C - Rencontre

场A(-3)。

考虑如果已经选了三个点 x , y , z x,y,z x,y,z ,那么最小距离相当于 1 2 ( d i s ( x , y ) + d i s ( x , z ) + d i s ( y , z ) ) \frac{1}{2}(dis(x,y)+dis(x,z)+dis(y,z)) 21(dis(x,y)+dis(x,z)+dis(y,z))

因此设 f i , 0 / 1 / 2 f_{i,0/1/2} fi,0/1/2 表示 i i i 点到 0 / 1 / 2 0/1/2 0/1/2 集合内的点的距离和,换根 dp \text{dp} dp 即可。效率: O ( n ) O(n) O(n)

要边除边加,否则会爆 long long \text{long long} long long

D - ABC Conjecture

场1A。

猜性质,只要判断 c c c 是不是若干不同质数乘积即可。是就是 no \text{no} no ,否则就是 yes \text{yes} yes

因此先判掉 1 e 6 1e6 1e6 内的质数,然后把剩下的数开方判断即可。

效率: O ( 1 e 6 T ) O(1e6T) O(1e6T)

E - So Many Possibilities…

场未A。

考虑最后答案的形式,假设被砍死的人为 j 1 , j 2 , . . . , j k j_1,j_2,...,j_k j1,j2,...,jk ,然后在第 i 1 , i 2 , . . . , i k i_1,i_2,...,i_k i1,i2,...,ik 时刻被砍死,那么就是 C i 1 − 1 a j 1 − 1 1 n i 1 C i 2 − i 1 − 1 a j 2 − 1 1 ( n − 1 ) i 2 − i 1 . . . C i k − i k − 1 − 1 a j k − 1 1 ( n − k + 1 ) i k − i k − 1 × C_{i_1-1}^{a_{j_1}-1}\frac{1}{n^{i_1}}C_{i2-i1-1}^{a_{j_2}-1}\frac{1}{(n-1)^{i_2-i_1}}...C_{i_k-i_{k-1}-1}^{a_{j_k}-1}\frac{1}{(n-k+1)^{i_k-i_{k-1}}}\times Ci11aj11ni11Ci2i11aj21(n1)i2i11...Cikik11ajk1(nk+1)ikik11×剩下的砍 m − ∑ a j l m-\sum a_{j_l} majl 砍不死的方案数 × k \times k ×k

于是分别做 dp \text{dp} dp f i , S f_{i,S} fi,S 表示第 i i i 轮,存活状态为 S S S 的概率,转移就考虑砍不砍死就好了, g i , S g_{i,S} gi,S 表示第 i i i 轮,存活状态为 S S S 的方案数。

效率: O ( 2 n m 2 ) O(2^nm^2) O(2nm2)

F - Skeleton Dynamization

场未A。且不会。

G - Caesar Cipher

场1A。

线段树维护 hash \text{hash} hash max \text{max} max ,然后如果 max \text{max} max 达到 65536 65536 65536 就直接暴力修改即可,这样的次数不会很多。

H - Message Bomb

场1A。

set \text{set} set 搞搞就好了。

I - Sean the Cuber

场未A。不会。

J - Steins;Game

场未A。一定要去打表找 sg \text{sg} sg 函数的规律,这样就可以做了呜呜呜。

K - Tree Tweaking

场未A,但是先开了这题就A了呜呜。

深度和可以看成子树大小和,而每次插入一个数,它到最后的子树大小是后继-前驱-1。

因此先把 [ 1 , L − 1 ] [1,L-1] [1,L1] 的点都插入后, [ L , R ] [L,R] [L,R] 的点就会被分成几个区间,在每个区间里面做 dp \text{dp} dp 就好了。

具体就是 f l , r f_{l,r} fl,r 表示 [ l , r ] [l,r] [l,r] 还未插入,且 l − 1 , r + 1 l-1,r+1 l1,r+1 都插入了的最小子树和,枚举中间的一个点转移即可。

效率: O ( n l o g n + ( R − L ) 3 ) O(nlogn+(R-L)^3) O(nlogn+(RL)3)

L - Clock Master

场1A。

可以猜到一个数要么分成若干不同质数的次幂,要么就是它本身。

然后去做背包就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值