Logo __vector__ 的博客

博客

标签
暂无

P3455 题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-01-08 11:31:10

首先假设 $a \le b$。

求 $\sum\limits_{x \in [1,a]}\sum\limits_{y \in [1,b]} [(x,y)=d]$。

转化为:$ \sum\limits_{x=1}^{\lfloor \frac{a}{d}\rfloor}\sum\limits_{y=1}^{\lfloor \frac{b}{d}\rfloor}[(x,y)=1]$
$= \sum\limits_{x=1}^{\lfloor \frac{a}{d}\rfloor}\sum\limits_{y=1}^{\lfloor \frac{b}{d}\rfloor}\sum\limits_{k|(x,y)}\mu(k)$。
$= \sum\limits_{k=1}^{\lfloor \frac{a}{d}\rfloor}\mu(k) \lfloor \frac{a}{dk}\rfloor\lfloor\frac{b}{dk}\rfloor$。

整除分块。

P1829 题解

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2025-01-08 14:24:40

本题我由于莫反不熟练,看了题解。

假设 $n \le m$。
求 $\sum\limits_{i=1}^n\sum\limits_{j=1}^m lcm(i,j)$。

转化:
$\sum\limits_{i=1}^n\sum\limits_{j=1}^m \frac{ij}{(i,j)}$
$=\sum\limits_{d=1}^n d\sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor} \sum\limits_{j=1}^{\lfloor \frac{m}{d}\rfloor} ij[(i,j)=1]$。
$=\sum\limits_{d=1}^n d \sum\limits_{i=1}^{\lfloor \frac{n}{d}\rfloor} \sum\limits_{j=1}^{\lfloor \frac{m}{d}\rfloor} \sum\limits_{k|(i,j)}\mu(k)\cdot ij$
设 $S(n,m) = \sum\limits_{i=1}^n\sum\limits_{j=1}^m \sum\limits_{k|(i,j)}\mu(k)\cdot ij$。
则原答案变为 $\sum\limits_{d=1}^n S(\lfloor \frac{n}{d}\rfloor,\lfloor \frac{m}{d}\rfloor)$。
考虑如何求出 $S(n,m)$。
$S(n,m) = \sum\limits_{k=1}^n\mu(k)k^2 \sum\limits_{i=1}^{\lfloor \frac{n}{d} \rfloor}\sum\limits_{j=1}^{\lfloor \frac{m}{d} \rfloor} ij$。

设 $T(n,m) = \sum\limits_{i=1}^{n}\sum\limits_{j=1}^m ij$。

则 $S(n,m) = \sum\limits_{k=1}^n \mu(k)S(\lfloor\frac{n}{d}\rfloor,\lfloor \frac{m}{d} \rfloor)$。

不难发现 $S(n,m)$ 可以在 $O(\sqrt n)$ 时间内整除分块解决。

同样, $\sum\limits_{d=1}^n S(\lfloor \frac{n}{d}\rfloor,\lfloor \frac{m}{d} \rfloor)$ 也可以用整除分块 $O(\sqrt n)$ 解决。

最后复杂度 $O(\sqrt n\cdot \sqrt n)=O(n)$。

test

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-22 10:50:48

I want to have a test!
For example,Garry_HJR is called xixi.

It seems that the new blog is amazing!

我想测试一下。

比如说,Garry_HJR 叫 xixi。

看起来新的博客不错!

Pinely Round 4 (Div.1+Div.2) 个人记录

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-07-30 00:20:01

A

显然只有奇数位置可以保留,取最大值就可以。

B

对于 $1 \le \forall i \le n$,$a_i$ 都包含 $b_{i-1} | b_{i}$ 的所有 $1$。另外,容易证明,再增加其他位作为 $1$ 没有任何好处,所以,$a_i = b_{i-1} | b_{i}$。

C

