2024.3 总结 2 / 她的所爱不断贬值最后现实发出一声冷笑

上一坑 写的时候把电脑弄炸了,可能某校的电脑支撑不了这个长度,所以再开一个。

这次是顺序总结。

鉴于笔者的懒惰变成了乱序总结。

然后写着写着懒得写了。。。。挑着记了。


link [tag: 网络流]

首先我们需要充分了解最大权闭合子图:对于一个有向图,点 u 有权 wuZ,边 uv 表示选了 u 就必须选 v,你需最大化 uSwu,其中 S 是满足边关系的点集。

做法是对于 wu0 的点建边 Su:wu,对于 wu<0 的点建边 uT:wu,对于限制建边 uv:inf。没有限制的话答案为 wu>0wu,我们希望知道至少减少多少贡献才能使得限制被满足,这个就是这个图的最小割,这个图很完整描述了不能同时满足的限制,说明如下:

  • u 的话必须选 v 那么必须满足所有选 v 的限制,在图上也恰好是给 u 接上了 v 的限制。

  • 一条增广路 Sp1pmT 表示了选择 S 就必须选 T,中间的 inf 一定不在最小割中,所以必须不要 p1 的贡献或者必须上交 pm 的贡献必须满足至少一种,这个一定被割隔开。

原题不考虑集合大小限制就是一个最大权闭合子图,现在考虑怎么加入 |S|=|N(S)| 的限制,因为题目给了 |N(S)||S| 的条件了,我们现在只需要约束 |N(S)||S| 也就是 |N(S)|,根据 hall 定理我们选出来的集合有完美匹配,这启发我们对于 SN(S) 我们可以随便钦定 |S| 对匹配关系,然后对于 S 我们不希望 N(S) 中有非匹配的元素,那么我们不妨将元素的代价全都加上一个很大的偏移量 Δ,然后匹配关系中元素要统一 +Δ 那么集合统一 Δ,这样子额外元素选了不优,匹配元素贡献抵消,再去做最大权闭合子图即可。


link [tag: 数据结构]

考虑四个格子放在一起考虑,对于一只格子,显然国王只有两种放置情况。

考虑去掉一个白色格子的影响,是钦定对应的一只格子只能放在 左上/右下,然后会带来一个二维区间的钦定影响,这个区间一定包含 (1,1) 或者 (n,m),现在就是要查询钦定有没有冲突。数据结构维护即可,这里使用了树状数组维护一个对应 y 的最大的区间长度,需要支持一个单点取 max 和前缀查询 max。


link [tag: 构造]

首先考虑最终单点询问次数 ci,必然要满足 ci 是奇数,k|ci,此时操作次数为 d=cik,还需要满足 max{ci}d

那么我们要小化 max{ci},那么可以先钦定 ci=1 然后做单点 +2 的操作直到合法,这个顺次操作直接按轮次做好像没什么非常非议......?

然后直接开堆每轮消除 kai 最大的即可,然后还有一个无解,我们应该有 2|dkn,分讨一下,如果 k 为奇数,前面可奇可偶,如果 k 为偶数,前面只能为偶数,因此 n 并非奇数。


link [tag: 状压,网络流 hall]

考虑一个人 navie 的二分+网络流建图,然后过不了,考虑将 k 拆开成点,变成了询问是否存在完美匹配。

Hall 定理:存在完美匹配的二分图一边的任意点集 S 满足 |S||N(S)|

然后需要考虑左部的点集为 i 时右边所联结的点数,这个相同的人的点压在一起所以是 2n 个状态。顺便处理出 sti 表示第 i 天所对的匹配点。

然后我们发现这个邻域不好做,因为难以合并,正难则反,考虑求一个更强力的东西,只在这个点集 i 里面有边的点数 fi,考虑一个天 x 只在哪些 i 里面有贡献,显然是 istx 的母集,高维前缀和可求 >w<

然后集合 i 的领域大小就是,「总点数」-「i 的补集的 f 」这样一个东西。


link [tag: 哈希,xor,主席树]

强制在线,不难想到主席树,比较朴素的想法是做一个权值主席树维护每个位置(指值域上的位置)每个时刻的出现次数,然后询问就询问最大的区间 [1,x] 满足 i[1,x],2|cnti[r]cnti[l1]

然后发现这个东西不太能直接合并......?考虑 xor 运算,正好奇数次有值,对于一个位置区间 [1,x] 满足寄掉的条件就是所有的 xor 为 zero,考虑随机赋权 xor 哈希。此时如果区间没有出现奇数次的,xor 为 zero,如果有出现奇数次的,因为 hash 值不一样,极大概率 xor 消不掉。然后就做完了 >w<


link [tag:贪心,xor]

首先这个路径 xor 显然可以直接换成 根->点 的 xor,然后就变成了考虑很多限制条件 (ai,aj,v),最小化结果不难想到按位贪心考虑。

