2024.2 训练纪要
THUWC + NOIWC + 过年完了,得滚回来打模拟赛了。
快要省选了哈哈。要寄大了。
WC 2024 游记 可能还是会持续更新的,毕竟讲的题整理没整理完代码也一个都没写,有点傻逼。
2024.2.15
100 / 100 / 20, sum 220, rk 12/98
我这波是致敬 WC。
R35 T2 弱化的杨表
简要题意:给定长为
赛时做法:考虑先让每个位置全部钦定权值较小的那个,然后尝试调整使得其变成合法括号序列。考虑合法两个条件:前缀和没有小于
R35 T3 达拉然的废墟
简要题意贺的。
简要题意:
考虑题目可以轻松转换成在每一段中选取一对逆序对的方案数期望。分几种情况,显然不能都是偶数,那么就是奇奇,奇偶,偶奇。由于奇数位置没有限制,奇奇为逆序对的概率就是
考虑用大根堆来刻画这种大小关系,把偶数位置连成一条链,偶数递增就代表这棵树是大根堆,而对于一棵树是大根堆的概率为
那么设计 DP
奇奇就是在中间选取两个点作为逆序对,概率为
注意到系数都是关于
最后由于上面是对所有排列计算的,而题目要求的是所有合法排列的期望,合法排列方案数是
2024.2.16
今天这场 2022 的时候打过。不过不得不说我还是太菜了,nfls 榜还是太恐怖,我真的打应该会炸飞。
唉我真的不会随机化啥的啊是。
随机语句破碎。
所以今天在补 WC 听课记录,去隔壁看去吧。
喜报:补完了。WC 2024 游记(now with 听课记录)
2024.2.17
数据结构专题哈哈。
感觉似乎应该做点计划了,但是又并想不到什么好的计划。
晚上 cf,我能上回 gm 吗。
好的下大分了,E 条件想假了一个多小时,两小时一个题没过,真弱智。赛后把赛时想法扔了从头想,半个小时会了 E。这种思路不对但是长时间不改思路的问题怎么改掉啊,麻痹了。
L2.17 T2 (P8860 动态图连通性)
首先注意到每条边只有第一次修改是有意义的,因为如果第一次删不了之后一定也删不了,第一次删了之后仍然删不了,所以我们记录每条边第一次被删除的时间,剩下的边给他随便赋一个时间。记它为
考虑这个过程,实际上会一直删除所有的边直到剩下一条路径。容易发现,这条路径的最小值一定最大,因为较小的路径就可以被删除了,同理,次小值也最大,以此类推,最后剩下的路径应当是边权所形成的集合的字典序最大的一条路径。那么我们可以使用经典 dijkstra 加主席树来解决这道题。
存在一个更简单的做法:注意到这里有一个性质,边权两两不同,也就是主席树的过程不会发生进位。这样的图实际上有优秀的性质。考察 dijkstra 的过程,需要找到当前未固定的最短路最短的点,这样的点一定都是某个确定最短路了的在集合中的点向不在集合中的点连边,我们考察两条路径
L2.17 T11 (P6845 [CEOI2019] Dynamic Diameter)
这题做法应该是很多的,比如可以无脑边分树加线段树
有一个神奇的做法:考察路径长度等于
L2.17 T5 (P7125 [Ynoi2008] rsmemq)
感动,好像是自己想出来的
首先注意到实际上我们只需要对每一个位置,考虑以这个点为中心有哪些区间半径是合法的,然后区间计数一下即可。对于每一个中心,注意到其合法半径可以由这个数出现次数个区间组成,也就是说这样的总区间数是
有出现次数,那么我们考虑根号分治一下。首先对于出现次数大于
最后查询区间内的合法子区间数,考虑将区间拆成中心在左半部分和在右半部分两种,中心在左半部分只会受到左端点的限制,右边同样,考虑左边,记合法位置区间为
2024.2.18
100 / 100 / 45, sum 245, rk 2/59
哈哈。
T2 大分类讨论题,没啥意思不写了。T1 整出一个挺有趣的做法,还当了一会最优解,虽然后来被抢了。
arc 居然上分了,感谢 uu 对我 E 的指导与我写爬山随机数从
R37 T1 A Dance of Fire and Ice
简要题意:有一个变量
首先离散对数转化一下,然后直接 bitset 优化就能做到
有一个直观的想法,就是似乎经过若干次操作之后不能被表示的数就很少了,考虑当所有数都能被表示了就直接 break 掉。但是显然构造一堆 2 的倍数就可以卡掉。
不过还可以继续考虑类似的思路,观察到能够使得新的数被表示的操作实际上只有
考虑什么时候加入一个数不能使得新的数被表示。发现当且仅当对于任意
R37 T3 字符串
简要题意:对于一个映射
这题感觉很有趣啊。首先有一个转化,直接整一张 de Brujin 图,边权设为加的字符,对于某一个映射,将对应的边减去对应的值,这样条件就可以转换成,对于任意一条从
字典序可以考虑贪心构造,我们需要 check 对于一个固定的前缀,是否有解。对于固定的边,必须满足
ARC172D Distance Ranking
考虑增量构造,假如我们随便固定一组
2024.2.19
100 / 100 / 0, sum 200, rk 20/78
T3 口胡了个做法,以为过不去,结果是正解,虽然好像有理论复杂度更优的做法,不过网络流嘛理论复杂度有个寄吧用。
T2 由于线性无关集合是拟阵,直接使用 [HNOI2014] 画框 的做法即可(最小乘积生成树)。
下午开了 USACO,啥都不会,好像有个 T2 做法,但是不想写,也不懂对不对。我是摆烂大师。
2024.2.20
100 / 100 / 10, sum 210, rk 8/94
咋感觉现在成天打类 WC 模拟赛,T1 T2 全都会 T3 全不会,然后全是
T2 考过原题,虽然确实一点不记得了,here。不过这次我会连续段 DP 了,感动。
T3 感觉看着不是很可做啊,咕了(
哎我怎么这几天都懒得改题了。尝试写了会昨天的 T3,然后写了一会就去体活了,体活回来发现洛谷掉登陆了,登陆显示密码不对,这下给我惊到了,什么人盗号先盗我洛谷号啊。然后赶紧找我妈把密码改掉,把号找了回来,吓得改了好几个号的密码。然后缓了一会去找了粉兔,提供了大量信息,然后粉兔没查到这段时间内有可疑信息,有的记录都和我对上了,感觉就是洛谷出 bug 了。呃呃了。然后晚上就不想写题了,摆烂。
怎么明天一天时间整一堆数学题啊??麻了。nfls 的讲课怎么全是数学。
下了一天的雪,放假的时候下雪好啊,操场一个人都没有,雪快到脚踝了,完成了 曾经要干的事情,在操场上滚了一下hhhh
2024.2.21
哎我日这专题都什么逼题。直接弃了。
终于把前天 T3 补掉了。
R38 T3 PolarSea 与遗忘的森林 (Recover a functional graph)
其实思路挺简单的,就是细节很多有点难写外加不知道这玩意还能跑这么快。
首先考虑没有问号怎么办,注意到只需要满足对于每一个
考虑有问号,发现我们可以找出每一个
2024.2.22
100 / 0 / 6, sum 106, rk 63/85
蚌埠住,T2 少考虑一种情况直接保龄,改一下就过了。虽然写的还是随机化乱搞,因为真的不想写那个恶心线段树做法,但是事实证明
这个 T3 看着属实阴间啊。感觉就算是能看懂也基本写不动。
啊一天又没改题也没做题,寄吧了。
L2.21 T1 (P3543 [POI2012] WYR-Leveling Ground)
首先差分一波,改成任意一个位置
设
2024.2.23
哈哈一题不会摆烂了。坐等放假了属于是。
2024.2.26
100 / 30 / 15, sum 145, rk 47/84
人不仅菜,而且挂分水平一流。T3 写了个 70 分结果有个细节挂了只剩下特判的
T2 我还是不会啊??感觉还是完全不会图论啊,完全不知道怎么刻画强连通。于是下午阅读了下一些内容,还没读完,可能明天才能发学习笔记。
R43 T1 序列
简要题意:给定序列
挺套路的东西,很像 NOIP2021 T3 的做法,不过比那个简单。发现一次操作后三个数和不变,考虑整体做前缀和,发现操作是将两个前缀和进行了交换,那么问题就变成了将中间部分随便排列,使得相邻两两差的绝对值最大值最小。最后一定是两次折的形式,且交错左右放肯定最优,证明调整,贪心即可。
R43 T2 ddtt (GYM102759C Economic One-way Roads)
哎我还是不会啊!
有一个好东西:一个图是强连通图,当且仅当其存在耳分解。我们可以用耳分解来刻画强连通图,这样的好处是可以增量。
耳分解就是,初始从一个环开始,每次加一条起点终点都在当前点集,中间点不在点集中的路径,然后把所有点与边加入当前点集和边集,每次加的路径就叫耳,容易发现这个过程就是把整张图划分成了若干个耳。
那么直接暴力整点子集 DP 就能
R43 T3 扫雪
简要题意:给定排列
发现题意可以转换成从
这相当于区间单调栈啥的,可以直接上兔队线段树,然后
我好像就没会过兔队线段树说实话。
2024.2.27
100 / 61 / 0, sum 161, rk 32/77
开场两个多小时才会 T1,然后突然发现 T2 是弱智题,然后结果寄吧出题人还卡逆元,T3 爆搜还 TLE 了,哎真你妈恼火了,,,
我日博客忘写了。。。省选前能写完吧应该
T1 小 Z 与函数
简要题意:有这样一个函数:
int get(int n) {
int res = 0;
for (int i = 1; i <= n; i++) {
int vs = 0;
for (int j = i; j <= n; j++) if (a[i] < a[j]) swap(a[i], a[j]), res++, vs = 1;
res += vs;
}
return res;
}
问对一个数组的每个前缀执行该函数的值。
考虑一个
T2 拼数
简要题意:有
考察固定
T3 敢览求
简要题意:给你一棵二叉树,每个点有两个权值
子树操作会对子树内造成影响,我们考虑把这个影响压入状态中,记
首先考虑操作一,那么
注意到上述集合都是由一些连续区间组成的,所以考虑更高效的维护这个集合。有个神奇做法:考虑线段树合并。我们先考虑求交,求并的过程类似。线段树节点上维护这个节点内的区间是否完全被覆盖,然后考虑合并。如果两个节点有一个为空,那么返回
求交求并的代码:
int mand(int x, int y) {
if (!x || !y) return 0;
if (t[x].val) return y;
if (t[y].val) return x;
int z = ++tot;
t[z].lc = mand(t[x].lc, t[y].lc);
t[z].rc = mand(t[x].rc, t[y].rc);
if (!t[z].lc && !t[z].rc) return 0;
if (t[t[z].lc].val && t[t[z].rc].val) t[z].val = 1;
return z;
}
int mor(int x, int y) {
if (!x || !y) return x + y;
if (t[x].val) return x;
if (t[y].val) return y;
int z = ++tot;
t[z].lc = mor(t[x].lc, t[y].lc);
t[z].rc = mor(t[x].rc, t[y].rc);
if (!t[z].lc && !t[z].rc) return 0;
if (t[t[z].lc].val && t[t[z].rc].val) t[z].val = 1;
return z;
}
2024.2.28
100 / 100 / 50, sum 250, rk 1/65
?
不过 T1 是典中典题,T3 我考过但是当时就没看懂题解,但是暴力是容易的,然后 T2 是个交互。冲了半场多 T2 过了(
不过 T3 没打 5 分部分分亏了,因为写完 T3 暴力就已经 12:10 了然后我们吃饭点是 12:10 于是我直接吃饭去了(
算了明天模拟赛必考炸,要不然省选 rp 掉没了。
晚上吃了小火锅 😄 但是今天下午加晚上又啥都没干。唉我那个学习笔记还是没有写,日了。但是我现在完全看不下去那个东西啊。
R45 T2 交互题
简要题意:交互,有一个
次数大致是
有一个朴素的想法,就是每次询问一个
类似的想法,我们可以去依次对于每一个
2024.2.29
100 / 100 / 50, sum 250, rk 1/67
啥玩意,搁这刷 rp 呢,,
T2 还是有趣的,T1 比较无聊。T3 不会,不过有高达 50 分暴力。
下午打了一些板子,仍然没有打 Tarjan,我相信我是会 Tarjan 的!!!!!11
把学习笔记写完了。怎么会有人省选前读论文的啊???
R46 T2 Xor Game
如果固定了
那么把
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2023-02-15 「解题报告」[NOI2022] 冒泡排序