容易发现,每次选定一个 $x$,每个数都会变为其与 $x$ 的距离。
另外,如果 $x$ 是偶数,那么操作之后所有的数的奇偶均不变,反之所有数的奇偶均变化。
也就是说如果一开始所有数奇偶不是完全一致,那么无解。
反之,根据 $40$ 的操作次数限制,容易想到每次将某个东西折半。
再考虑到操作的本质,容易发现每次操作都可以通过选择 $x=\frac{\min(a)+\max(a)}{2}$ 将 $a$ 的极差除以 $2$,最后显然能在 $40$ 步内出结果。

D

观察样例,发现 $n=6$ 时答案是 $4$,后面就不给了。
作出一个猜想:对于 $n \gt 6$,答案一定都是 $4$。
考虑构造一组可行方案,此时,考虑到偶数只有 $2$ 是质数,那么是否能让所有相同的位置异或和是偶数呢?
再考虑到有 $4$ 种颜色,或许是 $1,2,3,4$ 交替?
现在只需要证明假设位置从 $0$ 编号,模 $4$ 同余的所有位置的编号异或和不是 $2$,而这个简单观察下其二进制构成就 ok 了。

E

容易想到对于 Alice 来说,始终选择 $(1,2)$ 是最优解(并不会证明),也就是说整张图只有两种颜色。
所以说,判断 Bob 是否获胜只需要判断图是否为二分图。
如果不是二分图,那么 Alice 获胜。
此时交互选择 Alice,然后反复输出 1 2 就可以。
否则 Bob 获胜,记录填 $1$ 的点集合,填 $2$ 的点集合。
然后,开始交互,选择 Bob。
对于每次 Alice 给出的选择 $(a,b)$,有以下情况:

  1. 可以选择 $1$,并且选 $1$ 的点集还有剩余用来配对。此时颜色选 $1$ 就行。
  2. 可以选择 $2$,并且选 $2$ 的点集还有剩余用来配对。此时颜色选 $2$ 就行。
  3. 此时,$(a,b)$ 肯定至少有一个是 $3$,并且另一个数所属的集合已经填满,此时应当以选择 $3$ 并将其加入没填满的集合。

显然总是能构造出解的。

值得一提的是,2sat 需要注意加边是否加完。
这道题值得注意的点在于想到如果正确的分配 Alice 的方案,突破口在于直接相关的信息。

F

设 $b = sort(a[l \cdots r])$。
此时,对于任意 $1 \le i \lt j \lt k \le |b|$,合法当且仅当 $b_i + b_j \gt b_k$。
这时候就发现一个问题,长度为 $K$ 的区间不合法,随着 $K$ 增加,$b_K$ 的增长速度一定不慢于斐波那契额数列,而后者增长速度是 $O(2^n)$。
这就意味着大约在 $|b| \ge 50$ 的时候一定有解。
那么现在考虑如何处理 $|b| \lt 50$ 的情况。
容易证明以下两个结论:

  1. 只有两种情况:不存在两条分别来自两个三角形的小棒的编号相邻;两个三角形的编号是 $6$ 个连续整数;
  2. 当不存在两条分别来自两个三角形的小棒的编号相邻时,组成两个三角形的小棒的编号分别是 $3$ 个连续整数(最优情况)。

然后枚举就 ok 了

Codeforces Round 966 (Div. 3) 记录

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-15 12:50:31

本场失误

赛时只过了 A-F,G 题题目太长直接跳过,H 题写完了正解,忘了判断长度为 $0$ ,就差几分钟。

赛后做 G 猜了个结论看着没错,写了个二分直接过了,H 判了下长度为 $0$ 就过了。

丢了 G,H perf 还能苟到 2000+ 是我没想到的,小号 $1242 \rightarrow 1561$。

A

注意到满足以下几个条件才是重要数字:

  1. 长度一定大于等于 $3$。

  2. 前两个数字分别是 $1,0$。

  3. 第三个数字大于等于 $2$,或者第三个数字等于 $1$ 且总长度大于等于 $4$。

B

模拟就可以了。

C

本质上 $s$ 作为模板,决定了哪些位置上的数是同一类,哪些位置上的数不是同一类。

那么,现在使用一个算法,对每个位置上的数,编号其所属的类。

