JSOI2023 游记
Day 924844031
退役前最后一场模拟赛。
T2 用 \(\mathcal O(\frac{n^4}{16 \omega})\) 冲过了 \(n = 2000\),很震撼。大概是要求一个带特殊性质的 \(0/1\) 矩阵的秩被我用线性基 bitset::_Find_first()
启发式硬搞过了。
希望省选的 RP 不要因此消失。
Day 924844032
没去学校。感觉 \(3\) 月份状态明显不如 \(2\) 月,具体表现为模拟赛前 \(10\) 的次数少了一半,于是在家不做题,尝试调整状态。不过上午还是把某场已经咕了半个月的 CF 题补掉了,写了一堆很智障的错误,果然状态不佳啊。
中午点 KFC,大概是退役前最后一个疯狂星期四了。
下午美美地睡了一觉。醒来以后有被新闻震撼到。
\(12\) 人中还得减去一个女队。除去集训队和高三,发现自己 NOIP 省内排名 rk12,校内排名 rk5。这下队线外 rk1 和校线外 rk1 全占,提前退役了。
奶一波 JS 省队,nfls \(\frac{1}{3}\),jzhx \(\frac{1}{3}\),剩下的 cz, xs 和 tx 各期望 \(1\) 个,女队大概率 rhx。而我稳坐队线 & 校线外 rk1,哈哈!😃 👍
所幸分差不大,仍有翻盘的可能。但愿如此吧,队线外的人大都这么想。
明天干啥呢?去学校用比赛的系统敲敲不太熟的板子吧。或许可以去看一看总结,回顾回顾自己模拟赛成为 🤡 的经历。/cf
江苏荣光不再了。
Day 924844033 \(\equiv\) 0
为什么拿 \(924844033\) 作为模数呢?因为它的原根是 \(5\) 而不是 \(3\) 啦!
敲了一些各种板子,一直敲到下午试机。试机写了 NTT 和 SAM,奶一口都没用。还写个线段树用来测对拍,纯属无聊。晚上翻一翻模拟赛的记录,并把某些不太常用但感觉挺重要的算法看了看。
晚上比较早就睡了。明天 RP++!
Day 1
\(7\) 点的闹钟,硬是拖到了 \(7:10\) 才起床。
\(8\) 点左右到了学校,在走廊外的窗口吹了一会儿风。
\(8:30\) 发 pdf 密码,三个传统题。T1 感觉直接跑个 bfs 啥的就行了,签到题吧,但还是耐着性子读完了 T2 和 T3 的题面。T2 看着像 tarjan,T3 似乎是用什么数据结构维护贪心,有 \(15\) 个大样例,看起来不像是 yyl 组的题。
决定先签到,发现建图是 \(\mathcal O(nm)\) 的,思考了几秒钟发现直接差分求一下并再乱搞搞就行了,\(10\) 分钟以内过了大样例。肉眼检查检查感觉没啥问题,丢掉去看 T2。
大小 \(\in \{1,2\}\) 的划分似乎是好处理的,而 \(\{i,i+1\}(i > 1)\) 的划分就必然是从割点处分开。感觉做一遍 tarjan 然后枚举方点算一下就行了?于是开始码,期待着 \(1.5h\) 做完 T2 然后留下 \(3h\) 刚 T3。没多久过了小样例,测了样例 \(2\) 发现输出是 \(2\),然而答案是 \(3\)。检查了一下代码感觉没写错的样子?于是在草稿纸上画了 \(20\) 个点的图(并意外地发现数据中有重边,虽然不影响 tarjan),这才意识到一个可行的划分不一定要从一个方点割开,于是算法整个假掉了。
接下来的半小时,我尝试修改 T2 假掉的算法,但没有任何进展。大约 \(10\) 点决定暂时放下 T2,去给 T3 打一个暴力。胡了一个子树向父亲合并的贪心,用堆启发式合并维护,看了眼部分分的表发现有高贵的 \(48\) 分!那还不赶紧写掉?于是在 \(10:30\) 之前,通过了第 \(\{x \mid x \le 8 \lor x = 11\}\) 个大样例,\(\mathcal O(nm \log^2 n)\) 开了 O2 跑的飞快。
继续瞪了眼 T3 的部分分表,发现唯一可做的似乎是性质 C,用树剖维护下 \(\min / +\) 矩阵就好了,但是只有 \(6\) 分,谁写?性质 B 的链没有想到什么复杂度正确的做法,性质 A 可能得维护每个元素在堆中存活的深度,感觉巨大难写,还是回去想 T2 更实惠。
想着先拿个 \(k=0\) 的 \(40\) 分吧,但只有大样例 \(2\) 是 \(k=0\) 且答案是个 \(\mathcal O(1)\),于是写了个 \(\mathcal O(3^nn)\) 的暴力用来对拍。\(k=0\) 直接枚举因数然后在圆方树上跑个 dp,\(\mathcal O(n \sqrt n)\),写起来很痛苦。之后的一小时基本处于写了拍,拍了挂,挂了调,调了再挂的死循环中。中间某一个版本拍到了 \(100\) 多个点,正准备开香槟然后挂了。好在 \(11:30\) 之前过了拍,至少感觉分差不至于大到离谱了。
又花了半小时想 T2 的树,但是啥思路都没有。\(12:00\) 又回头看了眼 T3,在 T2 的 \(n \le 20\) 和 T3 的性质 C 中果断选择了 T2。去洗了把脸以后准备莽个 \(\mathcal O(n^3)\),但为什么不去给暴力剪剪枝呢?于是把枚举子集改为了「枚举合法的子集」,随机数据下跑过 \(20\) 简简单单。这下不挂分勉强上 \(200\) 了,但不知道会不会有一车人过了 T2。
最后半小时,感觉也没啥别的分能写了,尝试冲 T3 的性质 C 但未果。最后 \(5\) 分钟果断弃掉性质 C 去检查了文件名以及 \(10\) 分钟写出来的 T1 了,求稳不比那 \(6\) 分重要?
估分 \(100 + 55 + 48 = 203\),希望不要挂。还没我的 APIO2022 高。
出来一问,ymx AK 了,很猛。csy 没 AK,很震撼,但仍有极高的分数。高二有两个 \(223\),并已知 wjz 过了 T2。看来还是被碾压了。
无所谓,Day 2 还能翻盘/被翻盘。
Day 2
晚上睡的不太好,\(6:30\) 左右就醒了。试机的时候感觉有点困,但不太敢睡,担心趴一会儿会导致整场精神都不太好。
\(8:30\) 准时开题,T1 数据范围只有 \(10\),一脸的直接 \(\mathcal O((nm)^3)\) 判胜负态。T2 感觉可以从集合大小 \(\le 2\) 入手,但一眼看不出什么想法。T3 很复杂的计数,一脸的不可做,大抵是防 AK 用的吧。
那就先写 T1 吧。写起来有一车细节,感觉不比什么大模拟好写,总之很痛苦。大约 \(9:10\) 写完了判胜负,求步数还没写,但 \(9:20\) 才把判胜负调对。接下来打算写个 dfs 用来算步数,但是输出一直不对,想了半天才发现 dfs 会产生环。那就不 dfs 了,想到可以直接在 bfs 里面统计步数吧,这似乎恰好是对的。于是浪费了半小时后,\(10\) 点整过了大样例,码长 7K+,近 \(200\) 行。
没心思检查 T1 了,洗把脸准备先丢一边看 T2。发现部分分给的很多,于是对着表格开始想。性质 A 直接判 -1
,跑个 dinic 二分图匹配。性质 B 中 Bob 只有两种可能的方案,那 Alice 让 \(X\) 最小的那种尽量大就行了。性质 C 把二分图匹配换成带权匹配,dinic 费用流硬上。性质 D 不会做,先放着。加上指数的暴力已经有 \(52\) 了。但是怎么会有人能忍住不写退火的?于是 \(n,m \le 200\) 的随机数据也能跑过去了。这样就有至少 \(60\) 了,那么开始写。预估 \(12\) 点之前必须写完,然而 \(11:30\) 就完工了,共计 \(341\) 行,8K+。
接下来的举动让我大受震撼。写完 T3 人人都会的 \(10\) 分后,我浪费了宝贵的 \(30\) 分钟在思考 T3 一脸不可做的各种部分分上,然而一分都没有得到。大约 \(12:15\),我回来思考 T2 的性质 D。其实看完 T2 不久我便有一个在 \(S \cap T\) 的点之间连边转图论的想法了,但并没有仔细思考下去。在思考性质 D 的过程中,我意识到合法的情况应该是一个基环树森林,这样正解就呼之欲出。然而此时已经 \(12:30\),基环树上的各类情况看起来较为复杂,我并无足够的自信能在比赛的最后半小时中思考完并码出来。同时性质 D 也并非该转化的某个比较好写的分支,如果贸然开冲可能会使得这半小时的努力化为乌有。因此我选择检查码量巨长的 T1 和 T2,不过一直到比赛结束也没有瞪出来什么细节上的错误,应该问题不大。
总之被翻掉了,且高二学长人均 \(210\)。预计不超过 \(100+60+10=170\),JS 前 \(11\) 不知道还有没有。校线?做梦去吧。
无所谓,C 类会出手。
Day 懒得算
出分。day1 没挂分,day2 T2 变成了 \(48\),似乎是错误估计了 flow 的效率以及退火退的不够好。
总分 \(100+55+48+100+48+10=361\),加上 NOIP 算是苟进了 JS 前 \(11\)。据说我这个分还能有 ZJ 队线?我不好说。
似乎挺多人 day2 T1 挂成了 \(20\) 以下,为他们默哀。
Day 还是懒得算
高贵的「1/3 受限」。