对于每一位考虑在图上的情况,那么边为 0/1 ,意义是相同或者不相同,那么对于一个联通块,如果钦定一个点权,那么所有的都确定了。不合法其实就是二分图染色不合法了。

我们先随便钦定,然后会得到一个异或结果,但是我们考虑不同的钦定可能会导致结果更好,那我们考虑改变一个联通块的钦定所带来的影响。对于一个点,显然是奇数度数有印象,如果联通块的奇度点为奇数个,那么就是可以改变的捏。


P1667

煞笔题。考虑前缀和,发现其实就是交换两个位置,然后考虑置换换即可。


P6961

不难想到钦定边权付费至少为 x 再去考虑,这个可以枚举。

图论的话,考虑固定的代价 kx,那么对于所有的至少为 x 的边,新图上的新代价就是 vx,这样进行一个最短路的跑。

分类讨论一下容易发现怎么跑都大于等于 jury ans,于是乎......?


CF1615F

考虑对奇数位翻转,问题变成交换两个相邻哒。然后有一个小套路,就是你本来要算位置的 |xiyi| 嘛,其实可以算前缀和的 |aibi|,然后就可以 dp 不放设 pre[i][j] 表示前 i 位时候 aibi=j 的方案数,suf[i][j] 是后缀的这个,那么答案就是 pre[i][j]×suf[i+1][j]×|j|


CF1916F

不放令 T=NS,考虑初始钦定一个 xS,做下面过程 n11 次。

  • 删去 S,在 T 的导出子图跑点双,然后在 T 中随意选择一个非割点的点加入 S

如果能一直跑下去那么正确性显然,现在考虑会不会出现一个情况不能取到非割点的点。

考虑 T 中的点双,首先每个割点 y 必须与 S 有连边,不然的话原图不是点双。点双是一个树状物(圆方树),观察树状物肯定拥有的叶子节点,这个叶子节点中,去掉了 yS 应该是没有连边的,不然不是割,然后发现 y 很彻底的变成了一个原图的割点,不符合点双。


CF734F

经典结论 a&b+a|b=a+b,然后直接做就行了。

验证的话可以直接按位考虑和。


CF1043F

这个做法还算有意思。埃氏筛复杂度,优美。

首先一个数的质因子数量不会太多,可以证明答案上界只有 7。

可以考虑求一个 f[i] 表示选择 i 个数,gcd1 的方案数,我们取模防爆,如果方案数算出来为 0 那么极大概率是没有办法做到的,前面一维特别特别小,我们分别做。

比如说考虑选 d 个数 gcd 为 1 的方案数,考虑直接容斥,可以算成 f[d]=Ccntid×μ(i),其中 cnti 表示 i 的倍数的个数。


CF1305F

首先感觉 gcd{a}=d=2 的答案不会很大,所以有一个浅浅的上界 n,这意味着操作次数 >1 的最多有一半,那么最少有一半的数并 没有被操作 / 操作 1 次 / 操作 -1 次,这意味着随便挑一个数大概率是这种。

考虑这个 dai 的关系,显然有 d|ai 对叭 qwq

所以我们有一个粗浅的想法每次随机一个 i,贪心的求 d|(ai+0/1/1) 的答案,然后发现这样子仍然过不了。但是对于 d|d ,这个 d 就显得很没用了,所以可以直接筛质因数去跑。


CF505E

首先有一个显然的二分,判定能不能最终所有的高度 hiH

我们还是要考虑一下过程:

|--------------h---|---|---|---|
       |-H-----|-------|-------|

不难发现这个很难做,我们考虑倒着做,不妨初始令所有高度为 H,然后每天会减小 ai,可以拔高 p,在过程中不出现 ai<0 的情况下,这样子要求最终高度 hihi,相当于把 H 左边那一点往右边推了。

可以考虑贪心,每次考虑拿出最快要 ai<0 的拔高即可。


CF1626F

首先期望是假的,原柿求的是所有情况的 bi 之和。

f[i][j] 表示做了 i 轮之后所有的情况下 j 有多少个,这样最终的答案就是 f[i][j]×nki 啦。

然后题目有个取模,我们考虑对值域取模,令 tlcm{i},这个 t 上界不是很大(到 k1lcm)然后 f[i][j] 表示第 ibimodt=j 的方案数。

转移显然有 f[i][j]f[i1][j]×(n1),f[i][jjmodi]f[i1][j]

然后真实值又被扔掉了。 粗浅的看,感觉每一轮 j 的和都变成了 nj,大概是一个 n 的倍增,我们考虑算出每一轮的和,先令 sumsum×n,再考虑第二种转移对 sum 的影响。

贡献是 jjmodi,这个直接用方案数套进去就行了......?


CF1615E

理论上这个题目可以 wqs 二分套进去然后 dfn 序列做 dp 里面有一个决策单调性可以强行二分二分 dp 做掉这个数据结构题啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊。

首先分析一下先手的操作,一个点点掉实际上占掉了子树还有到跟的路径,那么显然叶子节点具有优先权。贪心地说,我们肯定先做叶子。