考虑从前到后扫描,设当前有 $x$ 个种类,如果当前字符之前出现过,那就与之前那个字符归于同一类,否则就新建一个 $x+1$ 种类。

明显,如果 $s$ 与 $t$ 匹配,那么 $s,t$ 按照上述算法,每一个位置所属的类别都是相同的,反之一定是不同的。

D

本题最大的坑点在于一个数可以选多次,我赛时是看到公告才注意到这一点。

容易发现,第一个 L 之前和最后一个 R 之后的数字都不能被选择。

从这里入手,容易证明第一个 L 应当与最后一个 R 匹配。

然后,设其位置分别是 $l,r$,那么问题转化为了 $[l+1,r-1]$ 区间的子问题。用相同做法就可以。

E

由于 $n\cdot m \le 2\cdot 10^5$,本题只需要枚举每个位置,计算其被多少 $k\times k$ 矩形包含。

然后贪心选择。

F

考虑到各个矩阵互不影响,且事实上只关心每个矩阵贡献为 $i$ 时的代价 $c_i$ 。

考虑对每个矩阵预处理贡献对应的代价。

$dp_{i,j}$ 代表当前矩阵涂满了 $i$ 行 $j$ 列的最小代价。

  1. $dp_{i,j} \leftarrow dp_{i-1,j}+\max\{0,b-j\}$
  2. $dp_{i,j} \leftarrow dp_{i,j-1}+\max\{0,a-i\}$

对于 $c_i$ :

$c_i \leftarrow \min\limits_{j=0}^{i}\{dp_{j,i-j}\}$

现在要求总贡献 $k$ ,求最小代价,背包就可以。

G

容易发现答案具有单调性,并且容易证明对于任意一个点,都应该尽可能早到达(换句话说,不存在一种情况,使得晚到达一个节点反而会使最终到达时间提前)

二分,跑 dijkstra 就可以了。

我的理解是,假设一个节点在 $x,y$ 时刻到达,$x \gt y$ ,且 $x$ 时刻到达的答案更优,那么 $y$ 时刻可以原地等待到 $x$ 时刻,取得同样优秀的答案。

H

注意到长度为 $k$ 的段是包含在长度为 $k+1,k+2,\cdots $ 的段的。

由于本题中 $k$ 的上限是 $2 \cdot 10^6$,超过 $2 \cdot 10^6 $ 的长度可以直接当作 $2 \cdot 10^6$ 来处理。

每次操作,相当于删除一个或两个段,加入一个或两个段。

每次查询,相当于在长度为 $[k,2\cdot 10^6]$ 的段里找最小左端点。

整理一下,发现需要支持的操作是这些:

  1. 给定 $1 \le x,y \le 2\cdot 10^6,$ 在第 $x$ 个位置插入一个数字 $y$。
  2. 给定 $1 \le x,y \le 2\cdot 10^6$,在第 $x$ 个位置删除一个数字 $y$。
  3. 给定 $l$ ,查询 $l$ 开头的后缀的所有集合的最小值。如果没有数字就输出 2000001。

开个 $2 \cdot 10^6$ 的线段树,$2 \cdot 10^5$ 次查询是稳过的。

百度之星2024-决赛游记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-17 21:41:07

Day -1e18

初赛第一场,rk240+,没过。

Day -1e18+114

初赛第二场,rk250+,没过。

Day -1e18+514

初赛第三场,all in E 题失败,rk300+,没过。

Day -1e18+1919810

第一场又递补过了。

不过据 HJR 神仙说,去年赛场很暗,得提前准备台灯。

Day -2

打 CF EDU,46min ABCD;E 题最后十几分钟想起来有个东西叫 SG 函数,最快手速写完,最后 wa on #3。

Day -1

从南京出发,高铁上本来想写会题,然而太困了,就睡了 4h。

路上看着乡村和城市飞速的闪过,不知不觉过了 $1000km$+ 。

这次地点应该是很偏僻的地方(符合我对百度的认知),路上的景物啥印象没有。

酒店大厅报到处领到了衣服和参赛证,还有一个 “怎么还错” 的贴纸。

