杂题20201010

CF1416D Graph and Queries

给定一张 \(n\) 个点 \(m\) 条边的无向图,每个点有点权 \(p_i\) ,其中 \(p_i\) 是一个排列

现在有 \(q\) 次询问,每次询问为以下两种之一:

  1. 给出点 \(v\) ,将所有 \(v\) 能到达的点中,找最大的 \(p_u\) ,并将 \(p_u\) 置为 \(0\) (可能连通块中不存在非 \(0\)\(p_u\)
  2. 将第 \(i\) 条边删掉
  • \(n\leq2\times10^5\)
  • \(m\leq3\times10^5\)
  • \(q\leq5\times10^5\)

注意原图可能不连通

一个做法

先倒着考虑询问,用并查集求出每次删边操作是否会影响连通性

接下来正着考虑询问,用 set 维护每个连通块中所有点权,询问 \(1\) 很好维护

对于询问 \(2\) ,我们考虑将启发式合并的操作反过来,删掉这条边后一个连通块 \(t\) 分为两个连通块 \(x,\ y\) ,我们将点个数较少的一个连通块中的所有点找出来,依次将每个点从 \(t\) 的 set 中删掉并丢掉 \(x\) 中,让 \(y\) 的 set 继承操作完成后 \(t\) 的 set

找某一时刻一个连通块中的所有点可以额外维护仅保留有效边的树,每次删边即可

时间复杂度 \(O(n\log^2n)\)

标算做法

将询问 \(2\) 未被涉及到的边的边权看做 \(+\inf\) ,其余边的边权看做操作时间

我们建出新图的最大权 kruskal 重构树

然后做法就十分显而易见了

对于每个询问 \(1\) ,找到它在重构树上所需要询问的节点,可以在建树时完成

建好树后,再 dfs 一遍,用线段树维护一下即可

时间复杂度 \(O(n\log n)\)


CF1408G Clusterization Counting

\(n\) 个电脑,每一对电脑 \(i,\ j\ (i\neq j)\) 都有权值 \(a_{i, j}\) ,保证 \(0\leq a_{i,\ j}\leq\frac{n(n-1)}2\)\(a_{i,\ j}=a_{j,\ i}\) ,且 \(a_{i,\ j}\) 互不相同

你需要将每个电脑分配到恰好 \(k\) 个集合 \(A_1,\ A_2,\ \cdots,\ A_k\) 中的一个,且满足:

  • \(A_i\) 不为空
  • 对于任意 \(s,\ f,\ x\in A_i\ (s\neq f)\)\(y\in A_j\ (i\neq j)\) ,存在 \(a_{s,\ f}<a_{x,\ y}\)

对于每个 \(1\leq k\leq n\) ,求出其方案数\(\bmod998244353\)

\(n\leq1500\)

当取 \(x=s\) 时,可知对于一个合法集合 \(A_i\)\(f\in A_i,\ y\notin A_i\) ,有 \(a_{s,\ f}<a_{s,\ y}\) ,可知对于每个点 \(s\) 按照 \(a_{s,\ i}\) 升序排序后,合法集合 \(s\in A_i\) 中的点必定是其中的一段前缀

若两个集合 \(A_i,\ A_j\) 合法,且存在 \(x,\ y\in A_i;\ y,\ z\in A_j\) ,则有 \(a_{x,\ y}<a_{y,\ z}\)\(a_{y,\ z}<a_{x,\ y}\) ,矛盾

故合法的集合必定不交或是包含关系

考虑找出所有合法集合,不妨将所有 \(a_{i,\ j}\) 拿出来升序考虑,不断连边 \((i,\ j)\) ,可以发现一个集合 \(S\) 是合法的,当且仅当某一时刻该集合是一个团

可以发现合法集合个数是 \(O(n)\) 级别的

根据合法集合的从属关系,可以设计一个树形 dp,大概分析一下可以得到 \(O(nk)\) 的复杂度

CF1408H

给定一个长为 \(n\) 的序列 \(a_i\) ,选出尽可能多的三元组 \((i,\ j,\ k)\) 满足:

  • \(1\leq i<j<k\leq n\)
  • \(a_i=a_j=0,\ a_j\neq 0\)
  • 所有三元组的 \(a_j\) 不相同
  • 每个下标最多存在于一个三元组中

\(\displaystyle\sum n\leq5\times10^5\)

二分答案

对于一个 mid,显然拿出序列中前 mid 个 0,后 mid 个 0 用于匹配是最优的

将前部第 \(i\)\(a_l=0\) 与后部第 \(i\)\(a_r=0\) 匹配

将每个匹配的区间看做左部点,每种出现于其中的权值为右部点,我们需要判断是否存在完美匹配

使用 Hall 定理,不难发现任意两个匹配区间有交,因此即判断:对于任意前部的某一个 \(a_i=0\) 和后部某一个 \(a_j=0\) ,是否都存在 \([i,\ j]\) 中不同的 \(a_i\) 的个数不少于被包含于 \([i,\ j]\) 的匹配区间个数

这一部分可以扫右端点,用线段树维护,时间复杂度 \(O(n\log^2 n)\)

写完代码可以发现,如果某一时刻发现该 mid 不合法,即全局 min < 0,此时可以将答案 -1,相当于撤销了上一次修改操作,故可以优化到 \(O(n\log n)\)


UVALive-4389 Two professors

给定 \(n\) 个区间 \([l_i,\ r_i]\) ,将其分成若干组满足:

  • 每组区间两两不交(可以交于一点)
  • 区间 \([l_1,\ r_1]\) 和区间 \([l_2,\ r_2]\) 不在同一组中

找出最少组数

\(n\leq10^5\)

没有第二条限制时,有显然的贪心做法:将所有区间按左端点升序考虑,将这个区间任意塞到一个能塞的组中,如果不能则答案+1

我们先跑一遍这样的贪心,不妨假设区间 \(1\) 的左端点在区间 \(2\) 的左端点之前

如果决策区间 \(2\) 时,可以塞入不包含区间 \(1\) 的组,则答案不增大

否则,如果其中存在一个区间 \(x\) 存在于包含区间 \(1\) 的组 \(S\) ,使得 \(x\) 被决策时可以不塞入 \(S\) ,或是存在一个区间,当其被决策时可以塞入 \(S\) 但没有塞入,答案也不会增大

改变区间 \(x\) 是否存在于组 \(S\) 的状态,相当于“交换”了 \(S\) 和另外一个组,使得区间 \(2\) 可以放入 \(S\)

如果不存在上述情况,答案加一


XVII Open Cup, Grand Prix of Japan

Problem C. House Moving

给定 \(m\) 个数 \(a_1,\ a_2,\ \cdots,\ a_m\) ,将每个数放在 \(1, 2,\ \cdots,\ n\) 中的一个位置 \(x_i\) 上,同一个位置上不能放多个数,定义一个放置方案的权值为 \(\displaystyle\sum_{i=1}^n\sum_{j=i+1}^na_i\times a_j\times |x_i-x_j|\) ,求出权值最小是多少

  • \(n\leq10^6\)
  • \(m\leq\min(n,\ 1000)\)
  • \(a_i\leq100\)

容易发现,一定存在一种最优的答案, \(m\) 个数被分为了两个部分,分别填在数轴的一段前缀和一段后缀上,且前缀部分的 \(a_i\) 不升,后缀部分的 \(a_i\) 不降

证明:对于一个不满足该条件的方案,找到满足 \(x_i-1\)\(x_i+1\) 均没有放置数的 \(i\) ,设 \(x_i\) 左侧所有被放置的数之和为 \(s_1\) ,右侧为 \(s_2\) ,若 \(s_1>s_2\) ,将 \(x_i\) 改为 \(x_i+1\) 答案会增加 \(s_1-s_2\) ,在 \(s_1<s_2\) 时同理,故将所有数尽量往左 / 往右放置一定不劣

\(a_i\) 降序排序,记 \(a_i\) 的前缀和为 \(s_i\) ,从对数轴上每条边计算贡献入手

\(f_{i,\ j}\) 为考虑到前 \(i\) 个数,左侧已放置的数之和为 \(j\)

转移时,如果将数 \(i\) 放在左侧,我们考虑边 \((x_i,\ x_i+1)\) 的贡献,即 \(f_{i,\ j}=f_{i-1,\ j-a_i}+j\times(s_m-j)\)

同理,若数 \(i\) 被放在右侧,考虑边 \((x_i-1,\ x_i)\) 的贡献, \(f_{i,\ j}=f_{i-1,\ j}+(s_i-j)\times(s_m-s_i+j)\)

在最后加上中间没有被考虑到的边的贡献即可,答案为 \(\max\{f_{n,\ k}+(n-m-1)\times k\times(s_m-k)\}\)

时间复杂度 \(O(m^2a_i)\) ,状态可以滚掉一维

Problem F. Right Angle Painting

给定一个 \(n\times n\) 的网格,每个位置可以是障碍也可以是平地,给定起点,找到一种遍历所有点的路线满足:

  • 每一步只能从当前点走向与其四连通的点之一

  • 每个非障碍点被经过恰好一次,且不能经过障碍点、不能走出网格

  • 除了从起点出发的第一步,每一步的方向必须不同于上一步,例如这一步向上走,下一步就只能向左或向右走

判断是否能够找到一条合法路线

\(n\leq400\)

除了起点终点外,每个非障碍点恰好被一条横向边和一条纵向边经过

考虑枚举起点的方向和终点及其方向,如果存在一条合法路径,每一个不包含起点和终点的横向 / 纵向极长非障碍点连续段,必定长为偶数,相邻两个非障碍点必定存在一条横向 / 纵向边,而包含起点终点的横向 / 纵向极长连续段的长度为奇数。枚举后,合法路径至多只有一条,但需要搜一遍以判断是否连通

可能满足上述条件的终点及其方向只有 \(O(n)\) 个,时间复杂度 \(O(n^3)\)


ARC104

D - Multiset Mean

给定 \(N,\ M,\ K\) ,对于每个 \(x=1,\ 2,\ \cdots,\ N\) ,求出由元素 \(1,\ 2,\ \cdots,\ N\) 构成的,且每种元素出现次数在 \([0,\ K]\) 之中,平均数为 \(x\) 的可重集个数 \(\bmod M\)

\(N, K\leq100\)

一种暴力思路是,记 \(f_{i,\ j,\ k}\) 为取 \(N'=i\) 时,选了 \(j\) 个数,和为 \(k\) 的方案数,背包转移

枚举 \(x\) ,答案即为 \(\displaystyle\sum_k f_{n,\ k,\ kx}\)

我们想得到的 \(f_{n,\ j,\ k}\) 满足 \(k-j\times x=0\)

不妨将所有数减去 \(x\) ,答案为 \(\displaystyle\sum_kf'_{n,\ k,\ 0}\) ,第二维是没有必要的,可以省略

大力前缀和一下可以 \(O(N^5)\)

分别考虑减去 \(x\) 后,正数、\(0\) 、负数 对和的贡献,所选正数之和与所选负数绝对值之和相等,而 \(0\) 的出现次数可以为 \(0,\ 1,\ \cdots,\ K\) ,因此答案即为 \((K+1)(\displaystyle\sum_{k=1}^{sum}f_{x-1,\ k}\times f_{n-x, \ k}-1)\)

即做到了 \(O(N^4)\)

F - Visibility Sequence

\(N\) 座房屋排成一行,给定 \(X_i\) ,第 \(i\) 个房屋的高度 \(H_i\) 可以取到 \([1,\ X_i]\) 中任意一整数

对于每个 \(1\leq i\leq N\) ,记 \(P_i\) 为满足 \(H_j>H_i\) 的最大的 \(j\) ,如果没有则为 \(-1\)

考虑所有可能的 \(H_i\) ,求出可能的 \(P_i\) 序列的方案数 \(\bmod(10^9+7)\)

\(N\leq100\)

不难发现如果 \(X_i>N\) ,将 \(X_i\) 替换为 \(N\) 答案不变

考虑 \(H_i\) 的笛卡尔树,其中父亲的 \(H_f\) 不小于左儿子 \(H_{ls}\) ,大于右儿子 \(H_{rs}\)

题目即求可能的笛卡尔树形态方案数

\(f_{l,\ r,\ v}\) 为考虑区间 \([l,\ r]\) 构成的笛卡尔树,


SP5973 SELTEAM - Selecting Teams

\(n\) 个人,选出不多于 \(k\) 个人组成非空集合 \(A\) ,选一个集合 \(A\) 的非空子集 \(B\) ,再从 \(B\) 中选一个元素,求方案数 \(\bmod8388608\)

\(T\) 组询问

  • \(T\leq10^4\)
  • \(1\leq k\leq n\leq10^5\)

答案即为 \(\begin{aligned}&\displaystyle\sum_{i=1}^k\binom{n}{i}\sum_{j=1}^ij\times\binom ij\\&=\sum_{i=1}^ki\times2^{i-1}\binom ni\\&=n\sum_{i=1}^k2^{i-1}\binom{n-1}{i-1}\end{aligned}\)

注意到模数 \(8388608=2^{23}\) ,因此只有 \(i\leq23\) 才是有效的,暴力枚举即可

若模数是质数,记 \(S(n,\ k)=\displaystyle\sum_{i=0}^{k-1}2^i\binom{n}{i}\)

\[S(n,\ k)-S(n,\ k-1)=2^{k-1}\binom n{k-1} \]

\[\begin{aligned}S(n,\ k)-S(n-1,\ k)&=\displaystyle\sum_{i=0}^{k-1}2^i(\binom{n}{i}-\binom{n-1}{i})\\&=\sum_{i=0}^{k-1}2^i\binom{n-1}{i-1}\\&=2S(n-1,\ k-1)\end{aligned} \]

可以莫队

posted @ 2020-10-10 21:08  cnJuanzhang  阅读(153)  评论(0编辑  收藏  举报