NOIP 模拟赛:2024-11-25

T1:

简单贪心。

T2:

有的n间屋子被n1条双向路径连通,构成树结构。其中第i个屋子中住着一个种族ci的狼人。

树的一个连通子图中,若其中一个种族的狼人超过了其他种族的总和,它们可以在该连通子图中进行支配。具体而言,记ai为种族为i的狼人在连通子图中的个数总和,则支配的条件是存在k使得ak>ikai

那么,有多少个不同的连通子图会出现支配的情况?答案对998244353取模。

连通子图指点集和边集分别为原图点集和边集的子集,且连通的图。子图不同,当且仅当选择的点集和边集至少有一个不完全相同。

考虑对每一种种族各自求一遍答案。对于一个种族,让是这个种族的结点权为 1,否则权为 1,即计数有多少个连通子图的权值和为正数。

dp[i][j] 表示 i 的子树内权值为 j 的方案数。j 的范围既是当前种族总个数,又是 sz[i]。根据树上背包经典分析,复杂度为 O(ncnt[i])=O(n2)

T3:

对一个全排列a1,a2,,an,给定m并依次做如下操作

  • a1am进行从小到大排序;
  • a2am+1进行从小到大排序:
  • ……
  • anm+1an进行从小到大排序:

注意每次排序都改变了a序列,每次的ai指上一轮排序后处在i位置的数。

我们不知道初始的a,只知道排序的最终结果,记做b1,b2,,bn。求所有可能的初始a中,字典序第k小的?保证存在k个不同的初始a


若出现 bi1>bi,说明 bi 这个数初始位于 ai+m1,然后可以把 bi 这个位置删掉。

由此得到一个单调上升的序列 b,即求对应 b 的字典序第 k 小的 a,把 a 按顺序填回 a 里还没有被确定的位置即可。
一般字典序都是试填法,看填最小的行不行 …… 逐渐增大,每次减去对应方案数。

考虑怎么求方案数。发现 b1 必然是在 1m 的位置里随便填一个,m 种;b21m+1pos[b1] 的剩下 m 个位置里选一个,也是 m 种 …… 直到后面的位置不够了,变成 m1,m2,,1

然后不太清楚了 …… 总之是试填法。


T4:很少见到这么纯种的人类智慧。

给定正整数K,请构造两个01串S,T,使得他们恰好有K个本质不同的最长公共子序列。

额外给定参数L,构造的串必须满足max(|S|,|T|)L

考虑对于两个 01 串,记 g(x,y) 为有多少种不同的 LCS,使得尽量取字典序最小的结束位置时,落点恰好是 (x,y)
这是对所有 LCS 不重不漏的分类。

构造初始串 S=1,T=11,此时 g(1,1)=1,g(1,2)=0。设当前 g(x,y)=k,我们希望通过在 S,T 后面增加常数个字符,达到让 k+1k×2 量级的效果。这样可以在 2logn 长度构造出来。

事实上这是可行的,我们增强结论,让所有 gg(|S|,|T|)=k,g(|S|,|T|1)=1,其余位置 0

如果要 k+1,可以 S+0100,T+000;如果要 k2k+1S+101000,T+011000 即可。

posted @   FLY_lai  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示