2022-09-04 20:10阅读: 123评论: 1推荐: 1

ABC267题解

E

Problem

给定一张 n 个点 m 条边的无向图,点 i 有一个点权 Ai

接下来你要在这张图上进行 n 次操作,每次操作选择一个没有被选择过的点,删除该点以及所有和该点相连的边,定义删除该点的代价为所有与它直接相连的点的权值和。

接下来,你需要求出一个最小的阈值,使得每次操作的花费不得超过该阈值。

Scope Limitation

1n2×105,0m2×105

Solution

很容易想到二分答案。

每次判断的方式也相当简单,设二分出的阈值为 x,由于每个点的花费只会随着操作的进行而减小,所以只要一个点的花费小于阈值,就将其丢进队列,如果凭借这种方式能够遍历全图,则证明该阈值下,能够完成操作。

F

Problem

给定一个 n 个点的树,定义两点间的距离为两点最短路径经过边的数量。

给定 Q 个询问,每个询问给定两个值 UK,询问树上是否存在与点 U 距离为 K 的点,若存在,输出任意一个,否则输出 1

Scope Limitation

1n2×105,1Q2×105

Solution

显然,对于每一个询问,我们需要找到距离 U 最远的点,则所有不为 1 的答案都可以在其上找到。

不难想到处理出这棵树的直径,找到直径之后,以直径上的所有点为根,处理出不在直径上的点的倍增函数以及深度,则容易进行如下判断:

  • 若询问点深度大于等于 K,则直接倍增向上跳。

  • 若询问点深度小于 K,则直接跳到这棵子树在直径上对应的根,向更远的一段走即可。

G

Problem

给定一个长度为 n 的序列 A

求符合如下要求的长度为 n 的排列 P的数量:

  • 恰好存在 K 个不同的 i(i<n) 满足 APi<APi+1

998244353 取模。

Scope Limitation

1n5000,1Ain

Solution

不难发现,题意等价于重新排列 A

考虑一种确定新的排列 A 的方式,我们将 A 中的元素从小到大放入 A

初始时,令 A={0,0},如果最后的序列形如 {2,1,3},那么,A 变化的过程依次为:{0,1,0},{0,2,1,0},{0,2,1,3,0}

由于 Ai 不小于 1,我们插入的元素必须在两个 0 之间,所以有一个多余的贡献,则我们最后需要 K+1Ai<Ai+1

由于我们规定的顺序,思考插入一个数之后 Ai<Ai+1 数量的变化:

  • 首先,插入一个 xAi<Ai+1 之间,此时其数量必然不会发生变化,因为 xAi+1>Ai
  • 若插入一个 xAi>=Ai+1 之间,此时数量可能会增加 1,但是需要注意相同的数的数量,所以我们需要维护一个变量,记录已经插入到 A 中和 x 相同的数的数量。

于是我们维护 dpi,j 表示插入了 i 个数,有 j 个位置满足 Ai<Ai+1,则可以在 O(nK) 的时间复杂度内解决该为题。

Ex

Problem

给定一个长为 n 的序列 A,求该序列有多少个包含元素个数为奇数个的子序列,满足其和恰好为 M,答案对 998244353 取模。

Scope Limitation

1n2×105,1M106,1Ai10

Solution

定义一个 dpi,j 为当前选择的元素的和为 i,元素个数模 2j 的方案数。

直接转移复杂度达到了 O(nM),显然不可取。

dpxi=j=0dpj,ixj,即 dpxi 为一个多项式,元素的和 jx 的质数,设已知两个多项式 dpxdpy,考虑如何将其转移为 dpz

  • dpz0=dpx0×dpy0+dpx1×dpy1
  • dpz1=dpx0×dpy1+dpx1×dpy0

即为一个卷积运算。

那么,我们将初始的若干个元素,每个元素单独成立一个多项式,并将其加入一个多项式的集合 f,每次,我们取出 f 中的前两个元素,将他们卷积,再放入末尾。

虽然多项式的长度质数级增长,但 f 中的元素个数同样质数级减小,故而我们可以在 O(nlognlogM) 的时间复杂度内解决这个问题。

更具体的,对于元素 Ai,我们令其对应的多项式,零次项和 Ai 次项系数设为 1,分别代表空集和单独选择元素 Ai,这样我们做出来没有考虑奇偶性,最后多项式的 M 次项对应的答案为奇数加偶数。

我们再做一遍同样的过程,这次将零次项系数设为 1Ai 次项系数设为 1,这样卷积过后,最后多项式 M 次项对应的答案为偶数减奇数。

将两次答案相减,可得两倍奇数,除二即为正确答案。

本文作者:未央境

本文链接:https://www.cnblogs.com/Defoliation-ldlh/p/16655881.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   ╰⋛⋋⊱๑落叶๑⊰⋌⋚╯  阅读(123)  评论(1编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起