值得一提的是,房间号是 $2 ^{10} \cdot 10^2$ 。

酒店形状是环形中空。

过了会去热身赛。

赛场背景音很有节奏感,好评。并没有预期的昏暗,好评。

E32,我旁边是两个小学生,真的好卷啊。

逛了一圈,发现了 cxm,zak,qzx,pt,chb,cfz(存疑),zxx,wmh 等巨佬的座位。

开了电脑,发现似乎没有 WIFI,于是连了热点(忘了还要测试网线)。

这时看到了 @_Ad_Astra_ 的私信,问我座位号,于是成功面到了这位巨佬。

本来想找他拍照,但是深度社恐,所以我只是偷拍了一张他的。

随后面到了 pt,byr,syz 等巨佬,还白嫖了一个 syz 的徽章。

然后就是开始热身赛。

看了眼 T1,嗯,裸的 dp 题,秒了,用了 12min 写完,自信提交,一发 AC。

T2 似乎不是很好做,我略微模拟了一下,发现似乎之只要对行的限制满足,那么列也一定满足,反之亦然。

然后只需要枚举第一行多少个黑色,解个方程,再预处理阶乘逆元就可以做到 $O(n)$ 。

这题写的时候没注意细节,第一发忘乘了第一行不同排列方案数,第二发下标出现负数。

47min 时以两个罚时通过 T2。

T3 看了一眼感觉不可做,跑路找别人聊天去了。

结果 T3 才是真正的签到,傻眼了。

之后的抽奖显然是没中的。

Day 1

早上吃饭,自助的。

趁着没什么人去借了网线转接,测试着没啥问题,就没管了。

为了保险,这次最后还是决定不预先存板子。

比赛开始倒计时一结束,我用了 1min 写完板子。

T1 看起来是个真正的签到,注意到状态虽然看起来 2e9 多个,但实际上根本跑不满。

写了状压 dp,结果 wa 了两发,发现是漏了种情况,补上之后过了。

T2 看完感觉不像是难题,主要是怎么简单的完成操作,我也 1 年没写高精度乘法了。

想了想,既然是二进制形式的数,那么只有位移操作和加法操作是不是更方便呢?

然后,容易注意到 $21 = 2^4 + 2^2 + 1$,也就是说将原数每一位左移 $4,2,0$ 位的结果加起来就是最后结果。

然后写完一发通过了。

T3 是个 bfs 板子,忘了可以走到 1000+ 位置吃了一个罚时。

T4 想了会,感觉不是我能做的,扔了。

T5 我误以为是多次询问,想了想也扔了。

T6 读完题就会做了,正反各计算一遍上升子序列数量就可以了。直接过了。

T7 读完题第一感觉是个树上板子,每次贪心选择受益最大的修补。

并且由于每次将损坏程度除以 $2$,实际只会进行 $O(n \log n)$ 次修补。

由于很久没写 lca,树上差分之类的,这题用时稍微多了点,还吃了一个罚时。

随后就是看完了后面所有题,发现自己什么也不会。

返回去做 T4,又被创死了。

接着就是发现 T5 读错题了,重新想做法,然后卡死在第三问。

我尝试了各种随机思路,均以失败告终,吃了二十几发罚时。

看着飞速流逝的倒计时,准备好了这场只有绿气球。

然后,我换了个思路,即每个人为左端点的区间必然有一个右端点,使得超过这个右端点的人均不能在同一排。

贪心的考虑,假设确定了从第 $i$ 个人开始向右选择加入合照的人,那么第 $i$ 个人所在的排一定会尽可能多的向后选择,而最多选择到哪里是可以二分求解的。

对每个数都这样预处理,计算下一排跳到谁开始的区间。

然后由于最多跳 $k$ 个区间,倍增预处理就可以做到 $O(n \log n)$ 。

写了写过了样例,然后全 wa。

这时候旁边的小学生不知道为什么玩起了气球,还不停的用手捏,给我吓得不轻,我最怕的气球爆炸的声音。

过了 10min 左右终于来了志愿者阻止了。

