NOI 模拟赛报告 2
NOI 模拟赛报告 2
2025多校冲刺冲刺国赛 3
-
排列 T1
发现这是一个模板 ccx,然后就做完了。
-
整除 T2
我们发现 \(\bmod \sum x^i\) 实在是不太优良,我们两边同乘一个 \(x - 1\),这样变成了 \(\bmod (x^m - 1)\),十分好看。
然后我们发现对于一个数 \(\sum f_ix^i \text{ s.t. } |f| < x\),若其整除 \(\bmod (x^m - 1)\),则 \(f_i = 0 \lor f_i = x - 1 \lor f _i = -(x - 1)\)。
证明也不太难,充分性是显然的,必要性就是考虑在 \([-x^m + 1, x^m - 1]\) 之间能被整除的数只有 \(3\) 个。
然后就是模板数据结构维护进位了。
2025多校冲刺冲刺国赛 6
-
reward T1
模板 wqs 二分:严格 wqs 二分
-
冬之花(hana)T2
模板最大流转最小割,平面图最小割转对偶图最短路。
-
经典游戏 T3
首先发现一个点 \(sg\) 函数值就是其到其最深叶子的距离。
考虑什么时候 K 胜利,即 \(\bigoplus\limits_{u\in T} sg_u \le \max dep\)(\(T\) 表示棋子的集合),所以现在。
考虑换根时一个棋子 \(u\) 的 \(sg\) 值,发现其实际上只有两种取值,即当根在以 \(u\) 为根时 \(u\) 最深的儿子方向的直接儿子 \(v\) 的子树内时,答案时次深儿子的距离,否则是最深儿子的距离,于是修改相当于是子树异或。
考虑如何维护邻域信息,发现邻域大小固定且是 \(1\),于是我们每个点建一个 trie 树维护大小为 \(1\) 的邻域做根的 \(\bigoplus\limits_{u\in T} sg_u\),修改相当于是 \(\mathcal{O}(1)\) 个子树异或和 \(\mathcal{O}(1)\) 的单点暴力改,于是就做完了。
如果邻域不维护父亲会好写很多。但是直接写 trie 被卡空间了,可以写 wang5 度数分治(就是度数小于一个值的跑暴力),也可以暴力做 trie 的操作,可以证到 \(\mathcal{O}(\sqrt n)\),常数很小,可以通过(但写根号做法好像根本不用这么麻烦)。
2025多校冲刺冲刺国赛8
这一 water 场。
-
排列 T3
考虑第一次一定获得全局次大值,考虑二分,我们发现若次大值所在的一边的次大值依然是全局次大值,则最大值在次大值一边,否则在另一边。
发现过不去,考虑若进入次大值的一边可以省掉查询次大值的一次,直接取中点并不平衡,所以写个暴力算一下在什么时候平衡即可。
2025多校冲刺冲刺国赛10
-
祝大家(i) T1
-
取得(ak) T2
原题等价于找到一些最多的整点构成凸壳,容易发现一个凸壳一定可以构造一个函数来拟合。
第一个整点一定是 \((0,0)\),我们差分一下,问题变成了选择尽可能多的 \((x, y)\),满足 \(\frac{y_{i - 1}}{x_{i - 1}} < \frac{y_i}{x_i} \land \sum x_i \le n \land \sum y_i \le m\)。
发现这并不好做,但是我们感受一下那股劲,惊异的发现,我们事实上限制是 \(\frac{y_j}{x_j} \not= \frac{y_i}{x_i} \text{ s.t. } i \not= j\) ,因为我们可以最后排序。
于是我们可以只保留 \(\gcd(x, y) = 1\) 的点对,做背包即可。
但是复杂度还是太高了,考虑优化,我们发现对于一个点对 \((x, y)\),若存在 \(x'<x, y'<y\) 的点对 \((x', y')\),我们一定会先选 \((x', y')\)。所以一个点对可能有贡献当且仅当 \(\sum\limits_{x' < x}\sum\limits_{y' < y} x' \le n \land \sum\limits_{x' < x}\sum\limits_{y' < y} y' \le m\)。这样的点对只有 \(n^{\frac 23}\) 个。
考虑到凸壳的点的个数最多是 \(n^{\frac 23}\) 的,所以交换值域定义域即可 \(\mathcal{O}(n^{\frac 73})\)。
-
好成绩(noi) T3
卡常是吧。
容易把链并拆成若干条不相交的链。
发现维护的信息实在是不可做至极,考虑阈值分治。
我们同时对询问点数和一种颜色出现次数进行分治。
我们建出虚树,发现点数 \(> B\) 的可以直接暴力 \(nB\) 做的,出现次数 \(> B\) 预处理一下前缀和也是直接做。
考虑如何做都 \(< B\),这里有个十分符合直觉又十分反直觉的东西,就是若 \(\sum x_i = n, x_i \le B\),则 \(\sum x_i^2 \sim nB\)。
于是我们暴力枚举边对和链对,问题变成 \(nB\) 个单点加,矩阵求和,复杂度是 \(nB \log n\)。
容易调整 \(B\),做到 \(n\sqrt{n \log n}\)。
2025多校冲刺冲刺国赛11
-
自卑
真·卡常题。
直接莫队二次离线拆位就是 \(n\sqrt n \log V\) 的,常数较小,可以通过。
有人说能纯根号,但是我不会。
考虑一个绕远另类解法:扫描右端点,动态维护每个左端点的贡献,然后上分块即可,复杂度一样,常数较大,循环展开加火车头即可通过。
-
game
首先想到将图补成一个竞赛图且是一个 DAG,这样两两之间的 \(sg\) 函数值互不相同,我们直接做即可。
但是我们并不能改这么多边,且不能查这么多点。我们发现题目要求可以有环,我们尝试用环搞事。
环中最简单的就是自环,我们用自环完成这个事。具体的,我们将集合分成两部分,设其为 \(S_1, S_2\),将 \(S_1\) 补成竞赛图且是一个 DAG,删除 \(S_1\to S_2\) 的边,将 \(S_2\) 中的点连自环,并构造向 \(S_1\) 的连边使得任意两个点的连边方案不同。
我们询问每个 \(S_1\) 中的点。
若是先手必败,则一定是两点重合,因为首先不可能有点在 \(S_2\),因为若有点在 \(S_2\) 则先手可以直接将状态转移给后手,必不败。并且 \(S_1\) 中没有向 \(S_2\) 连的边,所以必然 \(sg\) 函数两两不同,先手必败,是两点重合。
若是先手必胜,一定先手将一步移动 \(S_2\) 中的点到和 \(S_1\) 中的点重合,对应 \(S_2\) 中的点向 \(S_1\) 中的点连了一条边;若是平局,则是先手没办法使其重合,对应 \(S_2\) 中的点和 \(S_1\) 中的点没有边。
由于连边方式两两不同,于是就显然了。
构造 \(S_1\) 有 \(20\) 个点,\(S2\to S1\) 的边枚举一个最小的变化量即可。
2025多校冲刺冲刺国赛12
-
字符串 T1
先看一下:runs 相关理论
数据结构部分是 Easy 的,直接将贡献拆成 \(R < r\) 和 \(R > r\)(\(R\) 是询问右端点,\(r\) 是 runs 右端点)树状数组扫描线即可。
-
矩阵 T2
很牛的一个 trick。
发现对格子做很难,我们对格点做:
一目了然的一张图(红 \(V\) 是值,蓝线是边,可能有奇偶性倒了,凑合看)
发现这样任意两个不能同时选的值所对的边都有公共点,于是就是二分图最大权匹配。
xuanxuan001 有插头 DP 做法,我不会。
-
冰棒 T3
考虑若两两互质是简单的,容易发现可以合并 \(l\) 相同的。
我们尝试让其两两互质,所以我们设置一个周期 \(K\),将 \(\bmod K\) 相同的天拿出来考虑,这时循环节是 \(\frac l{\mathrm{lcm}(K,l)}\),\(K = 30240\) 此时循环节满足要么相同要么互质,暴力做是 \(\mathcal{O}(KV^2)\) 的。
我们发现我们其实不止可以合并相同的,我们也可以合并成倍数关系的,此时取 \(K = 2520\) 即可保证任意两个都成倍数或互质。
2025多校冲刺冲刺国赛13
All Last,所以是 WATER 场。
-
欧内的环 T2
首先平面图经典结论:\(\text{点数 } - \text{ 边数 } + \text{ 面数 } = 2 \Rightarrow \text{点数 } \le 3\text{ 边数 } - 6\)。
我们发现因为其任意点度数 \(\le 3\),所以不存在链的情况,所以其对偶图也满足度数 \(\le 3\),考虑鸽巢,发现至少有一个点度数 \(\le 5\)。
因此我们发现原图最小环至多是 \(5\),判掉三元环和四元环后直接输出 \(5\)即可。
-
旋转谜图 T3
也是一个躺尸题。
我们发现可以构造一种操作序列每次交换两个数,然后就 WATER 了。
NOI2025模拟测试2
-
猴戏世家 T1
首先若没有同一个点能被算多次是简单的,直接扫一维类似区间取 \(min\) 做一维维护每个点属于哪个栅栏即可。
考虑如何统计同一个点被算多次的情况,发现将一个点和包含他的点连边,则相当于是靠后的儿子贡献给靠前的父亲,上个并查集即可。
-
零糖麦片 T2
原题 CF468E。
首先拆一下矩阵,将其 \(v\) 拆成 \(1\) 和 \(v - 1\),这样可以看成每个位置在一般情况下增加了 \(v - 1\)。
其实拆矩阵这步挺牛的。状压那些行选了,我们发现若这是一行中最后一个数,则可以直接不压了,然后就过了?
这感觉上是 \(k^22^{\frac k2}\),有人说可以少个 \(k\),但反正是 \(2^{\frac k2}\) 的。
考虑优化,发现每行每列只能选一个很难不想到二分图,问题相当于是二分图匹配的边权积的和。
事实上我们只用考虑边权不是 \(1\) 的边,边权是 \(1\) 的可以不管,最后乘系数即可。
对于每个连通块分别做。我们压其中较小的一边的为状态,在另一边跑状压,这样依然是 \(m2^{\frac n2}\),其中 \(n\) 是点数,\(m\) 是边数。
考虑当点数接近边数时,这个做法很劣,考虑建出原图的一个生成树,枚举非树边的状态跑 dp,复杂度是 \(n^2k2^{n - m}\)。
于是平衡一下就是 \(k^22^{\frac k3}\)。
-
文体双花 T3
学析合树学的。
就是考虑 \(dp\),直接做是 \(n ^ 2\) 的。
发现可以转移的位置满足 \(\max - \min = r - l\),移项是 \(\max - \min + l = r\),而 \(\max - \min \ge r - l\),于是直接线段树即可。
建析合树估计也行,但是我场上建了一辈子也没建出来。
UOJ NOI Round #9 day1 day2
太菜了只能改 eps 个题,合起来写吧。
-
星图
神笔构造题别区分我。
显然只考虑偶数即可。考虑构造,我们钦定一条边是划分点,容易发现这条边有一个端点需要是三度点。
容易发现取重心边(可以尽可能平分这棵树的边)最优,但是重心边不一定有三度点。若重心边没有三度点,即其在一条链上,容易发现我们最后在做这条链最优,且做这条链不会改变是否合法。
于是直接做即可。
-
Sing
考虑 \(k = 0\)。考虑限制,连边 \(i \to p_i\),这样排列合法当且仅当 \(i \to j \text{ s.t. } j > i\) 且 \(\forall k \in (i, j), p_k \le i\),然后就是简单 dp。
\(k \neq 0\) 就是平移一下,有固定数也简单。
细节很多。
-
欢迎来到最前线
很简单的,难点在于考虑将 \(a, b\) 混合排序。
首先很简单就能想到流和反悔贪心。
先排序,我们发现匹配肯定不会交叉,更进一步的,将 \(a, b\) 混起来排序以后一定是一段段区间的匹配。
发现一段区间的反转可以直接类似前缀和维护,于是直接反悔贪心就做完了。
NOI2025模拟测3
简单场。
-
T1 背包问题模板
部分分非常启发拆位以后做数位 dp。但是我就不。
考虑到 \(m\) 巨大但 \(b\) 很小,于是我们经典的先贪心。
考虑调整,结论告诉我们容量是 \([-b^2, b^2]\) 的,考虑用 \(b_i\) 个 \(j\) 物品换 \(b_j\) 个 \(i\) 物品显然不会更优(因为前面是贪心)。显然最多只会有 \(b ^ 2\) 个物品有用,于是直接做多重背包即可。
-
T2 南河泄露
快进到转移方程:
\(f_{l, r} = \max_k\{\min\{g_{l, k}, f_{k, r}\} + d_k + (s_k - s_l) ^ 2\}\)。
考虑 \(l: n \to 0, r: l + 1 \to n + 1\) 转移。
考虑拆开 \(\min\),容易发现其左边递增,右边递减,于是我们直接双指针维护分界点 \(p\)。
然后就是做 \(f_{l, r} = \max_{k\in [l, p)}\{g_{l, k} + d_k + (s_k - s_l) ^ 2\}, \max_{k\in [p, n + 1]}\{f_{k, r} + d_k + (s_k - s_l) ^ 2\}\}\)。
前面是前缀 \(min\),后面是斜率优化,对每个 \(r\) 维护一个凸壳即可。
\(g\) 同理。
-
T3 最短路问题模板
树剖+线段树优化建图,对重链维护前缀即可 \(n \log^2 n\),没意义。
\(n \log n\) 我还不会,好像是形如将一堆边一起扔进去做最短路,仙姑了。
本文来自博客园,作者:xrlong,转载请注明原文链接:https://www.cnblogs.com/xrlong/p/18956392
版权声明:本作品采用 「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0) 进行许可。