PKUSC2018游记(弃坑)

说在前面

并没有什么想说的,但是要保持格式=w=
(然而事实是,me并不知道如何把内容压到几句话里)


Day0

以为hfu不会来,所以me妈和me一块去的(然而hfu是来了的=w=
为了赶早上八点的飞机,五点过就起床了,到机场之后时间很充裕
订的海航的飞机,貌似又是A330的升级版?座位后面有小屏幕,还配有迷你手柄,然而me并没有找到游戏在哪…
另外感觉飞机餐越来越好吃了hhhh(或许是me口味太低?

十一点过下了飞机,坐地铁到宾馆,是一家emmmm用几层房子改的宾馆。前台告诉me说,房间还没打扫,不让me进去看?于是把行李寄存在前台,然后出去吔屎啦午饭。话说吉野家的蓝莓饮料,蓝莓比吸管还胖,导致吸管经常被蓝莓堵住,差评QAQ

两点过去报道,一开始想着等蔺老和wsq一起报道,就在门外傻等。直到me碰见了bs的黄老:「你怎么不进去排队喃?要排一个多小时啊,快去快去」。然后me就跑进去排队了…
排队的时候,和前后两个小伙伴闲聊,就me是D,感到gg。排队一直排到三点半才报道成功,中途听说没有试机?

于是报完名之后又坐在外面阶梯上等蔺老emmmmm。等到四点发现还没见着,打电话一问,他们已经去机房了?卧槽是谁说没有试机的?
瞎转半天终于找到机房,平时都在用win10感觉海星。然而没有管理员权限配不起_vimrc,me这个vim选手感觉很GG
就在me打算弃疗用dev的时候,panda_2134 说可以在用户名下直接创建_vimrc,试了试感觉ok(多谢救命之恩

晚上回去做了几道数学题,背了一下vim配置就睡觉了


Day1

早上去711啃了一个包子就去学校了

上午的数学笔试在一个大教室考,没电脑没计算器,考俩小时,感觉海星
发下卷子,发现上面居然要求「计算题详细过程,证明题需要完整证明步骤」,感觉不行

第一题是个分解因式,先拆开,发现可以提出 ab a − b a2b2 a 2 − b 2 ,果断拆,然后就做完了
第二题,显然是所有数相等更优(不然一个数字变大,其他数字都得变小,然后再去掉大的那个,感觉不优)。然后算计算极值,发现刚好趋于 2 2 ,嗯,稳!
第三题,直接用极坐标运算法则,这题就是个定义题了..
第四题,是[BZOJ4735]你的生命已如风中残烛,类似证明即可
第五题是论文《Jewish Problems》第四题,原题步骤再写一遍
第六题直接用 a2b2=(a+b)(ab) a 2 − b 2 = ( a + b ) ( a − b ) ,算出至少得有 2017 2017 2 2 ,所以 22017
第七题考场上看到是三角函数直接跳了,然而就是个sabi题,直接和差角公式算算就可以,答案 π4=45° π 4 = 45 °
第八题考场上没想出来,就是一个三角形面积,相似比一比就好了
第九题不会
第十题据jls说是个paper题,答案 npopcount(n) n − p o p c o u n t ( n ) ,不会

考完感觉海星啊,感觉自己pkusc还挺顺利的 flag已立

然后去食堂吃午饭,辣鸡玩意只有100块饭票,一顿就吃了一张(老师家长一起的),后面几天怕不是「要饭.jpg」
不过PKU的食堂超赞!味道很棒

下午是第一场机试
本打算到机房外面地上坐会儿,回回精神。然而当me沿着昨天的路去机房的时候,在二楼被几个哥哥堵住了,说有考试不让进= =?我们不也要考试嘛 ! ! ! me又尝试了另一个楼梯口,然而还是不让过…
最后被迫对整栋楼使用dfs,从一个角落的楼梯上去了。然而此时离考试开始已经只有15分钟了,貌似没时间睡觉了,然而me还很困

进入考场之后在桌子上趴了几分钟,喝了几口水,各种心理暗示让自己紧张一点(me在紧张的时候不会打瞌睡emmmm
然后就开始考试了。拿到题先浏览一遍,发现全是 998244353,还有一道斗地主???(内心绝望.jpg
粗略估计了一下难度,决定从前往后做题

第一眼T1感觉比较复杂,在草稿纸上简单推了推,发现居然是一个裸的组合数emmmm,有一点小细节
码码码然后1A了,这时候大概是开考一个小时左右
然后T2,数据范围比较状压,想了想发现40分很简单。然而me脑子抽了花了一个多小时没想出正解,于是决定拿部分分,敲了40+10之后去看T3,发现T3的30分很裸的数位dp,码码码调了调然后30分到手。回头再去把T2剩下的那个10分的 部分分拿了,最后100+60+30收场

一出考场发现不少人全世界都会T2,和山东的hzw讨论了下,发现正解确实很智障emmmm,me考场上没想出来就更智障了…

晚上和教练一起去未名湖走了一圈,景色很漂亮,顺便接受心理教育


Day2

Day2的安排是上午面试,下午第二场机试

早上睡到7点过,去PKU里的商店买了个三明治当早饭
然后就去面试那栋楼外面等着了


题解

Day1 T1
一个数字的排名改变,当且仅当:

  1. 它自己翻倍了,超越了前面的人
  2. 它后面的人翻倍了,超越它或与它分数相同

然后用单调指针(或者lower_bound)预处理一下,对于每个人,上面两类分别有多少,组合数计算即可

Day1 T2
首先 3n 3 n 做法是很好想的,枚举前缀最大值由数字集合 S S 构成,那么如果 S 的排列是合法的,那么该排列的任意一个前缀和不能超过 sumS s u m S ,dp一下即可。同理,把剩下的数字接在后面,要使所有的前缀和小于 sumS s u m S (一个不超过,一个小于,是为了不重复统计)。算出前后的方案数,相乘就是前缀和最大值为 S S 的方案数,累计进答案即可

那么我们发现,对于一个子集 S ,如果它要做前缀和最大值,后面的任何一个前缀和都必须小于它,假设 |S|=k | S | = k ,那么对于一个合法排列,有 ki=1a[i]j (j>k)i=1a[j]>0 ∑ i = 1 k a [ i ] − ∑ i = 1 j   ( j > k ) a [ j ] > 0 ,也就是说,在接上后面那一段的时候,后面那一段需要始终满足任意一个前缀和小于0,这个我们显然可以预处理。对于前缀也是差不多的,需要满足任意一个后缀和小于0。
预处理完之后,再枚举前缀和计算贡献即可,复杂度 n2n n ∗ 2 n
(其实这个东西me在考场上发现了,然而没意识到它可以预处理

Day1 T3
对于一张牌最多出现两次的情况,其所有可能出牌方式,等价于所有牌全部单出。
然后写一个dp搞搞就好了,期望得分 30 分

对于一张牌最多出现三次的情况,可能出现 三带一/二。一个显然的贪心:自己的牌一定是带大的,队友的牌一定是带小的。然后先把 三张三张 的枚举出来,然后贪心带牌,剩下的使用类似dp计算即可。(据说三张的方案数很少,因为一共17张牌,最多只会出现四个三张的(并不会出现五个三张,带不了牌的三张等于单出),然后就是 14i=11i=24024 ∏ i = 11 14 i = 24024 ,可以过)

然后四张牌的类似,可能出现 四带一/二。贪心策略同上,搜索策略同上,根据队友牌,预处理带牌的方案(四张的,三张的,散的),据说总方案数不会超过 200w,需要优化常数,然后就可过了???

注意为了去重,可能需要hash。显然可以使用一个 5 5 进制hash,注意到hash的 10 进制数字不会很大,可以直接开一个巨大的bitset判断,据说快哈希表10倍 jls666

上面就是大概方法了,细节me没有去想,反正考场上me是不会写这种鬼题的

Day2 T1
我们观察一下这个最短路如何构造
首先,一定不会出现先向左跳,然后再向右跳的情况。这样不如一出发就向右跳
所以最短路一定是,先向右跳,然后向左一直跳。并且一个点到它前面的点的最短距离,是一段一段连续的区间(从当前点,往前一段区间的最短路是1,再往前一段是2…)。

所以我们可以得到一个比较暴力的做法:
对于每个点,计算其向前跳的距离分割点。把 i1 i − 1 i i 分割点记作 ci,那么 c1 c 1 肯定是当前点的 left l e f t ,之后的分割点就是 min{leftj}  j[ci1,n] min { l e f t j }     j ∈ [ c i − 1 , n ] ,不难证明其正确性。(为什么是后缀min呢?是这样的:如果一个点的 left 比 u 还大,那显然没有什么卵用。如果一个点的 left 比 u 小,那么 u 一定向那个点连了边,于是第一步先跳到那个点,第二步跳到 leftj l e f t j 即可)。
然后求一遍前缀和,询问 Θ(1) Θ ( 1 ) 回答。这样就可以获得 70 分的好成绩

然后我们发现,因为决策固定,跳走之后就是子问题,所以上面那个东西就是一棵树。然后对于每次询问,就变成了维护一个树上区间和的形式。因为一步和两步的决策所属子树可能不同,所以我们只能建一颗「两步树」,一条边就跳两步。对于奇数步的情况需要特判。大概是这样吧?感觉这样就可以做了,复杂度一个 log log

Day2 T2
首先,如果说border的长度不超过串长一半,直接跑FFT通配即可(然后就凉了)

我们可以把border看成把串位移一下然后匹配
然后我们看一下这个题的部分分,产生了一种新的思路:如果说有两个位置 i,j i , j ai=1,aj=0 a i = 1 , a j = 0 ,那么位移差为 |ij| | i − j | 的因数的匹配都不行。那么我们只需要用FFT处理 出现过哪些 |ij| | i − j | 即可

构造 Ai=[si=1] A i = [ s i = 1 ] Bi=[sn1i=0] B i = [ s n − 1 − i = 0 ] (下标均从 0 0 开始)
C=A×B,若 Ci0 C i ≠ 0 ,说明位移差 n1i n − 1 − i 不可行
最后我们更新一遍被ban掉的位移差即可(枚举倍数,复杂度调和级数)
时间复杂度 nlog2n n log 2 ⁡ n 带大常数

(这题挺妙妙的,然而me直接拿着FFT优化me的暴力去了

Day2 T3
和的期望 = 期望的和
不妨把凸多边形转动,看成点在转动
然后问题变成了求一个圆和多边形的交点,以及弧度和

圆和多边形的交点,就拆分成每条直线和圆的交点。可以用解析几何算,也可以使用「转动法」(参考胡伟栋2015WC)。完了之后把点按照极角排个序,那么相邻点之间的圆弧,要么都在圆内要么都在圆外(画图可以发现这是显然的)。然后对于每个圆弧,取中间的一个点算一算它在不在圆内即可。最后由弧长算角度(初中知识),累计即可。注意需要特判原点

(说的倒是简单,然而码不出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值