2024.7 做题记录

7.7

P6891

dpi,j,0/1 为前 i 个选了 j 个 A 中的数,结尾是 A/B。交换维度,改为 pair dpi,0/1 表示前 i 个,结尾是 A/B,合法的 j 的范围。

CF1919F2

网络流建图,(s,i,ai),(i,i+1,ci),(i,t,bi)。转为最小割,线段树维护区间左右两端割 s 还是 t。如果 midtmid+1s,还要额外割 (i,i+1)

abc310g

期望转为总和除以 k。贡献分环和树做前缀和。

P4370

(nm)>(n1m),加入优先队列。数存不下,取对数比较。

log(nm)=logn!logm!log(nm)!=nlogimloginmlogi

7.8

CF1830D

MEX 值为 0/1/2,先令值都为 2 计算损耗。同时连通块之间有损耗。dpu,0/1,i 表示当前包含 u 的同色连通块颜色和大小时的最小损耗。大小一维不超过 O(n),计算完儿子就释放空间。

Q1281

枚举前后 i1j3maxi+j+min(saraj1salai,sbrbj1sblbi)

min,从后向前遍历 i,权值线段树。

CF1656H

等价于 xSA,gcdySBxgcd(x,y)=1。建 n+m 个线段树,单点删除。

CF1270H

连通块一定是序列上的一段连续的区间。等价于计算分段点,多少 p 使得 minipai>maxi>pai。对于每个 v 将序列改写为 01 序列,维护有几个 10v 是否出现。

Q1163

树剖,讨论 v 是否是 u 的祖先。vdis(u,v)av 等价于以 u 为根,每条边下的子树的 a 和。维护区间加一次函数,加子树大小。

CF1548E

给每个连通块定一个代表,按 ai+bj,ai,i 比较。预处理 i 左右比 ai 大的 lai,raimai=min(maxlaijiaj,maxijraiaj)(i,j) 能向更小的走一定能去到 (lai/rai,j)/(i,lbj/rbj) 。所以满足条件的 (i,j) 满足 ai+bjx,ai+mbj>x,mai+bj>x。扫描线。

Q1838

v1 为两个相交且第三个都无交,v2 为一个和两个都有交且另两个无交,v3 为三个两两有交。扫描线算出与 i 相交的数量 di(di2)=v2+3v3,di(n2)=2v1+4v2+6v3。只要求 v3

扫描线,在 li 最大的矩形上计数,再容斥为 (di2) 减两个无交。li<ra<lb<ri。线段树维护区间有几个左右端点,有多少对先右后左的端点对。

Q3029

求出每条边的断裂时间,用重构树回答询问。考虑树的情况,在 u 记录当前 vu 高低的上下界要求。对于 u 变化,判断在不在上下界内,再更新 fa 的上下界。到平面图,给边定向,希望 ufa 这样的出边尽可能少。每次找到度最小的点全部定为出边,出度小于 5

7.10

CF1844E

确定了第一行第一列就可以确定整个矩阵,每行每列差分值相同,取值只有 1,2。限制转换为差分值相等或相反,二分图染色。

CF1693F

希望每次操作 cnt0=cnt1 使贡献为 1。若整个序列 0 少于 1,就翻转并取反序列。每次找到最长的 cnt0=cnt1 前缀并删去 cnt00,直到 cnt0<cnt1 就补满 0 一次做完。

CF1656G

相当于从 (1,n)(n2,n2+1) 一对对填数,维护若干条链。除了最后一步,无论如何都能找到一对 (i,j) 入度为 0ai=aj 且不会形成环。如果 n 为奇数,找到一个 v 使得 vn+12tav 为奇数,可能无解。

Q5416

时间逆流,覆盖等于将区域设为通配符。每次保证至少增加一个通配符即可。

Q5504

线段树优化建图跑 2-sat。要在 DAG 上找到大小之和在 [n,2n] 中的后缀。如果不存在某个点大小大于 n,取拓扑序的一段前缀。否则判断一个大小大于 n 的点的前缀后缀是否符合条件。

CF1209G2

对于每个颜色的 [l,r)1,每个极长非零连续段答案独立,选区间出现次数最多的颜色。按最小值分割,线段树维护。

7.11

uoj698

前缀线性基求交,二分。

线性基 A,B 的交:对于每个 bi,如果能被 ab1bi1 子集异或出来,就把方案中属于 a 的异或和加入交中。

