2023.11.5 近期杂题

CF285E

如果我们强制令 i 个位置满足 |Pii|=1,其他任意,记这个方案数是 F(i).
对于恰好有 m 个位置满足条件的,记其为 G(i),发现 F(m)=i=mnCim×G(i)
这是因为每个恰好 m 个满足条件的,会在 F(i) 被统计 C(i,m) 次。
二项式反演得到 G(m)=i=mn(1)im×Cim×F(i)
关于 F 的求法,我们可以设计一个 dp,fi,j,0/1,0/1 表示前 i 位选了 j 个,i 是否被选,i+1 是否被选。
F(i)=(ni)!×f(i)

CF808E

考虑三种重量分开计算,对于重量相同的,肯定是贪心取大的。
先求出不选 3 的最大答案。
我们现在枚举 3 取多少个,注意到每次 1,2 个数的改变是小的,通过证明是在 [1,4] 之间。
那么枚举这个小的变化,同时更新答案。

CF280C

考虑拆贡献,设 fii 被选中次数,Ans=E(fi)=E(fi).
如何计算 fii 如果被选那么 i 的祖先一定不能先选,设 i 的深度是 depi,那么 fi=1depi.
Ans=1depi.

CF985G

考虑容斥,计算总贡献再减去连 1,2,3 条边的。
3 条边,直接跑三元环即可。
1 条边,枚举这条边,剩下那个点任意。注意这里会把连 2 条边的计算了两次。
2 条边,枚举中间那个点,再枚举其中一条边,计算贡献。此时贡献是 1,因为被多算了。

CF788C

看出来要求平均数是 n 最少代价。
把每个数都减去 n,那么现在要求和是 0 的最小代价。
直接背包,或 BFS。

CF487E

考虑图上的路径性质并不好,考虑建树。
发现可以建出圆方树。每个方点存储其儿子的 multiset。
直接套上树剖即可。

CF1370F2

首先第一次询问可以把所有点都询问,得出 x,dis
考虑以 x 做根,考虑二分深度 d,每次询问 d 深度的所有点,如果 dis>dis,那么 u,v 肯定深度小于 d
这样可以询问出深度大的点 u,再把 u 距离为 dis 的点询问一遍得到 v
注意二分的下届可以调成 dis/2,可以少一次询问。

CF914F

考虑 bitset 乱搞,每个字符存一个 bitset,存储其位置。
匹配的时候就每个字符所有位置一起匹配,匹配的结果与起来就是答案。
如果询问区间的话就在 bitset 右移差分。

CF351C

套路的把左括号看成 1,右括号 1
对于每个长度为 n 的块,首先 dp,设 gi,j,k 表示当前考虑到 i,前缀最小值是 j,当前前缀是 k
每个块作为阶段转移,但是状态还要存一维,表示当前前缀。
注意到前缀和只需要开 [0,2n] 就够了。因为块的顺序是可以合理的调换的。
由于 m 比较大,可以使用矩阵乘法优化。

CF559E

先把 ai 从小到大排序。
考虑设计状态 fi,j,o 表示当前处理到 i,最右边的是 j,方向为 o
如果 i 转移到 i+1,会出现问题,如果 i+1 覆盖了 i 之前的贡献我们无法计算。
考虑 i 直接转移到 k,并忽略 [i+1,k1] 的贡献,尽管可能算错,但是最优方案一定被计算了。
但是还有问题,那就是最右边点的问题,对于 [i+1,k1] 的点超过了 k,我们没有计算到。
那么我们可以顺便取上 [i+1,k] 右端点的最大值。

posted @   s1monG  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示