NOI 模拟赛报告 2

NOI 模拟赛报告 2

2025多校冲刺冲刺国赛 3

  1. 排列 T1

    发现这是一个模板 ccx,然后就做完了。

  2. 整除 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

  1. reward T1

    模板 wqs 二分:严格 wqs 二分

  2. 冬之花(hana)T2

    模板最大流转最小割,平面图最小割转对偶图最短路。

  3. 经典游戏 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 场。
  1. 排列 T3

    考虑第一次一定获得全局次大值,考虑二分,我们发现若次大值所在的一边的次大值依然是全局次大值,则最大值在次大值一边,否则在另一边。

    发现过不去,考虑若进入次大值的一边可以省掉查询次大值的一次,直接取中点并不平衡,所以写个暴力算一下在什么时候平衡即可。

2025多校冲刺冲刺国赛10

  1. 祝大家(i) T1

    wang5:我给你一个忠告,不要写递归 trie 树

  2. 取得(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})\)

  3. 好成绩(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

  1. 自卑

    真·卡常题。

    直接莫队二次离线拆位就是 \(n\sqrt n \log V\) 的,常数较小,可以通过。

    有人说能纯根号,但是我不会。

    考虑一个绕远另类解法:扫描右端点,动态维护每个左端点的贡献,然后上分块即可,复杂度一样,常数较大,循环展开加火车头即可通过。

  2. 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

  1. 字符串 T1

    先看一下:runs 相关理论

    数据结构部分是 Easy 的,直接将贡献拆成 \(R < r\)\(R > r\)\(R\) 是询问右端点,\(r\) 是 runs 右端点)树状数组扫描线即可。

  2. 矩阵 T2

    很牛的一个 trick。

    发现对格子做很难,我们对格点做:

    一目了然的一张图(红 \(V\) 是值,蓝线是边,可能有奇偶性倒了,凑合看)

    发现这样任意两个不能同时选的值所对的边都有公共点,于是就是二分图最大权匹配。

    xuanxuan001 有插头 DP 做法,我不会。

  3. 冰棒 T3

    考虑若两两互质是简单的,容易发现可以合并 \(l\) 相同的。

    我们尝试让其两两互质,所以我们设置一个周期 \(K\),将 \(\bmod K\) 相同的天拿出来考虑,这时循环节是 \(\frac l{\mathrm{lcm}(K,l)}\)\(K = 30240\) 此时循环节满足要么相同要么互质,暴力做是 \(\mathcal{O}(KV^2)\) 的。

    我们发现我们其实不止可以合并相同的,我们也可以合并成倍数关系的,此时取 \(K = 2520\) 即可保证任意两个都成倍数或互质。

2025多校冲刺冲刺国赛13

All Last,所以是 WATER 场。
  1. 欧内的环 T2

    首先平面图经典结论:\(\text{点数 } - \text{ 边数 } + \text{ 面数 } = 2 \Rightarrow \text{点数 } \le 3\text{ 边数 } - 6\)

    我们发现因为其任意点度数 \(\le 3\),所以不存在链的情况,所以其对偶图也满足度数 \(\le 3\),考虑鸽巢,发现至少有一个点度数 \(\le 5\)

    因此我们发现原图最小环至多是 \(5\),判掉三元环和四元环后直接输出 \(5\)即可。

  2. 旋转谜图 T3

    也是一个躺尸题。

    我们发现可以构造一种操作序列每次交换两个数,然后就 WATER 了。

NOI2025模拟测试2

  1. 猴戏世家 T1

    首先若没有同一个点能被算多次是简单的,直接扫一维类似区间取 \(min\) 做一维维护每个点属于哪个栅栏即可。

    考虑如何统计同一个点被算多次的情况,发现将一个点和包含他的点连边,则相当于是靠后的儿子贡献给靠前的父亲,上个并查集即可。

  2. 零糖麦片 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}\)

  3. 文体双花 T3

    学析合树学的。

    就是考虑 \(dp\),直接做是 \(n ^ 2\) 的。

    发现可以转移的位置满足 \(\max - \min = r - l\),移项是 \(\max - \min + l = r\),而 \(\max - \min \ge r - l\),于是直接线段树即可。

    建析合树估计也行,但是我场上建了一辈子也没建出来。

UOJ NOI Round #9 day1 day2

太菜了只能改 eps 个题,合起来写吧。
  1. 星图

    神笔构造题别区分我。

    显然只考虑偶数即可。考虑构造,我们钦定一条边是划分点,容易发现这条边有一个端点需要是三度点。

    容易发现取重心边(可以尽可能平分这棵树的边)最优,但是重心边不一定有三度点。若重心边没有三度点,即其在一条链上,容易发现我们最后在做这条链最优,且做这条链不会改变是否合法。

    于是直接做即可。

  2. 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\) 就是平移一下,有固定数也简单。

    细节很多。

  3. 欢迎来到最前线

    很简单的,难点在于考虑将 \(a, b\) 混合排序。

    首先很简单就能想到流和反悔贪心。

    先排序,我们发现匹配肯定不会交叉,更进一步的,将 \(a, b\) 混起来排序以后一定是一段段区间的匹配。

    发现一段区间的反转可以直接类似前缀和维护,于是直接反悔贪心就做完了。

NOI2025模拟测3

简单场。
  1. T1 背包问题模板

    部分分非常启发拆位以后做数位 dp。但是我就不。

    考虑到 \(m\) 巨大但 \(b\) 很小,于是我们经典的先贪心。

    考虑调整,结论告诉我们容量是 \([-b^2, b^2]\) 的,考虑用 \(b_i\)\(j\) 物品换 \(b_j\)\(i\) 物品显然不会更优(因为前面是贪心)。显然最多只会有 \(b ^ 2\) 个物品有用,于是直接做多重背包即可。

  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\) 同理。

  3. T3 最短路问题模板

    树剖+线段树优化建图,对重链维护前缀即可 \(n \log^2 n\),没意义。

    \(n \log n\) 我还不会,好像是形如将一堆边一起扔进去做最短路,仙姑了。

posted @ 2025-07-04 07:02  xrlong  阅读(32)  评论(0)    收藏  举报

Loading