PKUWC/WC 2024 游记

Day 0#

直接跳到正文部分。

Day 1#

早上开营仪式,下午测试。

13:00

测试开始。

t1,这是什么东西?神秘博弈论?

开头是 L 或结尾是 R 的可以直接排除,然后 RL 交替出现的序列也可以直接排除。

所以考虑所有连续段?把所有的连续段提出来之后,猜结论?是不是把连续段继续递归?

感觉很对但也不是很对的样子?不管了,先写吧。

写完以后发现所有结论均错误。这时有点慌了,先看 t2

t2 一个非常暴力的思想似乎是直接枚举笛卡尔树,考虑到 n=14 时树的个数是 26XXXX 的,不管了,直接写吧。

枚举完后,考虑每个位置的贡献,是方程组,可以高斯消元。

当我写完代码调试时……????怎么还有自由元???好,写完 11pts 暴搜跑路。

这时候很慌,t1 都还没过,还是选择看 t3

h4 时点数不超过 16,直接枚举点集然后做个 sosdp 可以做到 O(22hh),每次询问同样枚举点集,有 20pts

然后……不会了!重新看 t1,先写了区间 dp 和优化,可以做到 O(n2),然后呢?

发呆看 t1 看到测试结束。

73+11+20=104

甚至不如去年。

别人的分数都很高,130160 不等。

输了。

Day 2#

仍然看 t1

可以证明 4 必须直接贪心和 1,2,3 分别匹配,但是 3

忘了写了什么代码,发现 3 不能直接和 2 匹配,想象 1 很多的时候 3 要和 1 匹配。

所以?怎么那么多情况啊!!!

先写了个 dp,记录 1,2,3 个数,做到 O(n3)

然后思考如何处理。发现两个 1 一起匹配的时候相当于一个 2,那么我们可以把若干对 1 转化为 2,此时 1,2 只剩下两种匹配情况了。

那么很好处理,这是一个单峰函数,可以二分。

调试……二分出问题了?原来这不是严格单峰,相邻两个数可以一样。

那么三分是可以的。不对啊?直接枚举不就行了???

于是 t1 做了 2h

t2 是一个奇怪的题目,感觉像 dp,但是情况很复杂,写了个状压跑了。

t3 是一个比较常规的数据结构?先看没有弹栈操作的部分分,考虑分块,然后每个位置和块维护压栈和弹栈,这空间不会爆?不敢写,写了个主席树,发现调不出来,寄了。

第三档是吉司机,很久没写过了,完全不会写。

100+28+18=146

两天加起来刚好 250,自闭了。

别人都比我高 100 分。

Day 3#

不知道是不是前几天的伙食问题,早上起来胸口很难受,吐了。

一天都不想吃饭,没胃口,头很晕,很难受。

明天就 wc 了,不知道怎么办。

Day 4#

早上舒服了。

今天报道 + 开幕式,我比较社恐,听说是住宿,比较紧张。

第一次见到 cjh 大神,有点尴尬。听说他们三个之前与其见过很多次

下午看他们打球,和一名陌生的外省同志一起打了一会儿羽毛球。

晚上是开幕式,我永远忘不了那一幕元神。

启动!

宿舍阳台很小,跟一张小床一样大(真的。洗手池更小,都不知道这里的学生是如何经受如此虐待的。

晚上可以无限制筹集,很爽。

Day 5/6#

上午听讲座,下午听讲座,讲座内容非常逆天。简单来说是坐牢。

晚上颓废。

Day 7#

WC 测试。

t1 是正版签到,不知道出题人在想什么,历年来第一次出橙 t1,只要会 01 背包就会做。

t2 是一个区间数数题。

当我们确定了每个数的操作方式(取反/不取反)后,其实就能确定 2L 的取值范围了,并且范围是一个开区间。

合法的条件是这个范围有解。

枚举左端点,往右边扫右端点,考虑 DP。设 f[j,0/1] 表示第 j 个位置不取反/取反时区间 [i,j] 合法的最小的 2Lg[j,0/1] 则为最大。

然后直接转移做到 O(n2)

已经有 44pts,尝试看 t3

一开始想了个假做法,考虑直接树形 dp,设 f[u,0/1/2] 表示点 u 考虑子树后,不确定/不因父亲确定/因父亲确定的方案树。

然后过不了大样例,发现一个区间的和不一定必须知道其在线段树上的点的值,而是可以通过各种容斥求得。考虑容斥本质是前缀和相减,确定一个线段树上的点 [l,r) 相当于把 l,r 两点合并,计算满足有 m 对点,每对点连通的方案数。

然后发现这个假做法其实就是特殊性质的做法。

正解看起来无从下手。

思考片刻后还是看回 t2。区间个数似乎可以双指针,但是难以 check,这个 dp 似乎能用矩阵乘法的形式表示?转移都是 chkmin 和 chkmax 的形式,考虑这种形式有什么特点。

如果一个数通过一系列 chkmin/chkmax,结果如何?设这些操作中 chkmin 的最小值为 y,chkmax 的最大值为 x,若 xy,那么最终的取值

v1={xv0<xv0xv0yyv0>y

x>y,那么最终取值唯一。用一个二元组 (x,y) 表示这样的一个操作过程,若 x1x,y 与上述含义相同;若 x=1,则最终取值唯一,为 y。两个二元组可以合并,也可以取 min/max,因此直接用矩阵乘法优化就行。

双指针还要套一个线段树,不如直接分治,每次从 mid 往两边扫,维护一边的矩阵乘积,然后双指针维护即可,O(nlogn),常数比较大。

min/max 宏优化后极限数据能跑 1s 了。

t3,尝试写一下 M=1 的做法。

分类讨论,根据区间内关键点数量 0/1/2 来分别 dp,但是状态多,细节多,分讨量大,直接放弃。

剩下 20min 基本发呆了。

下午看成绩,左边的 fxt 大神直接暴砍 265pts,orz。

100+100+25=225,应该……有银了吧?

实话说 t3 这个部分分真的比较差,讲评说 M=1 直接做,但具体仍然不知道如何 dp,然后说 M5 的时候状压就行。

但我仍然不知道怎么 dp。

考都考完了,可以放心颓废了!

乒乓打得挺爽,下次还要!

Day 8#

坐牢。

想家了。

好想回佛山啊!

出处:https://www.cnblogs.com/Sktn0089/p/18014347

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Lgx_Q  阅读(368)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示