【杂题乱写】2023-11#3
ARC147E
大概就是设 \(f(s)=\sum[a_i<b_i\le s]-\sum[a_i\le s,a_i<b_i]\)
我们显然期望 \(\forall s,f(s)\ge 0\)
对 \(s\) 扫描线,注意到 \(a_i\) 减 \(b_i\) 加,我们肯定希望 \(a_i\) 越大越好。那么把 \(b_i\le a_i\) 的 \(b_i\) 放到堆里,扫到某个 \(s\) 把堆里的 \(a_i\) 拿出来换换就行了。
CF936D
agc062b
agc062c
arc158e
ARC159D
ARC159C
ARC162D
ABC180F
仔细看看每个点度数小于等于 2 其实就是每个连通块是环/链。
那么 \(K\) 个点的环方案数是 \(\frac{(K-1)!}2\) 本质上是 \(K-1\) 个点的链然后用一个点把首尾连起来。链的就是 \(\frac{K!}2\)
DP 就是枚举新连通块多少点,有人说为了防止因为顺序导致的重复需要钦定剩下的点中最小的一个选中所以组合数减一。不过我的建议是因为你都知道一定是 \(n-m\) 个连通块所以直接除。
ABC326G
一眼就是 flow,每个点的每种等级建立一个点,边权表示升到该等级的代价。
如果这么填充信息就指向了最小割的做法,所以边从等级高往等级低连,流量是得到等级低的点对应的代价。对于每种奖励也搞一个点,从所有的限制连向它,边权 \(\infty\)。然后从他自己连向汇点,边权是奖励值。
这时候发现割掉奖励边的含义是不选择这条种奖励,于是最后答案就是所有奖励减去最大流。
ABC328G
We'll only use the first operation once. Thus we can use bitmask DP to obtain the answer.Every time we try to add a interval of unchosen integers to our mask. Time complexity will not be exceed \(\Theta(n2^n)\)
ABC325G
By observing the data constraints, we can realize the final algorithm will be interval DP.
When transferring the state \(f_{l,r}\) which means the answer of the interval [l,r],we have three choices:
Firstly,divide it directly into two seperate parts,add \(f_{l,x}\) and \(f_{x+1,r}\) to \(f_{l,r}\)
Secondly if s[l] is 'o', we can find all the x s fitting s[x]='f'. \(f_{l,r}\) will not be over \(\max(0,f_{x+1,r}-K)\) if \(f_{l+1,x-1}\) is 0
The last situation is quite similar to the second one but has s[r]='f'.
ABC327G
一眼数二分图。先数一数本质不同的二分图,然后把边可重地分给它们。这部分是斯特林数,但是因为这题的描述中位置不同也要按照不同来看,所以要乘阶乘。当然这题 \(M\) 相当大,我们需要暴力。
最后还有一个系数就是 \(2^{M}\) 因为二分图的边是无向的,而这题两个序列元素 id 还可以互换。
这种任意二分图肯定是先考虑计算联通图再把它们并起来,如果设简单二分图的数量为 \(f(n,m)\) 那么 \(g(n,m)\) 就是简单联通二分图的数量。
想刻画二分图最简单的方式还是黑白染色,于是我们先给求一个 \(h(n,m)\) 表示 \(n\) 个点随便染色,\(m\) 条边连接两个不同颜色的点的方案数。由于每个连通块都染了两次,所以我们计算一下 \(2g(n,m)\) 就是把 \(h\) 中的定义改成 \(m\) 条边搞出了一个连通块。
从 \(h\to g\) 的转移是枚举有多少点和 \(1\) 号联通,\(g\to f\) 的转移是逐次加入连通块(显然本质就是 \(\exp\)),那么钦定剩下没选连通块的点中的最小的属于新加进来的连通块就行了。
ABC329G
二叉树
二叉树
二叉树
从下往上和从上往下都会带着一定增量在走。每个点作为父亲先(后)遍历的儿子会给后(先)遍历的儿子带来多少增量是固定的,设为 \(fir_x,sec_x\)。走进某个点和走出某个点时必须垫的数也是固定的,设为 \(lim_x\)。
所以设 \(f_{x,c}\) 表示进 \(x\) 的时候垫了 \(c\) 的量在 \(x\) 里面转一圈的方案数。
如果 \(x\) 一个儿子。那么 \(dp_{x,\max(l_x,c)}\leftarrow dp_{s,c}\)
如果 \(x\) 两个儿子,那么不妨先经过 \(u\) 再 \(v\) 那么 \(dp_{x,\max(l_x,f+fir_x,s+sec_x)}\leftarrow dp_{u,f}\times dp_{v,s}\) 乍一看 \(\Theta(nK^2)\) 但是显然前缀和。