然后很快我改好了 bug,还剩十几分钟的时候换成了蓝气球。

最后,过题 1,2,3,5,6,7,打铁了。

pt 7 题,chb,cxm 8 题,都太强了 %%%%%%%%%。

Codeforces Round 836 (Div. 2) solution

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-22 16:34:22

A

正着来一遍,再倒着来一遍。

B

$n$ 是奇数:所有数字都相同就可以。

$n$ 是偶数:考虑最简单的 $n=2$ 的情况,此时答案是 $2,6$,然后,考虑偶数个数字异或和为 $0$,那么只需要前 $n-2$ 个填 $3$,最后两个填 $2,6$ 就可以。

C

坑点:直接匹配是错误的。

考虑从弱化版入手,不考虑 $a_1 = x$ 的限制。

那么对于 $i \in [2,n-1]$,$a_i = i$。

那么考虑现在的问题,对 $[2,n-1]$ 分配数字。

$[2,n-1]$ 可选的数字原来是 $2,3,\cdots,n-1$,加上 $a_1 = x$ 的限制后,可选数字失去了 $x$,加入了 $n$。

也就是说,如果其他位置保持不变,那么现在 $a_x = n$。

作一个猜测:有解当且仅当 $x | n$。

首先,$x$ 能整除 $n$ 时显然有解。

如果不能整除的话, $x$ 就需要其倍数去递补,但最后总有一个数不可递补。

如果有解,简单的设置 $a_x = n$ 可能不是最优的。

考虑 $x$ 与其最近的,能整除 $n$ 且是 $x$ 倍数的位置进行交换,反复进行,直到不存在可交换的小于 $n$ 的位置。

维护这个操作,只需要每次交换时计算 $\frac{n}{x}$,求这个东西的最小质因数 $y$,然后 $x$ 与 $xy$ 交换就可以。

每个数的最小质因数可以用筛素数同样原理的方法求出来。

D

如果数列最小值,最大值已经确定,那么设数列能得到的出来的最小总和为 $x$,最大总和为 $y$,那么这个序列能表示出 $[x,y]$ 之间的所有总和。

根据上述,如果固定了极差,那么可以二分求合法的数列最小值。

猜个结论,只要极差够大,一定能存在一组合法解。

这里取极差为 $5n$,实测可以通过。

Codeforces Round 722 (Div. 2) ABCD 记录

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-23 14:11:39

A

容易注意到,将 $a$ 升序排序后,相同值作为一整块,那么每一块选择自己整块加上前面块的其中一个元素,这样是最优的。

最后只有最小值不能被删除。

B

容易注意到,最多选择一个大于 $0$ 的元素。

另外,如果选择的最大元素小于等于 $0$,那么所有非正数都可以选择。

现在只需要枚举哪个元素是唯一的正数(当然也可以没有正数)

C

考虑子树选完了,自己该怎么选。

(不一定)容易注意到,只有 $l_u,r_u$ 是可能选择的。

D

考虑 $f(n)$ 代表 $n$ 个点的答案。

考虑第一个点与哪个数匹配,设其为 $r$。

容易注意到,除了在 $[1,r]$ 里面的,所有线段长度都必须等于 $r$ 。

另外,比 $[1,r]$ 长度小的线段只能在 $[n-r+1,r]$ 内部。

容易得到 $[n-r+1,r]$ 不为 $0$ 对应的 $r$ 是一个区间。

另外,另一个结论:

$ 轴有 $n$ 个不同的端点,从左到右编号从 $1$ 到 $n$,$n$ 是偶数。

假设一个整数 $d$,那么两个端点可以配对当且仅当其编号差为 $d$。

一个 $d$ 是好的当且仅当所有端点都可以被配对。

结论:$d$ 是好的当且仅当 $(2d-2) | n$。

Codeforces Round #968 ABCD1D2 简单记录

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-08-26 02:07:22

赛时只过了 A,B,C,D1,D2 一个细节写挂了没过,非常遗憾。

A

容易发现 $s_1 = s_n$ ,那么一定无解,反之可以构造 $k=2$ 有解。

