模拟赛8.18 解题报告

T1. 动态数点(JZOJ6294)

题意:求最大的 rl 满足 1lrn,且存在一个 k(lkr),使得 i,ak|ai。并输出有哪些满足条件的 l,r1n5×105

题目相当于找一个区间,满足存在一个数是区间所有数的因数。

那么这样的数必定是区间的最小值,于是条件转化为 mini=lr{ai}=gcdi=lr{ai}

不难想到区间长度具有可二分性,考虑二分区间长度。然后用 ST 表查询区间最小值、区间 gcd。理论复杂度 O(nlog2n),但远远达不到这个上界。

T2. 中位数

题意:给出 n 个数 a1..n,求所有非空子集的和的中位数。1n,ai2000

猜测中位数也许和平均数有关,设平均值 v=SiSai2n=i=1nai2。对于一个子集 S,设和为 sum(S),取补集 S={1,2,...,n}S,那么有 sum(S)+sum(S)=i=1naisum(S)+sum(S)2=v

sum(S),sum(S),v 三个数放在数轴上理解(钦定 sum(S)<sum(S)):

image

那么 sum(S)sum(S) 在数轴上关于 v 对称。

我们给集合分类:A 类和 B 类。对于 A 类,每个数 v;对于 B 类,每个数 v

进一步可得,对于两个互为补集的集合 S,S,若 sum(S)<sum(S),那么把 S 分到 A 类,把 S 分到 B 类,反过来类似。

一共有 2n1 对互为补集的子集,那么此时 A,B 类子集都各有 2n1 个。

因为不算空集,我们要在 A 类里面把空集去掉,此时 A2n11 个、B2n1 个。注意到中位数其实就是求第 2n1 小的数,于是答案就是 B 类中和最小的子集的 sum。由于 A 类中 =v 的数并不影响答案,我们相当于是求 v 的和最小的子集。

如何求和 v 且最小的子集?直接背包。这是一个 01 可行性背包,用 bitset 优化即可。时间复杂度 O(n2aw)

T3. 出题

题意:有 n 个数 a1...nq 个操作,每个操作有两种可能:

  • 1 l r d:令 al,al+1,...,ar 都加上 d

  • 2 l r:查询 i=lrai

一开始 a1=a2=...=an=0。给出 P1...q1,依次删去第 P1,P2,...,Pq1 次操作,求出一开始和每删一个操作后的查询出的答案的总和1n,q2×105, 1PiqPi 两两不同。

首先考虑如何只用树状数组求解。若没有删除,那么这是个区间加、区间查询的板子,可以用两个树状数组解决。

考虑每次删除一个操作,若删除的是区间加操作,那么这会与之后的查询产生贡献,对总答案产生贡献;若删除的是区间查询操作,这会与之前的加操作产生贡献。

这就有点三位偏序的感觉了,但思路还是不够清晰。

我们把每一个操作都放到对应的删除时间上,最后一个没删除的操作对应结尾时间。设 ti 表示时刻 i 删除的操作在原操作序列的顺序(第几个),那么若 i,j(i<j) 产生了贡献,我们在位置 i 上记录贡献,最后前缀和一遍即可。

于是,删除时间一维,原操作序列的顺序一维,以及区间操作一维,直接 cdq 即可。

T4. 排列(AGC005D ~K Perm Counting)

题意:求有多少个 1...n 的排列 A1,A2,...,An,满足 i,|Aii|k1n,k1000

万重原题。

考虑若没有绝对值符号,即 i,Aiik,所有的 i 独立,直接容斥就行了。

但是现在 Ai 不能取两个值:ik,i+k。思路还是容斥,考虑建立二分图,左边表示点编号,右边表示取值。把 ii+k,ik 连边,选择一条边相当于一个不合法的匹配

发现建出来的图是由 2k 条链组成,显然每条链互相独立。设 f[i,j,0/1] 表示 i 个点的链,选了 j 条边,最后一条边是/否选择的方案数。

由于选边表示匹配,那么选择的不同的两条边不能连接一个相同的点。转移:

f[i,j,0]=f[i1,j,1]+f[i1,j,0]

f[i,j,1]=f[i1,j1,0]

对于 2k 条链,考虑背包合并。设 g[i,j] 表示前 i 条链选择 j 条边的方案数,转移略。

最后的答案即为

i=0n(1)i×g[2k,i]×(ni)!

时间复杂度 O(nknk)=O(n2)

出处:https://www.cnblogs.com/Sktn0089/p/17640697.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Lgx_Q  阅读(54)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
点击右上角即可分享
微信分享提示