如果 levk,可以占用整个树,那么直接随便的最大化即可,枚举 i[lev,k],求出最大的 i×(ni)。之后我们讨论别的情况 >w<

不考虑 w 的话,比较显然的想法是最大化 l 和占用部分 ans,然后再最大化 r,然后我们发现最大化 l,ans 肯定是没问题的,如果我们不最大化的话,有两种影响,这里不被占用的白指的是可以给后手肆意玩弄的点:

  • 被占用的白 变成 不被占用的白:显然对于后手不会更劣

  • 红点变成 变成 不被占用的白:后手肯定可以选择染色这样子 w 不变前面减小

所以我们先求一个选择 k 个叶子节点,考虑路径并最大是多少。

我们对于叶子节点按照 dfn 建立线段树,每次查询到根路径中未被占用的点数最大的点 u,加入 u 的贡献,把 u 的贡献设为 inf 来删除,从 u 往上遍历,对于未占用的点,占用祂,对其子树做一个 1 操作来清除祂的贡献即可,这是一个区间修改的线段树。

这个贪心不是很显然,需要证明。假设一个最优方案不包含 u,取跟祂最近的 v,把 u 换成 v 答案不会更差。

先手一定了,考虑后手,可以选择染色的个数范围 i[0,nans],取一个最小的 (ki)(nki) 即可......?


CF468C

构造题真的创人 /shui

考虑一个 f(i+1018)=f(i)+1,然后 f(10181)=81×1018 是好求的,一堆 9 任意拼凑。

首先令 pf(10181)(moda)

i=110181f(i)=p(moda)

i=11018f(i)=p+1(moda)

不断把最低位换出去,得到

i=t1018+t1f(i)p+t(moda)

然后就直接

i=ap1018ap1f(i)=p+ap(moda)


P3590

仙题。

一个结论:答案区间至少有一个端点在 1,2,3,n2,n1,n 之一的位置,于是可以暴力去扫着做。

考虑证明,可以说明对于任意合法区间,如果左右都有至少 3 个字符,那么肯定可以拓展。

考虑一个合法区间 S,以及序列 ***S***,如果 S 只有一个字符,那么显然可以随便拓展。

现在考虑两个字符,不妨设字符 ABC 出现次数为 a>b>c,然后考虑能不能构造出不合法的情况。

  • 左右放 A, 显然可拓展,不这样构造

  • 左边放 B,不可拓展当且仅当 a=b+1,所以如果右边放 B 那么可以取到 b>a,那么右边一定放 C,我们考虑形如 **BSC**,为了右边不能被拓展必须有 c+1=b,那么 ABC 出现次数为 x+1,x,x1

*XBSC**,X 处只能放 C(A 会 ABC 一起然后合法,B 会 B 超过 A 但是 C 不变)。

XCBSC**,X 处还是只能放 C(A 会 ABC 一起然后合法,B 会 B 超过 A 但是 C 变成 x)。

CCBSCX*,X 处 ABC 都放不了(撒花。

  • 左边放 C,右边可以放 BC,我们剩下 CC 的情况分讨,首先有 c+1=b

*XCSC**,X 处不能放 C(C 超过 A 别的不变),不能放 A(C 等于 A 之后 A 再超过 C),只能放 B。

同理可得只能摆 *BCSCBX,然后 X 又是 ABC 都不行了 qwq

所以......?暴力然后过了。


CF364B

首先有一个 greedy,每一轮尽量多选择。然后朴素的想法每一轮跑 01 背包然后取最大价值,但是这样子会 tle。

事实上 01 背包初始的时候跑一次就可以了,因为如果有选择出重叠的部分,完全可以选择去掉这部分来取得同样的收益。


CF95E

不同种类的不会超过 n 种,然后直接优化多重背包即可。


CF1842H

随机 xi[0,1],限制条件 xi+xj1 / xi+xj1

后面那个我们可以考虑变形喵,不妨令 xixi0.5,然后就变成了:

随机 xi[0.5,0.5],限制条件 xi+xj0 / xi+xj0,好看多了是吧(

然后发现这个限制条件其实亦真亦假是由那个 绝对值 大的数决定的,不妨按顺序 dp。

在实数域上面随机,意思是差不多随机到两个相同连续的概率为 0,不用考虑啦,剩下的考虑一个排列的顺序就行了,考虑符号的话总情况数量是 2n×n!

f[j] 表示当前排列填了 1,...,BitCount(j) ,填的位置为 j 的方案数,然后我们考虑这个位置向外贡献,对于一个没有填的位置 i

我们考虑 st[][i] 对于填写 i 的影响:

  • 如果这个地方填 i,那么要满足 st[0][i]|j=j,转移到 f[j|1<<i1]

  • 如果这个地方填 +i,那么要满足 st[1][i]|j=j,转移到 f[j|1<<i1]

然后就做完了,答案是 f[2n1]2n×n! 啦 >w<

posted @   Hypoxia571  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示