B

通过一些(感觉?)得出答案与数组顺序无关。

数组排序后第 $\lfloor \frac{n}{2}\rfloor + 1$ 个元素一定不会可以被保留。

可以略加模拟加以验证,感性理解差不多可以。

严格数学证明不会。

C

贪心方向:尽可能让所有相邻数不同。

一个可行解:

int cnt[26];
void solve(int id_of_test){
	scanf("%d",&n);
    scanf("%s",s+1);
    FOR(i,1,n){
        cnt[s[i]-'a']++;
    }
    vi rem;
    FOR(i,0,25){
        if(cnt[i])rem.eb(i);
    }
    while(!rem.empty()){
        for(int& id:rem){
            cnt[id]--;
            pc(id+'a');
        }
        vi nw;
        for(int id:rem){
            if(cnt[id]){
                nw.eb(id);
            }
        }
        rem=nw;
    }
    pln;
}

D1

注意到同一个序列操作最大能得到的值是次小未出现的非负数。

对于初始值 $x$,注意到在同一个序列操作两次,就能得到本序列操作最大值。

也就是说,对于任意 $x$,操作能得到的最大值其实是所有序列能操作得到的最大值,当然也可以不操作。

D2

注意到,设同一个序列的最小未出现的非负数为 $mex$,次小未出现的非负数为 $semex$。

那么,假设对当前序列操作的初始值为 $x$,若 $x = mex$,那么操作完成后,$x$ 变为 $semex$,否则,$x$ 变为 $mex$。

也就是说,$x$ 作为初始值可以变换为 $semex$ 。

考虑以此关系建边。

从 $semex$ 连一条单向边到 $mex$,代表 $semex$ 可以从 $mex$ 操作得到。

对每个序列这样建图,注意到这个图是一个 DAG,用拓扑排序就可以求解每个数能操作跳转到的最大的值,设 $x$ 能最多操作到 $f_x$(目前只考虑从 $semex$ 输出 $mex$)。

另外注意到,对于同一个序列的任意 $x \neq mex$,输入 $x$ 都会输出 $mex$。这意味着如果有两个序列的 $mex$ 是相同的,那么可以先操作得到其中一个的 $semex$,然后继续跳转到 $f_{semex}$。

另外一个坑点:每个数 $x$,其操作后的最小值有所有序列的最大 $mex$ 保底,但是不判断这个也能过样例,赛时死在了这里。

CSP-S2024 游记

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2024-09-22 01:49:34

SD OIer。
记录一下参赛经历,以及教训。

赛前闲话

这次赛前只想拿到 7 级钩,弥补去年的遗憾(然而大概率失败了)。

佩服想要冲省队的同学,我也想,但是我觉得我远远没有那个实力。

如果运气好的话,或许会尝试一波更高层次比赛?

不过,我两年前就拿到了 NOIP 省一,再拿个省一确实没啥用。

Day -?

南京日常刷题。

顺便通过了 GESP 8 级,免除了 2025 及以后的初赛。

然而由于 9 月考试错过申请衔接时间,只能回去考初赛,SD-S3099。

Day -1

wjr 由于错过 GESP 8 级申请时间,和我们一起回去考初赛。

高铁上坐 wjr 旁边,他在看一些好像是动画的东西,我看了会初赛,也开始摆烂。

lichess.io 玩国际象棋,尝试解残局,然而二十几个只对了 3 个。

得到了 wjr 妈妈的水果,酸奶啥的,拜谢。

晚上回了 WFYZ,又去熟悉的场地打羽毛球。

几个月没打羽毛球,水平下降严重。

食堂的饭还是和以前一样好吃。

晚上打 CF。

被 C 卡了一整场,悲。

Day 1 - 初赛

上午 11 点起床,发现 CF 掉了 107 分,悲。

去吾悦广场吃了顿麦当劳,然后就去一中考点了。

听说今年是潍坊首次全市统一考试,我想着,按照平时在一中的排名,应该是稳过的,不怎么紧张。

