大概2017年12月份才知道5月份pkusc2017签的那个叫做省队一本。
当时感觉自己有学上了。。。
(pku大概是没考虑JX的水平然后给当时那么菜的我发省队一本。。。
本来是打算去thuwc的,然后怕毁约造成影响,
于是选wc的时候就选了pkuwc啦。
Day-1(1.28):
长沙雪下的最大的一天(其实还很小),26日下的雪还没融完就又积了一层,结成冰的路面上又覆盖上浅浅的雪花,于是随手跌倒。
上午去机房打了打几个计算几何的板子(pkusc已经连续两年考半平面交裸题了),下午突然看到BZOJ上gss2加强版这题,想了想不就是个树套树么,然后就开始码码码。。。
因为太颓了,到晚上20:00ARC090的时候还没码完。之前是立了flag说要在pkuwc之前Atcoder上黄的。。。结果秒掉前两题后,第三题最短路计数拓扑排序那里没开longlong,到比赛结束都没发现,结果gg,rating只到1968。。。
然后高铁晚点的老妈也到了长沙,然后老妈订错酒店了。。。于是再ARC挂掉之后骑车去了酒店。
滚粗感++
Day0(1.29):
睡了个懒觉,赶紧重新订了一个正确的酒店然后搬过去了。出太阳了,亲眼目睹7天酒店屋顶上的融冰滑下来把旁边民居房顶砸穿的现场。。。
滚粗感++
吃完午饭就立即去长郡报道了,估计我是第一个到的。。。看到报道名单上的SD众神犇腿都吓软了,数了数大概有200+人来这次pkuwc。听说这次的赛制是ioi,试机的时候发现Windows和Ubuntu自选。好评,反正我是做了两手准备的。
回去准备把那道树套树写完,结果发现splay常数太大,人家treap1s,我12s,卡了常之后也才7s。。。于是弃了,随便复习了一些板子就睡觉了,数学根本没看。
以为可能睡不着,结果睡得挺好。。。
滚粗感++
PKUWC2018日程
Day1:
1. 8:00~9:00 开营
2. 9:30~11:30 数学考试
3. 13:30~18:30 机试第一场
Day2:
1. 8:00~13:00 机试第二场
2. 14:00~17:00 面试
Day3:
1. 9:30~12:00 闭营及签约
Day1(1.30):
8:00准点赶到pkuwc开营仪式,前面几个领导讲话,然后有个pku的老师讲计算机的前世今生与未来,讲的挺有趣还挺哲学的。讲完之后,组织人员说请到机房参加数学考试。
机房?在一个已经被电脑占用了大半空间的桌上写试卷?那不是很难受?
结果发现,数学考试可以用电脑。。。选择题还变成了提答题。
9:30开始了,大概看一下题,30道选择和4道证明大题,先花上一个小时去写完选择。
然后就发现可以用电脑的好处了,比如说:
有一题是一个复杂的算式求值,然后我点开了计算器。。。
有一题问满足……条件的三位数有多少个,于是编了个程。。。
还有一题已知2018年1月30日是星期二,问1898年5月4日星期几,我捣鼓了半天Windows的日历好像都不能翻1980年以前的。。。想起初赛那题崩掉的历史,不得不谨慎的算起来。。。
选择题里还混着几道平面几何和立体几何,平面几何瞎证了证,立体几何就懵逼了。
10:40才写完选择题,开始搞大题,第一题是一个把自然数集合划分成两个,使得同集合中没有两个数相加能表示成 2n+2 2 n + 2 的形式,然后证明划分方案唯一,第二题是给一个 100 100 边形,然后所有边平行坐标轴,所有边长为奇数,求证其面积也为奇数,三四题忘了。
感觉第一题还挺可做,编程打了个表发现划分还真唯一。开始分奇偶从二进制角度考虑,结果发现说不太清,怕是搞了OI就只会猜结论不会证了。。。11:00还没弄清楚,感觉要gg,先看看第二题,第一感觉当然是先把它补成一个大矩形,然后发现这个矩形边长有可能是偶数啊。。。然后就真gg了,11:20好像理清了第一题思路,赶紧写了上去,11:30交卷。
回宾馆路上,发现第一题伪证了。。。
滚粗感++
赶紧吃了午饭,午觉睡到13:00,就赶紧去13:30的第一场机试了。
这回分到了5楼机房,大概就是暑假湖南省队集训那个机房。键盘有点难受。拿了瓶矿泉水,刚打算拧开瓶盖,结果溅了一身水。。。。
滚粗感++
刚擦完水就发题了。
T1一个树上的概率计算?啥东西
T2看到九条可怜,吓懵。。。怎么又是概率与期望
T3斗地主,怕不是大模拟。。。
先看了T1,
T1给一棵二叉树,每个叶子节点有权值 wi w i ,每个点的权值有 pi p i 的概率为 max{wson} max { w s o n } ,有 1−pi 1 − p i 的概率为 min{wson} min { w s o n } ,然后假设根节点的权值有 m m 种,从小到大排序后每种权值为 Vi V i ,概率为 Di D i ,求:
∑i=1mi∗D2i∗Wi ∑ i = 1 m i ∗ D i 2 ∗ W i
n≤300000 n ≤ 300000 ,保证所有权值互不相同。
概率平方成权值是啥啊。。。不会啊。。。还乘个标号。。。怎么维护啊。。。
先打了个40分的
n2 n 2 暴力上去,大概就是设
fi,j f i , j 为节点
i i 取到权值
j j 的概率,转移大概就是:
fi,j=pi∗(fson2,j∗∑k<jfson1,k+fson1,j∗∑k<jfson2,k)+(1−pi)∗(fson2,j∗∑k>jfson1,k+fson1,j∗∑k>jfson2,k) f i , j = p i ∗ ( f s o n 2 , j ∗ ∑ k < j f s o n 1 , k + f s o n 1 , j ∗ ∑ k < j f s o n 2 , k ) + ( 1 − p i ) ∗ ( f s o n 2 , j ∗ ∑ k > j f s o n 1 , k + f s o n 1 , j ∗ ∑ k > j f s o n 2 , k )
一发交上去就愉快的得到40分。
然后开始仔细思考这题,感觉要求的式子太不友好了,没什么东西可以一起算的,一定要把每种概率都求出来才行。。
那这样怎么才能不是
O(n2) O ( n 2 ) 的啊。。。就算按每个点复杂度只和其子树中叶子大小也没改变啊。
看一下榜,这个时候已经有好多人得了40分,还有得50分的,估计是把10分的“树的形态随机”的过掉了。
突然想到Atcoder上一道E题树型DP。
启发式合并啊!
感觉二叉树这个已经提示的很明显了,然而怎么合并啊,要保证复杂度和大的那棵子树无关。对着DP方程yy了一会后觉得要维护一些权值,然后还要区间乘,splay可以搞。
理了理细节,准备开始码,这个时候大概14:30,打算16:30没搞完就弃。然而这时榜上已经看到WearryA了T1了。。。
刚打完rotate,就感觉splay细节好多,不对啊,打啥splay啊,不怕常数被卡死啊。。。
想起昨天的经历,赶紧扔了splay,开始码起动态开点权值线段树来。
感觉是15:40才调过样例,交一发,WA,0分。
什么鬼。。。开始检查起代码来。已经离考试开始两个多小时了,快过半了,还在玩T1的我虚了起来,为了稳住心态,强制自己不能看榜。
实在是看不出有啥错误,很不情愿在ioi赛制赛场上打对拍,不过想了想反正已经有暴力了,就勉强打个造数据吧。。
调了好一会,大概是线段树修改和查询的顺序混了,得先记一些修改的东西,然后再查,然后再改。
16:10交了一发,TLE,60分。
那我的算法大概是对的,再卡卡常数吧。
把一些mod运算优化了一下,交了一下,没什么卵用。。。怎么办啊。
把权值离散试试,这样线段树小很多啊,感觉效果会蛮好。
16:20交一发,TLE,90分。
怎么还差一个点卡不过啊,一时兴起把线段树上界从
300000 300000 改成离散后的权值个数,以为没什么卵用,交一发。
Accepted!
美滋滋,这个时候刚好16:30。看了看情况,A掉T1的人还不到10个,T2已经有20+人A掉了,榜上已经有两个人拿到了200分。
还剩两个小时,赶紧搞T2,那么多人A说不定挺水,实在不行就上暴力。
T2大概是这样的:
九条可怜在玩牌,有
n n 张强化牌,权值为
wi w i ,
n n 张攻击牌,权值为
vi v i ,用一张牌强化牌会使之后用的攻击牌
vi v i 都乘上
wi w i ,最终的到伤害就是所有攻击牌
vi v i 之和。一套牌组包含
m m 张牌,九条可怜每次只能选出
k k 张牌打,假如每次都选最优方案,问
(2nm) ( 2 n m ) 种牌组的最大伤害之和。(期望那部分就是包装了一下题面,已省略)
k≤m≤2n≤3000,∑2n≤30000 k ≤ m ≤ 2 n ≤ 3000 , ∑ 2 n ≤ 30000 ,保证所有
wi≥2 w i ≥ 2
有个挺显然的性质,就是一定先用强化牌再用攻击牌qwq
然后攻击牌至少用一张qwq
好sb啊。
一开始只看到
∑2n≤30000 ∑ 2 n ≤ 30000 ,这做个毛啊。
过了10min才发现,每组数据都
≤3000 ≤ 3000 。
估计是
O(n2) O ( n 2 ) 的。
然后又研究研究,发现
wi≤2 w i ≤ 2 这个东西挺好的,就保证了一组牌中,若强化牌
≥k ≥ k 张,那么一定是用前
k−1 k − 1 大的,然后用一张最大的攻击牌(因为至少翻两倍嘛),若
<k < k 就是原来的策略了。
考虑每个最优方案会出现在多少个牌组里,然后瞎DP一下。
诶呀我好像切了。
就是先把两个数组sort一下,设
fi,j f i , j 为选了
i i 个强化牌,最小的是
j j 的强化乘积之和,设
gi,j g i , j 为选了
i i 个攻击牌,最小的是
j j 的攻击和之和。大概就是
fk−1 f k − 1 和
g1 g 1 拼一拼,
然后剩下的拼一拼,再乘上对应的组合数就是。所有的都可以
O(n2) O ( n 2 ) 搞定。
于是码码码,一开始思路还有点混,然后强行写下DP方程就好多了。
大概17:00过了样例,有组挺大的都过了,自信满满地交上去
WA,10分。
一开始怀疑自己算法错了,后来觉得自己有理有据的,突然想起NOI2016day1T2,数据比较小的时候会出问题,然后出题人每个点都放一组小数据卡死。。。
手测了一下
n=1 n = 1 的数据,果真gg,改了改交上去
WA,30分。
上对拍吧。。。暴力都调了挺久,17:30才搞定对拍的东西,拍大数据没什么问题。
结果一组
m=1 m = 1 的给我拍WA了,还真有地方得改改边界,交一发
Accepted!
滚粗感–
这个时候大概17:40了,一看榜,已经有9个人先于我get200分,然后第三题还没人得分。
T3就是给定
n n 张牌,问地主
20 20 张牌中包含这
n n 张牌的所有方案中一定能打出春天的有多少种,多组询问。
一看就毒瘤,先对于
n=20 n = 20 的乱写个随机交上去,0分。
然后提交次数+1,rank-1。再看了看榜,原来200分的这题都交都没交过啊。。。
弃疗,17:50,打开扫雷。。
剩下的40分钟就在扫雷和不断刷榜中度过了。
考试结束的时候,200分共13人,20人A了T1,60人A了T2。
day1达成成就,ioi赛制中所有题都写了对拍(除斗地主咯。。。
感觉发挥的还好呢。明天只要不跳水就行。
晚上颓了颓osu,好早就睡了。
Day2(1.31):
没睡好,估计就睡了4个小时。
不过起来之后感觉蛮清醒,老妈怕我翻车,还让我买了瓶红牛。
买就买,反正我坚决不喝。
想到是这个月最后一场比赛,还有点紧张呢。
考场分在原先考数学那个大机房,数学的时候是第一排第一个,这回是第一排最后一个。
滚粗感++
准时发题,先大致浏览一遍。
T1,概率,对 998244353取模 998244353 取 模 。
T2,概率,对 998244353取模 998244353 取 模 。
T3,期望,对 998244353取模 998244353 取 模 。
pku这是要翻天?
滚粗感++
T1大概就是给一种随机的求任意无向图最大独立集算法,就是随机一个排列 pi p i ,扫一遍排列,若与 pi p i 相邻的所有点都不在独立集中就加入它,给一个图,问个算法正确的概率。
n≤20 n ≤ 20
一开始想着可以把所有最大独立集 2n 2 n 搜出来,然后对于每种计算一下什么的。顺着这个思路想下去,想出了各种复杂度不对的算法。一直想到8:40都没啥结果。
果断换思路,状压? 3n 3 n 状压很显然,就是0表示未被选,1表示选了但不在独立集中,2表示在独立集中,然而只有30分,我才懒得写。
后来想有没有两种状态可以合并,发现1,2合并起来其实是可以搞的,后面再乘个下降幂啥的就行。具体的,设 fi,S f i , S 为独立集大小为 i i ,状态为 S S 的方案数, ei e i 为 i i 与其所有相邻点,转移就是:
[k∉S],fi+1,S∪ek→fi,S∗(n−|S|)|ek−(ek∩S)|––––––––––––– [ k ∉ S ] , f i + 1 , S ∪ e k → f i , S ∗ ( n − | S | ) | e k − ( e k ∩ S ) | _
写了写然后1A了。。。
这个时候9:20,大概有30+个人A了T1。看T2去。
T2题意是,有
n n 个堆石子,第
i i 堆有
wi w i 个,每次随机选一颗石子,然后把整堆拿走,问第一堆最后拿走的概率。
我记得我听QYQ神犇说过一道同样题面,求第一堆期望几次后被拿走的题,那就是NOIP思博题了。
所以感觉这题也会比较简单。。。(毒奶
这题还有个奇怪的数据范围
∑wi≤100000 ∑ w i ≤ 100000 ,对
n n 还没限制。
然后30分暴力
n≤20 n ≤ 20 比较显然,不急码(别浪费提交次数)。开始推推推,玩了40min玩不出来。
一看榜,A掉T1的人爆炸性增长,T2 30分估计人人也都会,然而开场两小时了,T2还没人拿到30分以上。
这画风不对啊。。。
然后这时全场0分的T3有两个人得了60???
果断打完暴力弃T2搞T3,意识到130估计是大众分,只要脱离130就比较稳(毒奶。赶紧去打打T3暴力。
T3题意是,给一棵
n n 个点的树,从
x x 点出发随机游走,
Q Q 次询问,每次询问一个点集
S S ,期望走多少步能经过
S S 中所有点至少一次。
n≤18,Q≤5000 n ≤ 18 , Q ≤ 5000
好像不久前刚写过一道HNOI题,叫游走,也是图上乱走。
高斯消元?一开始太傻逼把复杂度想成
Q∗(2n∗n)3 Q ∗ ( 2 n ∗ n ) 3 ,这只有10分吧。。。
突然看所求的东西,怎么感觉要minmax容斥啊。。。转化成求第一次经过
S S 中某个点的期望。感觉没啥用啊,纯粹乘一个枚举子集的复杂度。。。(毒奶
突然发现题目给的好像是一棵树?然后联想到雅礼集训有天WerKeyTom_FTD出的一道题,当时为了30分部份分yy出一种记父亲系数的树型DP方法。
好像这题能用?
整理整理了思路,大概是一个分层DP的模型,就是
fi,s f i , s 表示当前在点
i i ,经过
S S 中的点状态为
s s ,然后
fi,s f i , s 可能跟
ffai,s f f a i , s 有关,于是通过树型DP把每个
fi,s f i , s 搞成
ci+di∗ffai,s c i + d i ∗ f f a i , s 的形式,然后再从根倒推回去。这样复杂度就
O(Q∗2n∗n) O ( Q ∗ 2 n ∗ n ) 啦,可以得60分。
一开始乱写的有理有据,突然想起__debug的一句话:“概率要正着推,期望要倒着推”。
妈的我怎么写的是正着推的啊。。。
于是开始改改改码码码。。。然后好多边界要处理
这个时候越来越多的人get了T3的60~70分,山东之王hashtable也get了60分,做出T1的人还再暴涨,T2好像还没人搞出来。
调到11:10分才过掉样例,交一发
WA,0分。
滚粗感++
别啊。。。这种期望题好难调的。
于是手造了一个4个点的链的数据,手算了半天,再用程序一跑,好像不对。查了半天错才发现,算出来的
1−di 1 − d i 没除给
ci c i 。。。
我怎么记得当时雅礼集训的时候这个地方也WA了啊,交一发
WA,0分。
滚粗感++
怎么还WA啊,这没天理啊。。。于是手造了一个5个点的数据,算答案都手算了5min,检查几遍后发现,还是程序挂了。继续调调调,发现算出来得
1−di 1 − d i 还没除给
di d i qwq
一个地方错两个。。。还没一次发现,cao,交一发
RE!
感觉稳了,把页面往下翻看分数。
60!
然后day2就190啦,赶紧看榜,rank7。美滋滋。
滚粗感–
然后发现前面还有一些200=100+30+70分的,感觉是T3常数写的比较优多过了一个点。于是我心怀梦想,开大数组,交一发
TLE,60分。
好吧,人丑自带大常数。
这个时候11:50,还剩70min,总得搞点东西吧。这个时候越来越多人得到了200分,我不能咸鱼了啊。
发现T2有个部分分是
1≤wi≤2 1 ≤ w i ≤ 2 ,搞出这20分就210啦,然后开始推推推式子。
结果推出第一类Stirling数,woc,第一类Stirling数计算不也是
O(n2) O ( n 2 ) 的啊。。。
凉了,最后40min就咸扫雷了。
还剩5min的时候,我前桌小哥的显示器炸了,冒黑烟(然后工作人员好像给了他加时
最后190分被挤到rank11,这时候才发现,130分已经排到rank100+了。。。
滚粗感++
考完试带着还没喝的红牛离开了考场。终于结束了,下午面试随便乱搞搞就是了。
红牛当成午饭饮料了。
14:00准时回到长郡,教学楼等待面试的人三三两两的站着。貌似还没放面试名单。这个时候看到了NOIP AK的kczno1爷来看望他的同学们,然后我和他一直聊着天,他说机试rank1是他们省高三一个集训队来玩的。。。那么去掉他rank1怕是山东的高一神犇rqy了。
我感觉我机试成绩390应该能排到前10,加上数学崩掉估计也就15左右。
然后面试名单贴了,我一直挤不进去看,然后过了十多分钟看群里的照片才看到的。
隐隐约约发现自己在榜上第七个?
滚粗感-= inf i n f
后来听说这还是加了数学的成绩。
于是赶去面试,第一个面试老师是一个pkusc面试过我的老师,问了一番套路。
第二个面试老师是一个年轻的小姐姐,也问了一番套路,唯一问得比较刁的问题好像就是“你的成长是由父母决定的还是你自己决定的”
然后我瞎答。
第三个面试老师好像是蒋婷婷,我刚说“我是pxy”,她就说
“我是不是面试过你?”
“好像是的,我参加了贵校组织的pkusc2017。”
“哦,那就没啥好问的了,你考得怎么样啊?”
然后就开始谈笑风生。。。我还套出了数学成绩分布,据说选择2*30,大题10 *4,她还说选手大概都是50~80分。我估计就50分吧,大题一题不会。
中间等面试的时候,还碰到了廖哥,他正在和长郡教练聊天,然后廖哥就按住我的肩膀跟长郡教练吹B:
“这就是我们这边考的最好的,rank7,无条件一本稳了!”
“强啊,机试多少分啊。”
“是390吧。”
“我一个学生rank8机试340分诶,差这么多啊。”
于是我就知道我数学挂的多惨了。。。
然后就等着明天发协议了。
Day3(2.1):
新的一个月,流量复活,闭幕式9:30开始好评,可以睡懒觉。
闭幕式先是营员代表发言,是一个长郡的女选手,为什么有OI那么强演讲水平还这么高选手啊。。。精彩语录有:
“看到9982443353这个令人恐惧的模数……”
然后就是讲题,讲到11:30,途中山东高一神犇rqy上去讲了三次。
好像day2T2正解是啥啥啥之后NTT,除掉那个集训队的好像就只有他A了,跪烂Orz。
听到day2T3的正解是我那个奇技淫巧(听说叫树上高斯消元)再加一个minmax容斥的时候,内心崩溃。
当时为什么要去搞T2。。。
最后还没发协议就先被叫到操场上去拍合影,结果人太多好挤。。。摄影师大叔拍的好难受。
然后12:00重新被组织上楼发协议。。。pku真能拖。
协议名字一会倒着念,一会正着念,一会念高一,一会念高二。。。听到面试名单前几个人的名字的时候,好像全场都注视着主席台。
然后第七个念道我,跑上去拿协议。
如愿拿到了无条件一本呢,成功提前半年把有条件换成无条件了呢(雾
后来听说没面试的也有协议?听说签了20个无条件一本?最后pku还有温馨提示:没念到名字请上台确认了一下,说不定念漏了。
pku的人什么时候变得那么贴心了,我记得pkusc是两个什么都不懂的工作人员来发的,问协议啥意思都不知道。
认识的来pkuwc的同学不多,签约情况大概是这样吧:
SD全省虐场,五个无条件一本,山东之王hash_table也是无条件一本。跪烂Orz。
纪中两个高一的同学都签了无条件30分+省队一本。跪烂Orz。
雅礼Wearry也签了无条件一本,redbag好像签了省队一本还是啥的,一脸觉得是废纸约的表情,好像HN省队本来就可以一本?(要知道这在JX就相当于无条件一本啊
然后就完结撒花啦。等着过两天去雅礼洋湖报道WC2018了。
WC2018 Bless all。