闲话 23.3.2

闲话

APJifengc:
您都已经切 AGC 的 E 了 您太强了
您都已经写一个美元符号了 您太强了
不懂

发现 APJ 老师回家卷数奥的反常积分题
太强了
SoyTony:APJ 是美国间谍 —— 白宫咋不用支付宝?白宫还是太不懂了

how to solve

0π/2xtanxdx

upd:
SpyTony 走过来 拿了我一条咖啡
我看着他撕开 善意地提醒说用热水沏
他直接往嘴里干了一口
APJ:没带打火机咱可以不咬
随后 SoyTony 轻描淡写地喝了口水
然后咳*5
三口给干完了
瑞平 不行啊这(

Simu

T1
设一个点的标号是这个点作为被删除的子树的根对应的操作的编号。若一个点祖先中最小编号是 x,则它对 [1,x1] 的答案都有贡献。
这个可以直接从小到大枚举每个点后用父亲更新得到,随后维护差分即可。
不用 dfs,常数小点。O(n)

T2
对点 i 的答案就是每个点 ui 为根的子树内权值小于 u 的权值的点数之和,考虑换根。
以 1 为根的答案是易算得的,用树状数组统计即可。同时维护一个这个子树内权值小于 fa[u] 的权值的点数。
然后考虑换根。当根从 uv 时,v 对答案的贡献变为 0u 对答案的贡献为在以 1 为根时 v 子树内的点的贡献。
拿总数直接减就行了。O(nlogn)

T3
问题是经典的 dp,又带修,考虑上线段树维护。
若第 i 个字符是 ABC 中的第 0k2 个,则第 i 个位置的矩阵就是第 k 行全 1 的单位矩阵。
证明?考虑写出转移即可。
然后修改也很简单了。O(43nlogn)

T4
我怎么不会贪心?哦我一直不会啊那没事了。
原题是普及-,有个经典结论是答案就是 max(0,aiai1)
现在考虑配对。考虑一种贪心策略,遍历 bi,若有 bi>0 将其压入队列中,bi<0 则:若使得代价最大,与最靠左的 bi 配对;若使得代价最小,与最靠右的 bi 配对。
注意到 ai0 ,所以我们一定能找到数字配对。可以用交换法证明贪心的正确性。
O(n)

杂题

随机开 At 的题 开到了 AGC
很快啊 —— D 没看懂所以不写了

AGC019E

给定两个长度为 n 的 01 串 A,B。保证两个串内的 1 数量相同,设有 m 个。令 ai,bi 分别表示 A,B1 的所有下标按顺序排列组成的序列。随机打乱 a,b 序列,按这序列的下标 i 从小到大顺序交换 A[ai]A[bi]。令 p 表示操作完成后 A=B 的概率,请求出 p×(k!)2 在模 998244353 意义下的值。

1n104

很好玩的题啊(

答案就是计数满足结果有 A=B 的操作序列数量。
可以发现,我们若想使得 A=B,则需要构造操作序列,让 A 中多的 1 被转移到 B 中是 1A 中是 0 的位置。这种操作序列定形如 SUUT,其中 S,U,T 都指代一系列位置 k 中的一个,两个位置 k1,k2 写作 k1k2 表示交换 A[k1]A[k2]
S=a{k:A[k]=1B[k]=0}
U=a{k:A[k]=1B[k]=1}
T=a{k:A[k]=0B[k]=1}

可以发现,如果构造一个节点数为 n 的图,将一个操作看做 ab 的连边,则我们需要的就是一系列以 S 类位置开始,T 类位置结束,中间经过一系列 U 类位置的链。

考虑 dp 这个图的形态。由于 S,T 两类位置是对称的,他们的总数相同,记作 pU 类位置的总数记作 q。由于并不需要用到所有 U 类位置,我们可以在 dp 数组中加一维表示使用的 U 类位置数。
我们设 f(i,j) 为有 i 条链,包含 jU 类位置的图。则我们有两种转移:

  1. 可以加入一个 S 类位置和一个 T 类位置组成新的一条链,钦定放在末尾。这时我们从 i 个已有的 S 类位置中选一个,T 类位置同理,共 i2 种选法。
    f(i1,j)×i2f(i,j)
  2. 可以加入一个 U 类位置进一条链,钦定放在末尾。链彼此不同,位置彼此不同,共 i×j 种选法。
    f(i,j1)×ijf(i,j)

初值有 f(0,0)=1

答案的统计需要枚举用了多少个 U 类位置。假设有 k 个位置没有在链内,则 (pk)×(k!)2 就是他们内部形成的形态数;链间的配对方案数是 (mk)。即

k=0qf(p,qk)×(pk)×(k!)2×(mk)

总时间复杂度 O(n2)

Submission.


用组合结构刻画可以得到更优秀的复杂度。这里我们不妨钦定 ab 的对应关系,产生 k! 种排列方法,下面只需要确定顺序。

首先我们承接构造图的思想。从整体来看,有一些点的入度或出度为 1,另一些点的入度和出度都为 1。我们可以断言,这图一定是由一系列不交的链和环组成的。根据生成函数相关知识,我们只需要有标号地确定链/环的组合类形态,再用有标号方法组合,即可得到整个图的组合类。
设链的有标号类为 C,环的有标号类为 R

一条链一定形如 SUUT,我们可以先将全部 pS 有标号排列,每个 S 分别对应一个 T,这产生了 p! 种排列方法,在答案中乘入即可。剩下的节点都是 U 类节点。
对于长度(不计端点)为 k 的链,我们共有 k! 种方式分配非端点节点的标号,而且在 k+1 条边对应的 (k+1)! 种操作方案中只有一种是合法方案。可以写出

C(x)=k0k!1(k+1)!xkk!=k0xk(k+1)!=ex1x

图中可以有任意多个用任意非 0 数量的 U 类节点组合的环。
对于长度(所有点数)为 k 的链,我们共有 [k1]=(k1)! 种方式分配节点的标号,而且在 k 条边对应的 k! 种操作方案中每种都是是合法方案。可以写出

R(x)=k1(k1)!k!k!xkk!=k1xkk=ln(1x)

当然这个结论大概已被绝大多数人熟知,这里只是结合题目信息再次推导。

我们已经知道了图中共有 p 条链,同时确定了他们的起点和终点。链间有序,并且需要恰好取 p 个,因此作 p 次方的构造。环间无序,数量任意,因此作有标号 Set 构造。也就是

(ex1x)pexp(ln(1x))=11x(ex1x)p

这里需要提取的就是 q 次项系数,因为有 q 个点是 U 类节点。答案就是

k!p![xqq!]11x(ex1x)p

总时间复杂度 O(nlogn)

Submission.



AGC019F

n+m 个问题,其中有 n 个问题的答案是 YESm 个问题的答案是 NO。当你回答一个问题之后,会知道这个问题的答案,求最优策略下期望答对多少题。答案对 998244353 取模。

1n,m5×105

首先有个很自然的想法:当 nm 时,我们当然会选择作为更多题目的答案的选项。不妨假设 n>m,这样我们最开始总会先猜测答案是 YES
考虑把这个过程放在网格图上刻画:初始位置是 (n,m),需要到的位置是 (0,0)

n>m 时,考察猜测 YES 会产生什么影响。若猜对了,则 (n,m)(n1,m);反之会到 (n,m1)。最终我们一定会到达 y=x 上一点,记为 (i,i)
在这个过程中,我们答错了 mi 道题,答对了 ni 道题。
到达 y=x 上一点后,由于我们已知信息无法判断哪个更优,我们可以任意地选择回答 YES/NO。随后无论如何,我们又会回到 nm 的情景。

这样总的流程就很明晰了:我们总会不断回答一个答案,直到到达 (i,i)。在这之后,我们以 1/2 正确的概率回答一个问题,并重复前一句的操作。
容易发现,不在 y=x 线上的操作总使我们答对 max(n,m) 道题,而在 y=x 线上的操作有几率让我们多答对一道题。前一部分的统计是简单的,我们接下来只需要统计后一部分。

统计后一部分,也就是统计所有经过 (i,i) 点的折线数量,这些折线都有 1/2 的贡献。对 i 求和后除以总折线数就是期望了。
这数量是好统计的。拆成两部分,有答案即为 (2ii)(n+m2ini)

答案就是

max(n,m)+12(n+mn)i0(2ii)(n+m2ini)

总时间复杂度 O(n)

Submission.

posted @   joke3579  阅读(139)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示