考点没有找到 wjr 大佬,然后等到了没带卡的 fjy 大佬,就刷卡先去了振宁楼机房。

由于没带电脑,就看着旁边的人颓废。

考点在隆平楼,平时另外四科竞赛的上课地点。

认识的人里面好像就我在 2 考场。

值得一提的是,本次规则禁止把手机放包里。

感觉考试形式和平时的期末差不多。 有广播提示,只不过广播什么算作弊的时候比较困,就睡了会。

发下试卷后,看了眼前几题,都会,看了下试卷结构,和平时模拟的一样。

先做前 15 题,前 15 题都是水题,做完发现只过去了 15 分钟,未曾设想的顺风。

然后接下来就是破防的时刻了。

阅读程序第一题看见一堆位运算有点慌了,暗示自己其实那些东西无关紧要。

往下看,看到了一个 “generate" 字眼,果然是随机数生成器。

扫了一眼 recursion 函数,看上去好像是归并排序。

仔细看,发现这玩意好像是快排,但是 depth 是干啥的没整明白。

没想明白,就去看选项。

第一题看上去是对的。第二题居然要计算 logic 函数,成功打脸了我。

这说明 logic 绝不是什么乱糟糟的随机数生成器。

下面果然考到了 logic 的功能。分类讨论之后 19 题选了 B。

20 题直接弃疗了,算不出任何结果。

到这个时候,心态出了一些问题了,平时能速通的阅读程序,这次居然第一大题就有不会的。

随后看第二大题。

发现有两个 solve 函数,然后,我发现这两个好像都是计算二进制数 $s$ 的 $n$ 位里面选最多 $m$ 位, 选择的所有可能的总和加起来的结果。

但是,我反复读了很多遍,也没找出来其中哪个有问题,可是选项明确说了这两个结果会不一样。

而接下来 4 个选项全部依赖两个函数的差别,可是我盯了很久也没盯出来两个函数的差别,遗憾弃疗。

这个时候心态已经崩了,只剩 1h 了,阅读程序的两个大题和全部的完善程序都没有做。

但是抬头扫了一眼考场,发现前面的人多数在发呆,就我一直在动笔,就给了自己点心理暗示,所有人都不会。

这个时候,我猜测本次的阅读程序就是很难,唯一的破局方法就是跳过阅读程序,解决完善程序。

所以,我快速读了一遍阅读程序第三大题,把其中的送分题(27,28,29,30 )解决了,直接跳去完善程序。

相当意外的是,完善程序第一大题极为简单,做了大概 5 分钟就做完了。

只是有点疑惑,为什么全选 A?

看第二大题,次短路,刚好我会这个东西。

但是 CCF 的解决方案和我见过的咋完全不一样啊?

大概根据变量名猜测了一些含义,然后大概就倒推出了作者的思路。

然后,我就根据倒推的思路解决了整道大题。

就是,还是非常疑惑,这道大题也选了一堆 A。

如果没啥问题,好像 ak 了完善程序?终于能回去做阅读程序了。

重新读了阅读第三大题的代码,发现这玩意似乎是个类似于树哈希的东西,但是树节点的权值取决于节点编号是否为质数,算了算解决了 31 题。32 题看上去很难做,扔了。

回去写了写阅读第二大题,但也只解决了 22,23,剩下的无能为力了。

出考场就冲出了校门,不想听到任何有关初赛的讨论。

然而还是看了几道题,发现完善程序好像能 ak?

洛谷上犇犇看了一圈,吓坏了,S 组人均 90+。

但是我感觉这场我就是 60 分左右的发挥水平。

不管那么多,最后还是查到了成绩,81, 超出预期。

可能是吃太多了,打 ABC 的时候全程呕吐的感觉,结果成功打出了 1600- perf。

WFYZ 参赛 22 人,初步入围 16 人,感觉很惨烈。

初赛返程

值得一提的是,返程之前在 wjr 家看到了他家的鹦鹉。

这个鹦鹉还自己爬到我肩上,在我耳边嘀咕着什么,偶尔能听到一些人话,比如 “吃饭”。

初赛与复赛之间的一些事

