GDOI 2022 游寄

写完正文就下班了,这里啥都不写了。

Day -?

摆烂有什么好看的。

Day 0

背板,什么万欧 KM BM 全背上了,然后发现我没学过 4 次 DFT 的 MTT 就学了一发(

事实证明完全没用。

试机赛给的是去年 NOIP 的题,尝试写 T4,然后发现真的离大谱,写都没写完,当时场上直接放弃还是正确的。

Day 1

睡的一般般。

8:30 开题,先通读一遍。

这个 T1……什么玩意?

2202 还有人在省选出模拟??????¿¿¿

这个 T2 一眼没想法,不过估计应该不会太难吧……

T3 背景乐到了,然后以为是小粉兔出的(似乎不少人这么认为的

然而还是不会做。

然后回来理清了一下 T1 就开写,写的 Trie+建图 DFS。

然后一看大样例……

《大》样例是吧。

不一会就调过了,但非常不放心,再捏了几组果然有问题,大概 9:30 的时候不想干了,去开 T2。

仔细思考了一下发现可以最小值分段,树形 DP 维护多项式?插值?哦直接暴力卷应该就行。

好像还要算自然数幂和,感受了一下有挺多东西要写,先看 T3。

一上来就注意到这个性质 A 的全分和性质 B 的一半分是白送的(flag),以及状压什么是打发叫花子的。

但是这个性质 C 以及每人至少一次学术很诡异……

然后似乎想偏了,去想什么链覆盖,还没发现是假的白搞了一会。

回来冷静一下开写 T2,发现情况真的多,推起来坐大牢。

第一问稍微调了一会搞定了,加上第二问一遍过了样例???

样例值域很小,现在开始加插值。中间还写挂了一些,大概 11:30 的时候完成。

这破玩意口胡着不麻烦,写了我 4.5k 180 行。(是不是我正式比赛写过最长的代码?)

不知道为啥脑子抽了回来看 T1,发现还真 出 问 题 了。define 成空的判错了。

改了一下又捏了几组,大概 12:00 实在不想管了,挂了就挂了吧,建议出题人[下略]捏。
(幸好回来看一眼……)

只剩 1h 了?完了。上了个厕所回来。

又去看 T3,还在假做法上想了一会,12:10 发现根本不对。

然后才开始往欧拉图方面想,然后似乎会做性质 C 了?

时间不够构造方案了,试一试拿一半分。

码码码。码到 12:35,前两个样例过了,一测大样例,比答案小。

(此时并没注意到这个做法还是有分的。)

冷静了 10min 发现有个地方没考虑,然后需要上下界网络流了。

15min 写上下界网络流?

然后大概是这个世纪最愚蠢的决定:脑子一热直接开写。

写到 12:57 刚写完建图,没救了。打算改回来。

???怎么改不对了?输出 0 了?

好吧,没救回来。T3 爆零了,再见。

出来发现确实大家都做了 T1T2,然后就我一个 T3 爆零的小丑。

水群才想起来 T3 有送的普及难度 20 分。

哈哈了,退役了怎么办。

原来 T3 出题人是 Itst。题目很好,把我区分了。

T1 出题人怎么不出来透风,畏罪潜逃了是吧。

然后去睡大觉,然后大颓特颓,颓到要麻木了(

过了 v3 7dan。这明明比 v2 6dan 都水好吗!!

Day 2

睡的比昨天稍微好一点。

仍然是 8:30 开题。

看试卷第一面……T3 2GB???是不是大毒瘤???

T1 看起来像个傻逼题?(flag)

T2 不会是 WC T1 一种东西吧……死了死了。

T3……树上的数翻版?是不是区分大家做没做过树上的数(flag)

回来看 T1,想都没想就开始写。

热知识:这种长度的样例是可以放 pdf 里的。实属沾点。

然后第二个样例挂了。

冷静一下发现我写的东西完全没有道理。

接着试容斥,试不出来。

大概 9:00 才想起来有根号值域分类这种东西,搞了搞感觉应该能搞。

然后发现样例根本没有根号以上的。

这种题还要我写拍???等等,暴力怎么写……

不管了,直接开码,码了一大堆一遍过了样例?

把每个大质数类分开做改成一起做弄了个暴力。虽然这样也很容易挂但再说了。

还真拍出错了。然后发现是暴力写错了。但是幸好发现有个地方没取模。

但这样值域还是太小了,最后写了个 \(2^n\) 级别的暴力来拍,虽然跑得飞慢但也没办法了。

检查了一下取模,然后测速。

发现我复杂度写假了。(要是没测速就寄了!!!)

然后改了一改,不是很会造极限数据,最后大概 0.65s。

这时 10:00,跟昨天一样浪费一车时间,赶紧去搞 T2。

直接对括号序列做完全不知道是什么东西。建了棵树出来,发现好像能贪心搞搞?

先水了 x0y0,思考了一下 x0y1 的部分分,发现确实比较好贪。

顺便看了一眼大样例。

什么东西。样例有特殊性质咋不给个有特殊性质的部分分捏。(后来听说不全是 (),那可能好一些)

这肯定得写拍了,待会再说。

x1y0 好像不是很好搞,可能要取次大值,还要对有两个的层分类讨论?

x1y1 好像反而好搞一点,写了一会过了鬼知道多少水分的大样例。

x1y0 乱写搞过了小样例,然后写了个枚举合并哪两棵树的大爆搜开拍。只能拍 n=7,希望够用吧。

果然 x1y0 挂了。这时 11:30。

乱搞了搞又挂了,然后不是很会了……

问题就是不知道有两个的层该留下什么塞到后面……

这时 11:50,去思考了一下 T3,回忆了一下树上的数做法搬了过来,想了几个做法都不行。

先写了个阶乘爆搜。

回来看 T2,好像只可能留最小和最大?

赶紧写了,大概 12:25 写完,过拍了???

但是这个太迷幻了,感觉很虚。

(游记写到这发现,即使我这个做法假了,n=7 也非常可能拍不出。完了。)

最后来看 T3,发现我由于各种脑瘫以为不能做,反正终于有了个三次方做法,常数估计不小,而且不是很好写。

只剩 15min 了,试图给爆搜加点剪枝改成 IDA* 啥的,当然跑得过 100 才有鬼了,哈哈。

检查了下文件就走了。

出来发现还行?

(发现我一直以来都不知道同学发挥这种地方怎么写,不打算写了。)

总之还是很慌,总感觉 T1 和 T2 拍了和没拍一样。

教练给我们看了看小图灵 D1T1 和 D1T2 估分,T1 挂了。T2 挂了???

看起来像是 T2 的第二问挂了,幸好只有 3 分(

但是为啥会挂??不都大样例过了??

不管了,似乎这上面大家都挂了不少,目前来看还没挂太远。

然后回家睡大觉了,准备文化课。

游记到此结束。

写个题解,不会的就不写了,也不保证正确性。

D1T1

没人喜欢这种题,滚吧。

D1T2

假如能枚举最小值 \(x\),那么剩下每个非最小值点的取值是 \([\max(l_i,x+1),\min(r_i,x+k)]\)
发现可以用 \(l_i,r_i+1,l_i-k,r_i+1-k\) 这些将自然数划分成 \(O(n)\) 段,每一段里面取 \(x\) 的转移类似(即每个点的取值范围左右边界都可用 \(x\) 表示)。
直接维护 \(f_{u,???,???}\) 表示 \(u\) 子树内 \(u\) 开始的路径的方案数,是个关于 \(x\) 的多项式,对于一段可以 \(O(n^2)\) 统计所有路径的多项式之和,然后求自然数幂和就能 \(O(n^3)\)

D1T3

不会,这里口胡个特殊性质 C 的做法。
先判断是否能所有灌水消息都满足,因为不存在互逆对,一定是从一个人的学术消息下面引一堆楼下,上面引一堆楼上。这两部分近乎独立。
以判断楼下为例,若 \(v\) 想在 \(u\) 楼下则 \(u\)\(v\) 连一条边,设 \(c_u\) 表示 \(u\) 的学术消息数,则相当于从 \(u\)\(c_u\) 条路径,使得每条边被恰好覆盖一次。
建一个虚点 \(s\),向 \(u\)\(c_u\) 条边。设 \(in_u,out_u\)\(u\) 此时的入出度(加完虚点后)。因为路径可以任意时候结束,每个点 \(u\) 可向 \(s\) 连若干条边,然后取这张图的欧拉回路,在 \(s\) 处断开得到的路径即为方案。所以所有楼下消息都能满足当且仅当 \(in_u\ge out_u\)(出度可任意变大)。楼上消息同理。
现在考虑最大化满足的灌水消息数。相当于将一些灌水消息看做学术消息,然后变得合法。若一条 \(v\) 想在 \(u\) 楼下的消息变为学术,会使得楼下的图中 \(u\) 点出度减少一,楼上的图中 \(v\) 点入度增加 \(1\)。无论哪种都相当于让 \(out-in\) 变小了一。
现在要让每个限制都满足,建一个二分图,左边 \(n\) 个点表示楼上图每个点的限制,右边表示楼下图。源点向左部点连下界为 \(\max(0,out-in)\) 的边,右部点向汇点连边。对于 \((u,v)\) 合适连边,然后这张图的最小流即为最少不能满足的消息条数。方案也可以还原。
这个复杂度也不一定能过这个部分分。
upd:不需要上下界,实际上反过来考虑每条消息能不能不是学术消息就是普通的最大匹配。
正解做法就是注意到互逆对组起来一定不劣,于是和 C 没啥区别。
但是构造也是真的难写。

D2T1

将质数分为 \(\le \sqrt{V}\)\(>\sqrt{V}\)。前一种有 \(B=14\) 个,后一种有 \(P\sim 300\) 个。后一种称为大质数。
给出的每张卡,至多是一个大质数的倍数。按这个分类。若不为任何大质数的倍数,这些分成一类。
对于一类,里面每张卡能满足前 \(B\) 个小质数的一个子集。可以用 FMT 求出这里面覆盖了 \(S\) 这个集合的小质数的方案数。
一次询问,对于出现的大质数就要求那一类至少选一个,否则没有要求。同样将每一类方案数 FMT 乘起来即可,最后统计给出小质数的超集和。
这样复杂度还有点不对。第一个是询问前先不做逆变换,这样询问时直接点积将每一类乘起来,只用做一次 IFMT。第二个是因为对 \(\sum c_i\) 有限制,所以可以先求出所有类的点积,不要求至少选一个。每次询问将给出的大质数那一类改成有限制就行了。
时间复杂度 \(O(B2^BP+B2^BQ+2^B(\sum c_i))\),这个算出来有点大,但是我只跑了 0.65s,可能是我造的数据不够满,要暴毙了 /oh

D2T2

首先用括号建树。为方便在左右再套上一层括号,编号为 \(0\)。建树即去掉最外面一层括号并作为一个点,然后将这里面的每个合法括号序列作为子树。将左括号的权值记在那个点上。
操作二即可以交换父亲相同的两棵子树,也即儿子没有顺序。
操作一,相当于选择父亲相同的两棵相邻子树,将右边点和它的子树拆开,变成一个点和它原来的所有子树,全部依次接到左边点的儿子。操作代价就是用这两个点的点权计算。
操作二的存在,使得操作一不需要考虑相邻和左右,直接任取两棵不同子树,第二棵塞到第一棵里。
最终满足条件的树一定是从上到下一条链。
首先操作一定是从浅往深塞。因为先做浅的操作,深的操作仍然可行。
\(x=0,y=0\) 相信大家都会。
\(x=0,y=1\) 也即只算第二棵树的权值,对于一层除了留下来的一个点,都会恰好被塞到下面一次,所以贪心取这一层权值最大的留下,费用为除了最大值的和,然后将除最大值的塞到下一层接着做。
\(x=1,y=1\) 就是两棵树的权值都会算,可以发现无论选择留下哪个点,这一层费用都为和加上最小值的 \(c-2\) 倍,\(c\) 为这层点数。可以用类似 prufer 序列的东西理解。所以贪心策略仍然是将除了最大值的塞到下一层。
\(x=1,y=0\) 应该是最难的。
首先如果确定了这一层留下什么,那么费用为这个点权加上(包含这个点的)最小值的 \(c-2\) 倍。
但现在留下最大值就不是很对了,样例 2 就能卡掉。
这是因为 \(c=1\) 的层没有任何费用,所以将一个比较大的点权一直往下塞到 \(c=1\) 的层也是有用的。
首先要考虑第 \(i\) 层的 \(c\) 是什么,是原树前 \(i\) 层的点数之和 \(-i+1\)。也与具体操作留下了什么无关。
这说明,\(c\) 一定是形如一段 \(1\)(可能为空),一段 \(2\)(可能为空),一段 \(\ge 3\)(可能为空),\(2\)\(1\)
(还可以是全 \(1\),不过这个咋搞都行。)
对于所有 \(c=1\) 的层没有选择也没有费用。
对于最后一个 \(c=2\) 的层,应留下最小值且费用即为这个最小值。
若确定了这一段 \(\ge 3\) 开始时有哪些点权,那么最优操作一定是留下一个既不是最小值也不是最大值的点。因为这样能保证每一层的最小值都取到最小,且让 \(\ge 3\) 这一段里全部的最大值留到最后两层不贡献费用。
问题即在于前面的一段 \(2\),最后会留下恰好一个点到 \(\ge 3\) 的段中,费用为其它点权的和。
好像保留最小值和最大值都能被卡?
可以证明:要么保留最小值,要么保留最大值。
分两种情况。若保留下的比原来 \(\ge 3\) 的段的最大值还要大,那么原来那里面的点权贡献已经确定,与保留下了什么无关。保留下的这个点会到最后两层不贡献费用,而贡献这一段 \(2\) 里其它点权和。所以此时一定选择保留这段 \(2\) 里的最大值。
否则,现在没有贡献的是原来 \(\ge 3\) 里的最大值,而除了最小值的 \(c-2\) 倍的这一部分贡献以外,所有(包括原来非最大值的和保留下来的)均贡献恰好一次,可以发现保留下来的这一份贡献与 \(2\) 内其它点权和即为 \(2\) 内所有点权和,而剩下的即为原来 \(\ge 3\) 里非最大值的点权和,与具体保留哪个无关。
所以只需要让最小值的 \(c-2\) 倍这一部分贡献最小,直接取最小值即可。
然后可以发现 \(n=7\) 根本无法拍出这个的错。
时间复杂度 \(O(n\log n)\)

D2T3

\(O(n^3)\) 做法。建议先理解树上的数的做法。
直接搬树上的数做法,给每个点的邻边定顺序,可以有 \(3!=6\) 种顺序。
假如枚举第一次操作的边,则两边独立。令 \(f_{u,i}\) 表示 \(u\) 的子树和外面的边第一个被断掉,现在 \(u\) 上的数移动了 \(i\) 的距离,剩下的数的费用之和最小值。
完了,越想越烦,睡大觉了,忽略这一段。

Day ?

小图灵数据 70+76+0+100+100+0=346。D1T3 和 D2T3 没造。应该暂时退役失败?

学习了一下 D1T3 和 D2T3 做法。

D1T3 居然能把互逆对贪心匹配,这么厉害。

D2T3 这个状态挺有意思,我是想不到。

然后去调了调 D1T2 代码,发现三个本质相同的地方没取模,身败名裂了。

Day 4

官方这么快就发数据了?100+76+0+100+100+12=388。

D1T1 居然过了,虽然听说是小图灵造的有问题。

后面没挂分挺好。听说 D2T2 的 \(x=1,y=0\) 高达 64 分?太棒了

拿了个 D2 标准分,OI 生涯里第一次拿标准分?估计也是最后一次了。

我校进了四个?怎么就不能顶到个 1/3

zjr 一下多过两题翻上来了,膜拜队长 /bx

sz 考的好像也挺不错,但是 xwp 惨惨。

tiger2005 线外一名,挺悲哀的。

听说 gssss 文操写挂了,惨。

posted @ 2022-04-17 18:34  ATS_nantf  阅读(482)  评论(1编辑  收藏  举报