PKUWC2024 游记

报 PKUWC 不报 NOIWC,不做评价。
两天都是签到+另外两题暴力分。
D2T3 还和傻逼一样不会做。
感觉垫底了。
良好稳了!!!111

Day 0

前往重庆!
11:15 起飞(一排四个的超小飞机),14:00 到重庆。然后花了 2h 坐轻轨到酒店。
飞机上在玩臀,喜提小船 1g。我认为这是一种攒 rp。
支付宝的出行上显示的是“地铁”,但实际上轻轨上天(?)入地过江。地上的铁路也是地铁!
zj 因为踢足球被铲了脚瘸了拄拐出行,而且去的是重庆,buff 叠满。
晚上出去吃串串。
\(7\) 个人消费 \(370\),纯吃串串吃饱的那种,感觉物价很低。
晚上吃串串,PKUWC 会考串串题吗?不过最后确实没有字符串,不然像我这种 SA 都不会写的估计要完。

Day 1

酒店早餐感觉是垃圾。
刚进校门就被志愿者小妹妹拉去合影。
早上报到领了营员证。算是第一张牌子,希望不是最后一张,但大概率是最后一张了吧。/dk
开幕式。
发现前面的领导席有 xht 和 qy。直接坐到他们后面贴脸开大+试图面基。然而最后他们都没来开幕式。
开幕式内容:PKU 有实力的,拔尖计划 2.0 基地数量全国第一远超其他学校,虽然 OH 计划没有计算机类但是在暗藏了计算机的东西。
你说得对,PKU 是好学校,这个大家都知道,但是你能不能 V 我一张录取通知书。

座位在 zj 旁边,怎么让两个同校的坐一起的,这是怎么回事呢。
试机敲了个头。然后开始做试机题。
先搓了个暴力然后试图用暴力打表找系数的规律,然后发现直接矩阵乘法就好了。
还没写完就被拉去食堂了,因为 zj 走路不方便,还被志愿者小妹妹特别关照了。

食堂饭菜还行,但是你这个食堂是几乎没有蔬菜的吗?

进场考试。希望会做签到。

监考很宽松,因为是 IOI 赛制!!!
试机、Day1 结束的时候都没有清空代码。也就是说之前敲的代码之后可以继续用。而且赛前可以敲键盘,和 NOIP 前啥都不能干形成鲜明对比。
试机的时候可以带手机的,所以只要素质足够低,,,

开局先开 T1 蒙了两个错的结论 WA 了两发。
然后搞了下就想到了括号匹配,30min 过了。
做 T2。
\(n\le 80\),什么鬼。
\(11\) 分送的,直接枚举答案的所有可能。
然后开始做 \(n\le 8\),先试着枚举大小关系然后算出系数再高斯消元,感觉 \(n+1\) 个方程 \(n\) 个未知数很有前途,而且未知数还是非负整数。
交了几发都是 WA。然后火大直接写了个 \(11\) 分的暴力挂着排,然后拍出来一组告诉我方程组可以有无穷多组解。(\(f=1,1,1,1,0\))
想了很久都不会处理,\(11\) 分就 \(11\) 分吧。
然后看看 T3,发现只会暴力,那就枚举 \(S\) 算吧。\(x=1\) 的包想了好久,但是也不会。
\(100+11+40\),感觉初三来了我也是这个分。
fls T2 过了。zj 冲 T3 没冲出来,可惜了。zyq 和 mqy 和我一个分。

贴一下题目 & 部分题解。

T1

给定一个字符串 \(s\),只包含字母 L 和 R。
两个人在字符串上博弈。
选 L 字符串保留这个字符左边的部分(不含这个字母)。
选 R 字符串保留这个字符右边的部分(不含这个字母)。
如果一个人没有字符可以选(空串)那么他输了。
求是否先手必胜。
\(|s|\le 10^5\)