P2260

整除分块,ni 只有 n 种取值。

P3455

i=1nj=1m[gcd(i,j)=k]

=i=1nkj=1mk[gcd(i,j)=1]

=i=1nkj=1mkdgcd(i,j)μ(d)$$

=d=1nμ(d)nkdmkd

预处理 μ(d) 前缀和,整除分块。

7.13

loj3627

[ai=ci,j]+[bj=ci,j][ai=bj]n2,且当且仅当 a,b 合法时取等。

枚举 x=aiy=bj[ai=bj] 为定值,贪心最大化 [ai=ci,j]+[bj=ci,j] 检查。

P8340

从小到大加数,要保证 aisumi1。容斥,dpi 表示当前能表示出 [1,i] 。且总和为 i。等价于 i 的互异拆分数减去之前的 dpj 乘上 [j+2,i] 中的数和为 ij 的方案数。

求互异拆分数,数字个数 O(n) 个,等于从 n1 完全背包加入 i,表示有多少个数大于 i

dpj 贡献给 dpi 也形如求互异拆分数,有 i2×j。类似半在线卷积,前一半贡献给后一半。

7.14

P10778

找出一棵生成树,给非树边赋随机值,随机异或哈希,树边等于跨过该边的非树边的权值异或和。图不连通等价于若干条边的权值中存在子集异或和为 0,线性基。

P6647

k 分一段,每一段中使用的天数相同。dpi=maxj=ikk×i1kdpj+maxk=j+1iak。一段段计算,预处理前一段的后缀最大值,更新当前段的前缀最大值。

CF1730F

pqi 从小到大填入,设当前填完前缀 [1,i]i+1 没填,状压 [i+1,i+k] 是否填入。

CF1781F

合法状态数除以 2×i1dpi,x 表示还有 i 次插入,当前前缀和为 x

dpn,x=i=1j=1n1i(n1i)×(n1ij)×(p×dpi,x×dpj,x+1×dpn1ij,x+(1p)×dpi,x×dpj,x1×dpn1ij,x)

前缀和优化。

P10207

离散化后不同位置的球数小于 T。球会在最后一次经过时取到,设 dpl,r,0/1 表示取了 [1,l)(r,n] 的球。分类预处理先去 1 还是 n 号球。

CF1119F

dpu,0/1 表示当前在 u ,父亲边断不断。先令 dpu,0=dpu,1=dpv,0,再加上前 dx0/1 小的 dpv,1+wdpv,0

从小到大计算 ansx。如果 dux,就不用再考虑了,将 w(u,v) 加入 v 的堆中永不删除。每次要操作的点数之和为 diO(n) 级别。

Q1251

关键点在前后缀最大值。设 dpi,j,k 表示前 i ,之前的最大位于 j ,用了 k 次删除操作的面积奇偶性。只有删除操作才可能改变最大值位置,j 只有 k 种取值。对前后缀分别做,枚举最大值位置合并。

arc117e

连续段 dp,按前缀和从大往小加数,枚举这一层放多少点。

7.15

arc063d

答案不小于 2×(n+m)。如果答案矩形被包含于上左下右四个子矩阵中,一定不优,所以一定跨过横向中线或竖向中线。

扫描线枚举右边界,单调栈加线段树维护。

7.16

P5537

维护走向第几个儿子,记录从根到 u 的哈希值。二分,维护区间哈希值拼上根到 u 的哈希值,map 查找是否存在这个点。

P7717

找出生成树,对于每个连通块给根找一个数 v 使得 vdisuk 。等价于在 trie 树上禁止进入某个子树。

P1117

枚举答案长度,每个 k 分为一段。二分两段的最长公共前缀和最长公共后缀,平移后相交的区间意味着可以放下长为 k 的合法串。差分。

P3735

等于有一个长为 k 的通配符区间的方案数减去有长为 k1 的通配符的方案数。AC 自动机加入正着和反着的串。[1,p][p+k,n] 必须匹配,等于查询 u 的子树内有多少点与 v 有关,树状数组维护,在进入退出 u 时查询字子树和。

7.17

P7361

用 set 启发式合并 edp 集合,一个长度的贡献为相邻的 edp 点。贡献为 min(pll+1,len)。离线,扫描线。

posted @   yhddd  阅读(12)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示