按照时间顺序的话:

  1. 公示初赛晋级线,我比较熟悉的同学里面只有 1 个文化课为主的没有晋级。

  2. vp CF Div.2 首次做出 5 题,perf 2200+,虽然不是现场赛,不过给了我巨大的信心。

  3. 重做去年 CSP-S,补了 T1,T3。

    去年赛时 T1 调了一整场没过大样例,T3 60 挂成 0,这次我不看题解解决这两题,算是打破了心里阴影。

  4. 打 CF Div.2,结果血崩,只做出了 ABE,而 wjr 巨佬 AK 了。

  5. 晚上 CF 11:35 开始,被 cloudflare 卡死了。

    过了半个点看到题,然后想出了 ABCDE。第二天写了,都过了。错失上紫机会。

  6. 模拟赛 T2 本质上错误的乱搞冲过了 100%,hba 模拟赛分数最高的一集。

  7. 做勰码提高组模拟,从 400 挂到 230,致敬传奇大样例。

  8. CF 上紫了,侥幸猜对了 E1 结论,然而怎么有用 GPT 参赛的比我多一题啊。

值得一提的是,这段时间经常在晚上和 wjr 出去跑步,感觉体力明显不如他,。

S 二轮前一天

出发。

路上和 wjr 玩国际象棋,各有一些失误,最终只剩下双方的王和我的一个马,和棋结束。

后面就是我自己摆烂。

和 chb 同屋,不过回来直接去楼上摆烂。

有夜市好评,点了份热干面,好吃。

chb 等人步行 1.6km,然而最后回去点了外卖 :(

试机的感受是,为啥又没有 Linux 系统?

本来想去见洛谷网友,然而我并没有找到机会去寻找他所在区域的位置,悲。感觉很抱歉

第二天发现其实很近,可是试机的时候实在有点挤。。。。

晚上本来看到有人开了 MC 服务器,正准备进去,lxn 进来了。

不过问题不大,回到自己房间继续。

chb 11 点多的时候,出去不知道干啥去了。

1:00 又回来了。

考试当天

上午继续摆烂,由于比较紧张,也不知道干啥。

下午考试前先把平时打 CF 的板子敲了上去。

按照模拟赛的经验,我的计划是前 0.5h 读所有的题,对每个子任务按照难度升序。

然后从简单到困难逐个解决每个子任务 ,采用保守策略,一档一档的想。

正是由于我优先解决子任务而非整道题目的策略,导致了我这次的失败。

开考,比较意外的是我刚读完 T1 就想出了怎么做。

不过仍然读完了所有题,感觉是:T1 是 Div.2 A 难度;T2 前大约 40 分可做;T3 前 50 分很容易;T4 比较难拿分。

先用 3 min 写了 T1 并通过大样例,此时离开考只有 20min。

随后,我的计划是一档一档的写,没想到过程却比较意外的漫长。

等我将做的所有子任务调试通过大样例后,已经过去了很长时间,但是只有 60 分。

我突然想到,只要二分一下,不就转化成了这样一个问题:给定一些区间,选择最少的点,要求全部覆盖。

这已经较为接近正解了,我其实见过类似的套路,但是想了 3min 还没想出来。

因此,根据策略,我还是去写了 T3 的 subtask 1,2。

不过 T3 写的还比较快,拿了 50。

现在是 T2,T4 的选择了。

然后我选择了 T4,这是我本次比赛最后悔的决定。

奋战了一个半小时,仅仅拿到特殊性质 A 的 16 分,调试时间长的原因仅仅是把建树的 dep 初始值错误的设置为了 $1$ 而非 $0$。

剩下的时间不足以给我去冒险尝试 T2 正解了。

检查完,考试也结束了。

我为了 T4 的 16 分,放弃了 T2,T3 的尝试正解的可能。

看到别人一个个估分全都 300+,破防了。

听说 T2 是绿题而 T4 是黑题,更破防了。

估分:100 + 60 + 50 + 16 = 226,只要不挂分的话应该有希望拿省一,静等结果。

共 320 篇博客