Sol
最左边是 L 或者 最右边是 R,显然先手必胜。
考虑如果出现 RL,那么这两个字符选了就进入必败状态。所以显然不能选。
然后就把所有的 RL 删光了。
然后你会发现这个问题继续递归下去了。如果删空了那么就是先手必败。如果出现了最左边 L 或者 最右边 R 就结束了。
所以事实上就是把 R 看做 (,L 看做 ),如果括号匹配就是先手必败,否则先手必胜。

T2

给定一个长度为 \(n-1\) 的非负整数数组 \(a_1,a_2,\cdots,a_{n-1}\)
\(d(i,j)=\min \limits_{k=i}^j a_k\)
\(f_i=\sum\limits_{j=1}^{i-1}d(j,i-1)+\sum\limits_{j=i}^{n-1}d(j,n-1)\)
给定 \(f_i\),求 \(a_i\),或者报告不存在。
\(n\le 80\)\(0\le f_i\le 10^8\)

Sol
我会 \(11\) 分暴力!

T3

考虑一个题目:
给定一个高度为 \(h\) 的满大根堆,节点依次标号为 \(1,2,3,\cdots,2^h-1\),第 \(i\) 节点的权值为 \(a_i\),保证权值两两不同,给定一个点集 \(S\)
允许进行一下操作任意次:选择一个点变成 \(0\),然后维持大根堆性质把这个点转移到叶子位置(也就是和两个儿子中较大的交换直到叶子)。
现在你需要保证集合 \(S\) 里面的点不存在零,并且最小化这个值。
注意到对于给定的 \(h,a,S\) 之后,操作完后这个大根堆的每个点上的权值是唯一的。

现在给定一个高度为 \(h\) 的满大根堆,节点依次标号为 \(1,2,3,\cdots,2^h-1\),第 \(i\) 节点的权值为 \(a_i\),保证权值两两不同。
给定集合 \(S_1,S_2\),保证这两个集合任意时刻交集是空集。
考虑以下 \(Q\) 次操作:
1 x y 往集合 \(S_x\) 中加入 \(y\)
2 x y 往集合 \(S_x\) 中删除 \(y\)
3 x y 求集合 \(S\) 满足 \(S_x \subseteq S \subseteq (S_x \cup S_y)\),并且对于堆进行上面描述的题目操作之后,满足 \(a_x=y\) 的数量。
\(h\le 18\)\(Q\le 10^5\)

Sol
我会 \(O(Q2^{|S_2|}2^hh)\) 40 分暴力!
好像是 DP 吧。

Day 2

酒店早餐就是垃圾。感觉不如门口早餐店。

早上讲高级的现代语言,什么函数式编程逻辑式编程,感觉现代语言真高级,像我这种只会 C 和一点点 C++,Python,Markdown,LaTeX 的都有点落后时代了。
中午吃完饭找人面基,换徽章。订了50个徽章就换了俩是吧。
zyq:单相送徽章给志愿者,只送女不送男。

中途遇到志愿者问我们考试时间。
“你们要考四个小时?这么长”
“感觉很短,一般考五个小时。”(参考:NOI CTT CTS NOIWC IOI 等正赛)
感觉志愿者守 4h 确实挺惨的。

下午是 Day2。
先开 T1。贪心秒了。
然后有两个地方变量名打错了 WA 了两发。能过样例真的太神奇了。
然后 T2,暴力枚举不说,考虑到第一次的每组肯定是降序的,然后就枚举每个数在哪一组的就好。然后取得了和纯暴力一样的分数。喜提 \(18\) 分!!111
发现有 \(m=2\) 的点,打个表看了下,找了找规律,发现 \(n\bmod d_1=0\) 那么肯定就一种情况。否则发现就有长度不同的两种组,发现只需要保证每一种组内都是连续的即可,组之间排序好像就一种可能,次数直接随便拎一个出来算就可以了,方案数直接排列组合秒了,\(\binom{d_1}{n\bmod d_1}\)
接着刚了很久发现 \(n\le 18\) 的包过不去。
开 T3,感觉很典啊,但是我不会做。
\(n\le 5000\) 随便过,没开 long long 调了段时间。
\(y=1\),直接拿线段树维护,因为删除删到零就不删了,所以先删后加就好啦!
没有删除的,直接扫描线,一开始以为要平衡树,后来发现直接线段树就好了,,,
三个包写三个解法,拼一起 6.8k,写吐了。
然后发发现这题用扫描线做很有前途啊。但是删除还是不大会搞。
\(100+28+55=183\)

