PKUWC2019游记

话说我写了几年的博客居然没有分出游记这一栏

Day -inf

颓颓颓
各种训练各种颓
因为在本校所以很舒服

Day 0

当志愿者是smg。。。
于是就在门口站了半天。。。
来报到的每个人好像都很开心啊怕不是没有去过jz的宿舍233
5$的早餐和15$的午餐晚餐是smg
cnt[纪中手绘地图]++

去试了一下机发现键盘按键的阻力是普通键盘的十几倍
心态炸裂

晚上睡眠质量极好
怎么感觉晚上的砸门声是故意的
宿舍环境不错吧233
《从jz宿舍到三味书屋》

Day 1

上午开幕式全程懵逼睡眠质量不错啊
饭堂15$的午餐是真的值
合影的大叔很有趣啊233
于是合照成功被玩坏

数学被鸽了估计是大多数人都起不来吧
于是正式上机


依旧是辣鸡键盘
ioi赛制好评

先看题
T1好像可做啊,随便设个状压f[s]表示当前加入的点集为s,然后每次加当前拓扑序最大的点再连边
就是f[原]*2可连边数,因为加入的点拓扑序最大,所以可以向之前的任意点连边(前提是要有边),每条边可连可不连

复杂度是O(2n*n2),n=20好像有点虚?
不管先交一♂发先,反正是ioi赛制,32次提交形同虚设
WTF我™怎么过了
妙啊
后来才知道评测是开了O2
好像PKUWC不卡常啊(记住这句话)
(其实可以优化掉一个n,只需要预处理每个点能走到的点集,每次和当前点集取&再求结果中二进制下1的个数就是可连边数,1的个数可以预处理)

于是只过去了0.5h


T2是smg
欸我上午才刚学了虚树
不对这好像不是虚树

after0.5h…
好像就是虚树啊。。。
然后以为能切
雄心壮志.jpg
于是先后想了平衡规划、树上差分、LCA、FFT、树上启发式合并(当时还没学)

after1.5h…
卧槽暴力怎么写
算了弃了

T2正解:
首先统计出每种颜色的LCA被多少种颜色经过
显然这样做不会算重,首先每个点都只有一种颜色
在这里插入图片描述
假设这是一棵树
那么经过红色部分右端点的蓝色会被算一次,但红色不会经过蓝色的右端点,所以不会算重
可以用树上差分+启发式合并来求

启发式合并:
基本可以把大部分需要维护数组树上问题由O(n2)优化到O(n logn)

首先把树轻重链剖分,然后暴力
对于每个点,递归轻儿子求答案,每递归完一个都把维护的数组清空
然后递归重儿子求答案,注意不用清空数组
最后再用普通的递归扫一遍轻儿子,并更新当前维护的数组,同时求当前点的答案
正确性显然

这样做很妙,因为直接递归一遍的时间复杂度是O(n)
每个点走到根最多走O(logn)条轻边,而每条轻边对应的子树内的点都会被统计一次
就等于每个点都会被该点到根的轻边统计一次,也就是logn次
一共有n个点,所以总复杂度为O(n logn),空间复杂度为O(n)
对比暴力统计储存时间O(n2)空间O(n2),被启发式合并完爆

求完每个LCA的颜色个数(设其为c),答案就很显然了:
a n s ( k ) = ∑ C c [ i ] k − 1 ans(k)=\sum{C_{c[i]}^{k-1}} ans(k)=Cc[i]k1
因为c[i]种颜色跟第i种颜色有交,则显然任意选择这些颜色+第i种颜色都合法
而对于一种组合,可以发现一定不会再另一种颜色中被算重,原因还是包含关系不可逆,至少会有一种颜色(当前颜色)不被包含
举个栗子:
如果当前颜色为A,A包含了B和C,因为包含关系不可逆,所以B不包含A
那么在计算B时就一定不会算到与A有关的方案,也就一定不会算重

但这样搞组合数有点虚啊
考虑优化
a n s ( k ) = ∑ C c [ i ] k − 1 ans(k)=\sum{C_{c[i]}^{k-1}} ans(k)=Cc[i]k1
a n s ( k ) = ∑ c [ i ] ! ( k − 1 ) ! ( c [ i ] − k + 1 ) ! ans(k)=\sum{\frac{c[i]!}{(k-1)!(c[i]-k+1)!}} ans(k)=(k1)!(c[i]k+1)!c[i]!
a n s ( k ) = 1 ( k − 1 ) ! ∑ c [ i ] ! ( c [ i ] − k + 1 ) ! ans(k)=\frac{1}{(k-1)!}\sum{\frac{c[i]!}{(c[i]-k+1)!}} ans(k)=(k1)!1(c[i]k+1)!c[i]!
设A[n-i]=i!,B[i]=1/i!

a n s ( k ) = 1 ( k − 1 ) ! ∑ A [ n − c [ i ] ] B [ c [ i ] − k + 1 ] ans(k)=\frac{1}{(k-1)!}\sum{A[n-c[i]]B[c[i]-k+1]} ans(k)=(k1)!1A[nc[i]]B[c[i]k+1]
c[i]可能有重,所以把次数加到A中算
可以发现这是个卷积,用FFT加速


