PKUWC2018游记

向我这样的小菜鸡竟然有幸能参加 pkuwc p k u w c 看来运气不错


Day1

8:00-9:00

围观长郡宣传片

听副院长讲计算机历史???

一脸茫然(发现自己除了知道最开始的几幅画是谁画的就啥都不知道了…)

然后考数学


9:30-11:30

T1:x<2,|1|x+1||=? T 1 : x < − 2 , | 1 − | x + 1 | | = ? 感觉挺简单的切了

T2:... T 2 : . . .

(然后我就不记得了,不过你有兴趣可以看看这个Blog//捂脸)

(不过上机考试您真当我不会用计算器?然后我们考场某大佬问监考老师:”电脑上的计算能不能用?我看我周围的都用了计算器”.在一旁的我只好微微一笑,关掉了我写的爆搜)

T30 T 30 :今天 2018,1,30 2018 , 1 , 30 号是星期二, 1898,5,4 1898 , 5 , 4 是星期几

话说这玩意不是初赛考过吗…

似乎有个公式….

诶,电脑上不是有日历吗?

兴高采烈点开日历发现只能翻到 1910 1910

咸鱼失去梦想

感觉pku是算好了的

(我才不会说我在Day2看到旁边的大佬玩计算器才发现win7计算器有算两个日期之间的天数的东西//捂脸)

然后这里有一个叫做蔡勒公式的玩意

话说解答题才是重点…

T31:AB=,AB=N,1A;A,B T 31 : A ∩ B = ∅ , A ∪ B = N ∗ , 1 ∈ A ; A , B 都满足 A,B A , B 集合中任意两个数的和不等于 2h+2,h=0,1,2.... 2 h + 2 , h = 0 , 1 , 2.... 证明这种划分是唯一的,并回答 2017,2018,2019 2017 , 2018 , 2019 属于哪个集合

T32: T 32 : 一个 100 100 边形 P P 满足每个顶点都是整点,每条边都平行坐标轴,且长度为奇数,证明P的面积是奇数

T33: T 33 : 对任意三角形中,a,b,c是三边,设 D=a+b+c,S=ab+bc+ac D = a + b + c , S = a b + b c + a c 求证 3SD24S 3 S ≤ D 2 ≤ 4 S

T4: T 4 : 对于 (a,b,c,d) ( a , b , c , d ) 四个数不全相等,定义一次操作将四元组变成 (ab,bc,cd,da) ( a − b , b − c , c − d , d − a ) 证明经过有效次操作后,四元组中肯定会有某个数 >2018 > 2018

我只是贴个题(我只会 T31,T33 T 31 , T 33 以及 T34 T 34 的部分//逃走)

话说我是个正经的 OIer O I e r ,应该讨论一下 OI O I 考试

写在前面:妈呀, IOI I O I 赛制感觉紧张死了…


13:30-18:30
T1,Minmax: T 1 , M i n m a x :

一棵有根二叉树,每个叶子有一个权值,每个非叶子节点有个概率 p(0<p<1) p ( 0 < p < 1 ) ,表示该节点选到儿子节点中最大值的概率
(该节点的权值变为你选的值);考虑根节点的权值有 m m 中情况,第i小的权值为 Vi V i ,概率为 Di D i ,问 mi=1iViD2i ∑ i = 1 m i ∗ V i ∗ D i 2

一句话就是这样:带随机权值的二叉树,根节点的权值与概率的平方求和

先将叶子的权值离散化,变成 1m 1 … m

考虑暴力 DP D P

f[x][i] f [ x ] [ i ] 表示节点x权值是i的概率

可以将两个儿子的信息合并算出 f[x][i] f [ x ] [ i ]

假设权值 ilc i ∈ l c

f[x][i]=f[lc][i]sum[rc][i1]px+f[lc][i](1sum[rc][i])(1px) f [ x ] [ i ] = f [ l c ] [ i ] ∗ s u m [ r c ] [ i − 1 ] ∗ p x + f [ l c ] [ i ] ∗ ( 1 − s u m [ r c ] [ i ] ) ∗ ( 1 − p x )

然后对左右儿子每一个有 f f 值的i算一遍

时间复杂度: O(nm) O ( n m )

仔细分析怎么计算 f[x][i] f [ x ] [ i ]

考虑一种情况(其他的类似), lc l c 的权值比 rc r c

这种情况下x的权值为 i i 的概率是

pxj=1i1f[rc][j]f[lc][i]

可以对于每个节点 x x 开一棵可持久化线段树,线段树的下标i记录 f[x][i] f [ x ] [ i ]

计算 f[x][i] f [ x ] [ i ] 时可以用线段树合并,通过合并 lc l c rc r c 的线段树来计算

时间复杂度 O(nlogm) O ( n log ⁡ m )


T2,SlayTheSpire: T 2 , S l a y T h e S p i r e :

给你两个长度为 n n 的序列a,b,表示强化牌和攻击牌,从中等概率的选取 m m 个数,然后这m个数里又只能选k个数出来,假设选了 a a 中一个数,能让b中剩下的的数,权值乘以 ai,(ai>1) a i , ( a i > 1 ) ,出题人会按照最优决策选出这 m m 个数中的k个问期望的总答案* (2nm) ( 2 n m )

一句话就是这样:从 2n 2 n 张牌随机的抽取 m m 张后,最优的打出k张牌,求期望得分

k=1 k = 1 时,最优决策是打出最大的攻击牌,这个可以特判

其他情况,假设手中有 A A 张强化牌,mA张攻击牌,那么分类讨论

1.如果 Ak A ≥ k

那么最优决策是选 k1 k − 1 张最大的强化牌,然后出一张最大的攻击牌

1.如果 A<k A < k

那么最优决策的先出完 A A 张强化牌,然后剩下的从大到小出完攻击牌

两种情况都可dp出来

复杂度 O(n2) O ( n 2 )

具体来说是这样的

1:把强化牌的权值从大到小排序,设 fi,j f i , j 表示在前 i i 张强化牌里面选出j张的乘积的所有情况的和

首先有 fi,j=fi1,j f i , j = f i − 1 , j

然后考虑 ai a i 的贡献

如果 j<k,fi,j+=fi1,j1ai j < k , f i , j + = f i − 1 , j − 1 ∗ a i 因为当前还没有选完 k1 k − 1 张牌,所以当前这张牌可以出现在前面任何一种组合里,所以要乘上 ai a i 的贡献

如果 jk,fi,j+=fi1,j1 j ≥ k , f i , j + = f i − 1 , j − 1 因为你已经有选了超过 k1 k − 1 张强化牌,所以这张牌就算再被选也算不进贡献,所以要加上这一张不选的答案

2:把攻击牌的权值从小到大排序 gi,j g i , j 表示前 i i 张牌,选mj张前 kj k − j 张最大的所有情况的和

gi,j=gi1,j+1+bi(i1mj1) g i , j = g i − 1 , j + 1 + b i ∗ ( i − 1 m − j − 1 ) 表示第 i i 张牌在前面选了的mj1张牌里面作为最大值的情况有 (i1mj1) ( i − 1 m − j − 1 )

最后统计 mi=1fn,ign,i ∑ i = 1 m f n , i ∗ g n , i 就好了?


T3, T 3 , 斗地主:

给你一副牌的 n(0n20) n ( 0 ≤ n ≤ 20 ) 张牌,斗地主,问使得农民出不了牌(地主就春天了)的方案数

大家可以看看出题人@九条可怜怎么说的

(我现在看到和扑克牌有关的题就怕\捂脸)

直觉:一定能打出春天的手牌种数是有限的

先搜出所有一定能春天的手牌(只有4~5w种)

每次询问时暴力枚举每种答案是否符合要求

搜索的时候分两种情况讨论

农民没有炸弹

可以发现地主有 14 14 张手牌已经确定下来了
( AK A − K 至少有一张,大小王中也至少有一张)

并且地主的牌是若干个一定比农民大的牌型+一波可以一次打出的牌组成的

剩下的只有 6 6 张牌,状态比较少,用一些搜索优化技巧可以在2s内搜出来

农民有炸弹(火箭也算一种炸弹)

地主的手牌必须是若干个比农民大的炸弹+一波一次可以打出的牌

这个方案数不是很多,可以直接搜出来


18:30-24:00

思考人生 ing i n g …


Day 2


8:00-13:00
T1 T 1 :随机算法

一个显然的求图的最大独立集的暴力就是生成全排列,假设一个排列是 p,S p , S 是当前最大独立集;如果 S S ∪ { pi p i }是独立集就令 S=S S = S ∪ { pi p i };求这 n! n ! 个独立集是最大独立集的概率

一句话:求图的最大点独立集随机算法的正确率

(话说这道题考场有 60 60 %的 dalao d a l a o 都切了)

考虑暴力状压 DP D P

f[S][T] f [ S ] [ T ] 表示当前独立集是 S S ,已经试过的点集是T的概率

因为 ST S ⊆ T 所以复杂度是 O(n3n) O ( n ∗ 3 n )

转移时,考虑剩下的点中,不与 S S 的点相邻的集合为Z;那么我们只关心这 |Z| | Z | 个点在排列里之间的顺序关系

可以枚举哪个点是 Z Z 中在排列位置上最靠前的,显然概率都是1|Z|,然后

f[S]1|Z|f[S{x}] f [ S ] ∗ 1 | Z | → f [ S ∪ { x } ]

时间复杂度 O(n2n) O ( n ∗ 2 n )

然后这道题还有很多玄妙的方法,话说 O(n22n) O ( n 2 ∗ 2 n ) 也是可以 A A 的(讲题时旁边的dalao说数据水了)


T2 T 2 :猎人杀

每一猎人都有一个权值 wi w i ,每个猎人死后都必须要开一枪,切被射中的人也会死;假设当前活下来的人是 [i1,i2,,im] [ i 1 , i 2 , … , i m ] ,那么当前死的猎人就有 wikmj=1wij w i k ∑ j = 1 m w i j 的概率的向 ik i k 开枪;第一枪由你来打,目标选择方式和猎人一样(即有 winj=1wj w i ∑ j = 1 n w j 的概率的向第 i i 个猎人开枪),由于开枪的连锁反应,所以最终所有人都会死,问第1个猎人最后一个死的概率.

一句话: n n 个猎人按概率被射杀,求1号猎人最晚死亡的概率

构造n个猎人的排列 p p ,表示其死亡时间的倒叙

题目相当于,对于所有满足p1=1的排列,求和

p1=1ni=1wpiij=1wpj ∑ p 1 = 1 ∏ i = 1 n w p i ∑ j = 1 i w p j

考虑如果没有 p1=1 p 1 = 1 的限制的话,和显然为 1 1

也就是说

pi=1nwpij=1iwpj=1pi=1n1j=1iwpj=i=1n1wi

考虑上式的组意义

相当于有一堆求,第 i i 中颜色的球有wi个,球两两之间都是不同的,每种颜色的求里都有一个特殊的球,我们叫他大球

相当于,将所有球排成一列,要求每个大球都在和他颜色相同的球的前面

右边这个显然是这个概率,左边相当于枚举了颜色之间的顺序

那么 p1=1 p 1 = 1 意味着,除了上述限制以外,颜色为 1 1 的球要在其他所有大球后面

我们可以枚举颜色为1的大球的所在位置,则他后面可以放的是所有颜色为 1 1 的球,以及其他颜色的除了大球以外的球

考虑列出其他颜色的球的生成函数

fi(x)=j=0w[i]1xj(wij)j!

用NTT计算一下所有生成函数的乘积即可

时间复杂度 O((w)lognlogw) O ( ( ∑ w ) ∗ log ⁡ n ∗ log ⁡ ∑ w )

T3: T 3 : 随机游走

给你一颗树,每次从 x x 节点出发,每次等概论地向一条与所在点相邻的边走去;有Q次询问,每次询问给定一个集合 S S ,如果从x出发随机游走,问直到点集 S S 中所有点都至少经过一次要走的期望步;特别的点x(即起点)视为一开始就被经过了一次

一句话:从树节点x出发,知道经过点集 S S 所有点至少一次的期望步数

f(S)为原问题的答案

g(S) g ( S ) 为从 x x 出发随机游走,知道经过点集S任意点一次的期望步数

由经典的容斥定理可以得到

f(S)=TS(1)|T|1g(T) f ( S ) = ∑ T ⊆ S ( − 1 ) | T | − 1 ∗ g ( T )

先枚举 T T 预处理出g(T),然后每次查询 S S 通过上式求出f(S)

预处理 gy(S) g y ( S ) ,表示从y随机游走,知道经过 S S 任意点一次的期望步数

如果yS,gy(S)=0

否则 gy(S)=1+1|Ny|xNygx(S) g y ( S ) = 1 + 1 | N y | ∑ x ∈ N y g x ( S ) ,其中 Ny N y y y 的邻点集合

所关注结点的期望步数表达式组成n2n元一次方程组,暴力高斯消元复杂度是 O((n2n)3) O ( ( n ∗ 2 n ) 3 )

因为这是树,可以知道非根节点 gy(S) g y ( S ) 0 0 或者列出与其父亲值关系的方程

逐层列出方程,最终用O(n2n)的时间列出仅含根结点 gx(S) g x ( S ) 的方程并求解

总时间复杂度: O(n2n) O ( n ∗ 2 n )

最后膜一下Cai大佬,大佬想出了一种 O(n32n) O ( n 3 ∗ 2 n ) 的解法,这种解法不需要用到树的性质,也不需要管起点是谁,也就是说可以在图上跑,伏地膜


14:00-18:00

下午是面试来着

除了时间推迟到 15:30 15 : 30 才出名单,感觉等了很久外并没有啥感觉

感觉听大佬吐槽题目挺有意思的

面试就没啥好说的,稍微瞎说了一些


18:00-24:00

思考人生 ing i n g …


Day 3


9:30-11:00

虽说是结营仪式,但其实就是讲题解+签约?

题解都在上面所以就没啥好讲的了


11:00-11:30

话说拍个集体照,需要半个小时么?


11:30-12:00

拍完大家准备散了的时候,某老师拿话筒来了一句:

“同学们不要走,回到刚才闭幕式的会场,我们签协议.”

想了想拿了两天的大众分应该没啥希望吧

(当时我真打算直接走来着)

然后抱着”去看 dalao d a l a o 随意签一本”的心态还是回到了会场

然后等了好久,突然听到了自己的名字????

然后随意签了一个”大众约”——有条件一本

然后就滚粗了


后记

逛了逛知乎,看了看 dalao d a l a o 的游记,发现只要是正式营员都有约?

岂不是”有条件一本”=”安慰约”?

嘛,随意了,总比没有好…

不过有一些特别强的 dalao d a l a o 因为不是正式营员然后没有约,表示比较可惜

感觉题目难度和质量是够了,不过 39 39 道数学题+一场斗地主真的好吗?


唔,又要去冬眠营膜更多的 dalao d a l a o

Rp++ R p + +

To T o be b e continued c o n t i n u e d …

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值