一出来 fls 告诉我 T3 的删除直接 楼房重建 秒了。
感觉就我不会 T3。感觉大众分 \(228\)
fls Day2 AK 了。
我 良好 稳啦!!!111

贴一下题目 & 部分题解。

T1

给定一个可重集 \(S\),里面有一些一位小数。考虑三种操作:
取出集合中一个数,四舍五入放回去。
取出集合两个数字(不能取同一个数字,但是大小相同的可以),变成两个的和。
通过操作让集合最后只剩下一个数字,最大化这个数并且输出最大值。
\(n\le 10^5\)

Sol
末位 \(0\) 和整数部分直接不管,末位是 \([5,9]\) 的直接进位肯定更优。
末位是 \([1,4]\) 的考虑凑 \([5,8]\) 进位,显然尽量先拿大的,因为小的更灵活,因为总共也没几种方案所以全搜一遍就好。

T2

考虑希尔排序的过程:
首先构造一个长度递减且末位为 \(1\) 的数组 \(d\)
\(t\) 依次取 \(d\) 中每一个元素。
每次将数组下标(\([0,n-1]\))模 \(t\) 分组,每组进行插入排序。
现在给定长度为 \(m\) 的数组 \(d\),问长度为 \(n\) 的排列进行升序排序需要最多多少次交换,以及最大交换次数时排列的数量。
\(n\le 30\)\(1\le d_i,m\le 10\)

Sol
注意到对于新加入的数字,新产生的贡献之和比它小的数字在哪些位置有关,所以只需要按从小到大或者从大到小依次加入即可。状压 DP 就能 \(O(2^n\operatorname{poly}(n))\)
考虑每一组肯定是单调递减的,这样可以优化掉很多无用状态,就能过了。

T3

给定 \(n\) 个栈依次标号为 \(1,2,\cdots,n\)
考虑操作:
1 l r x y 在编号在 \([l,r]\) 内的栈中都塞入 \(x\)\(y\)
2 l r x 在编号为 \([l,r]\) 内的栈都进行 \(x\) 次弹栈操作。如果栈已经为空了则忽略。
3 x p q 查询编号为 \(x\) 的栈自底向上第 \(p\) 个到第 \(q\) 个的和。如果不存在则元素为 \(0\)
\(n,q\le 10^5\)

Sol
考虑扫描线依次处理每个栈。
线段树 pushup 如果遇到删除就再递归去找删掉了哪些,参照 楼房重建 的解法。
\(O(q\log ^2n)\)

Day3

考完了,我是旅游选手!
下午和 jy,fxt,zyq 去长江边走了一圈,大概一共走了接近 10km。
喜欢长江边。
晚上老叶来了,并且认为我说不定能拿优异,感觉有点幽默。

Day4

考虑来时坐了 2h 轻轨,于是和 jy 10:00 左右就去了。
结果乘轻轨的时候搭到了一辆特快车,1h 到了机场。13:35 起飞 10:50 到机场赢麻了。
在机场吃了中饭。
回来的飞机大了点,一排六个!估计是春运开始的原因吧。
飞机上看到很多人都放假回来了,为什么我明天还要回学校上课,怎么回事呢?

posted @ 2024-01-28 21:24  jiangtaizhe001  阅读(82)  评论(0编辑  收藏  举报