看T3
地主斗?!
斗地主?!
去年PKUWC不是刚考过吗
(其实PKUSC2018也考了)

斗地主有六样写法,你知道么?
—孔乙吉

T3绝笔是防AK送命题
然而不会T2的我只能硬刚QWQ
于是手握3k滚粗
至今不明为何爆蛋
(两种飞机的情况太恶心了)

Day1:100+0+0=100

Day 2

上午数学考试,心态爆炸
T5居然没有想到状压
其它就是各种懵逼

中午回去就睡了15min


下午机试
T1比较鬼畜,第一档分很显然,第二档用离散化
于是就写了2h
考场上大概想到了正解,就是根据区间来数位dp但是不敢写


T2以为是简单Tarjan实际就是简单Tarjan爆肝2h爆蛋
%%%phx大佬爆踩pty1分

正解是求出每个强连通分量,之后在每个强连通分量中求点双,答案为点双个数之和
显然两两强连通分量之间不可能有公共边,两个点双之间也不可能有公共边
所以直接把强连通分量中的边转成无向边做点双


T3计算几何,看起来很难
实际画个图可以发现,如果一个点A处在△BCO中,则A一定会被包含
在这里插入图片描述
一种证明是连接AB和AC,发现把AO顺时针旋转使其与AB共线时会被圆C包含,逆时针旋转会被圆B包含
另一种比较简单的证明是连接BC
在这里插入图片描述
显然O是圆B圆C的交点,则若A在线段BC上时A会经过O以及另一个交点
可以发现只有A在直线BC于O的另一侧才有效
再随便画几个图可以发现,每次询问的答案就是加上询问点后凸包内的点

于是76pts就很显然了,每次直接暴力加点做凸包

正解好像就是每次二分找询问点与凸包的切线,要判断在凸包内的情况

BUT
我™怎么就被卡成了47pts
PKUWC不卡常

Day2:48+0+47=95
数学:10~20吧。。。

总分:100+0+0+48+0(没写暴力)+47(被卡)=195
期望得分:100+0+0+48+22+76=246
还没有考虑D2T2切掉的可能性

话说两天的机试还没有别人一天高

Day 3

居然苟进了面试
8:30第一个被面试感觉有点方
之前一直在想自我介绍以及英文版

8:28时站在门外思考,这是面试官突然走了出来
“你是第一个面试的吗?”
“啊。。是的。”
“那好,你先进来吧。”
欸还有两分钟啊。。。

于是记了4分钟的时,然后直接开始问我问题
欸自我介绍呢。。。
有点骚♂
第一个问题:北大为什么要把机会给你?
WTF这特么怎么答
195分弱鸡选手很绝望啊。。。
反正肯定不能扯到这次的成绩
乱答一气.jpg

之后又谈到信息学和文化课的区别、家庭情况、自己的缺点(?)之类的东西,感觉海星
面试完了之后,面试官说了一句:“很好!”
RP++


after1h…
终于到了第二场了…

面试官的第一个问题:搞信息竞赛的目的?
这如果谈到升学就凉了。。。
于是BB一通,感觉海星
于是画风突变,开始谈起人脸识别
一开始很懵逼,就BB了一通判断RGB之类的东西(WTF我在说什么QWQ)
后来才想起去年cqf学长说的图像识别之类的东西,开始谈到机器学习
面试官:那么你认为电脑学习的是什么呢?
我:。。。(这特么是什么问题)应该是。。。一个函数?
面试官:好的。
(话说我好像蒙对了?)
在这里插入图片描述
emmmmmm
感觉有点方
RP/=2


after1h…
第三个面试官看起来好像很nb?
上来好像先问了我两天成绩,然后问写过最长的程序是什么??
我:(如实回答)是之前写过的一个小游戏…
面试官:什么类型的游戏?
…他怕不是要上天
BB一通之后,问我现在是不是在用Pascal
我:现在在用C++
面试官:好的,那可以谈谈像C++这样的面向对象编程吗?…
我:(如实回答)还没有了解
面试官:了解有关计算机方面的新闻吗?
我:…(这能回答不吗)了解
面试官:那好,知道最新的超级计算机是什么吗?
我:…是中国的神威计算机吗?(只知道这个)
面试官:那是之前的,最新的是美国的xxx(忘了名称),有空可以了解一下这些方面的新闻
被教育了QWQ
面试官:谈谈你所了解的操作系统是什么?
我:balabala…(好像答到了一些)
面试官:大概就是接口之类的东西。谈谈编译器的作用?
我:(终于有一道会的题了)就是把程序转为exe文件balabala…
面试官:好的。


面试感觉海星?
好像有面试官问选手有没有女朋友答:让我数数


下午讲题发约
D1T3好像就是一个dp,去掉火箭和炸弹把特征值压缩一共只有600万+种状态
然后加上一些优化就过了?
难怪标程只有3k

最后如愿以偿拿了一张废约
有个初一神仙200+拿了1=
在这里插入图片描述
反正冬令营就是来玩玩的
PKU不学THU给夏令营资格差评

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值