0%

杂题记录

Every page of tragedy is thrown away Burned out in the flame

随便做

Edu111 D. Excellent Arrays

如果在 ii 位置上放了一个 i+ai+a 另一个位置是 jaj-a 和就能满足条件

显然最大值是一半选 +a+a 一半选 a-a 是个组合数

然后讨论下边界,有些地方不能任选

Submission

Edu112 E. Boring Segments

极差的话考虑排序之后双指针,维护全覆盖用线段树即可

Submission

Edu112 D. Say No to Palindromes

只有三个字符的无回文子串只能是 abcabc 这样的排列,一共 3!3! 种,每种都试一下做个前缀和即可

Submission

Edu112 F. Good Graph

考虑如果现在是一个好图,加入一个新边的影响,如果他连接了两个连通块肯定可以加

否则需要考虑生成树,首先需要保证异或和为 11 ,然后需要保证树上 uvu \to v 的路径都不是其他环

因为如果有环相交构成的大环就是 00 了,这个可以给边打标记,因为每个边仅被访问一次,所以直接树状数组大力加

Submission

CF721 Div2 D. MEX Tree

挺好想的,不太好写,mex=k\operatorname{mex}=k 的肯定是选择了 [0,k1][0,k-1] 的一条链加上不包含 kk 的某些点

找链可以直接跳上去拼接,但是去掉包含 kk 的点需要巨大多分类讨论,为了避免讨论可以差分一下,只用找包含 [0,k][0,k] 的路径

Submission

CF708 Div2 E2. Square-free division

暴力 dpi,jdp_{i,j} 表示前 ii 个修改了 jj 次的最小段,每次枚举前面的位置是 O(n2k)O(n^2k)

可以发现,能取的话肯定是取最靠前的最优,所以预处理 (r,i)(r,i) 表示点 rr 修改 ii 次最左边的位置即可 O(nk2)O(nk^2)

Submission

Edu109 E. Assimilation IV

大降智少推式子多动脑子

考虑每个点的概率,共 n!n! 种可能,被选到的是排列中至少有一个 ii 使得 i+aini+a_i \ge n 发现没啥好办法统计…

补集转化,一个都没有就需要第 nn 位至少是 22n1n-1 位至少是 33

直接乘起来统计即可

Submission

Edu109 C. Robot Collisions

只能在整数值相交意味着可以奇偶分开处理,每次相撞必然是里的最近的 LR 相撞

形如 LLRRLRLRLLLRL 的序列可以转换成括号序列,每次匹配的括号相撞,剩余的括号到了边界后反转后匹配

Submission

Edu113 D. Inconvenient Pairs

距离不等于曼哈顿距离的必然不在十字交叉口

考虑在横线方向上的答案 两个点不等于曼哈顿距离的一定处于两个不同的横线上,并且中间没有竖线,开个 map 统计即可

Submission

ABC224 F. Problem where +s Separate Digits

考虑每一位 xx 的贡献,如果他在从后往前数第 kk 个,它可以成为第 [1,k1][1,k-1] 位数,贡献分别为 x×10ix\times10^i

他成为第 ii 位的方案数是自己后面 ii 位都没有 ++ 的方案,总方案为 (12)n1(\frac{1}{2})^{n-1} 这种方案占比为 (12)i(\frac{1}{2})^{i} 需要注意因为最后不能放加号,所以他贡献为 x×10k1x\times 10^{k-1} 的方案应该是是 (12)k1(\frac{1}{2})^{k-1}

Submission

AGC035D Add and Remove

发现 a1a_1ana_n 没意义,一定只贡献一次

剩下的考虑计算每个元素对答案的贡献次数

反着进行这个过程,在 ai,ai+1a_i,a_{i+1} 种插入一个数,若 aia_i 被算了 kik_i 次这个数会被算 ki+ki+1k_i+k_{i+1}

反着推,设 dpl,r,m,ndp_{l,r,m,n} 表示第 ll 个算了 mm 次 第 rr 个算了 nn 次的最小贡献

有转移 dpl,r,m,n=min(dpl,k1,m,m+n+dpk+1,r,m+n,n+(m+n)ai)dp_{l,r,m,n} = \min(dp_{l,k-1,m,m+n}+dp_{k+1,r,m+n,n} +(m+n)a_i)

状态上界是 2n2^n

DFS 做就行

SPOJ PERIODNI

分成多个矩形后每个矩形块可以独立DP然后合并

分成矩形这个过程就是在笛卡尔树上做DP,设 dpi,jdp_{i,j} 是第 ii 个子树里放了 jj 个数的方案数,然后合并子树的方案后计算当前矩形的方案即可

CF501 Div3 F. Bracket Substring

dpi,j,kdp_{i,j,k} 表示当前是第 ii 位,栈高 jj ,匹配到了子串的第 kk 位,用 KMP 预处理一下匹配即可 O(n3)O(n^3)

CF Edu 114

VP了一场,卡在E的分类讨论了

A~C

D. The Strongest Build

爆搜题,不知道为啥看错题以为最后的构造要升序卡了一会儿

发现 nn1010 最有答案肯定是全选最大的,如果不能选最大的,就找一个位置选小一点的,然后堆优化BFS,第一个取出来的没被 ban 的就是答案

判断是不是被 ban 直接把 vector 塞进 map 里就行

因为没记录是否访问 MLE * 2 ,因为未知错误 WA * 2

Submission

E. Coloring

先考虑空的状态

发现如果有两个相邻的格子同色,那就可以直接递推出所有的状态了

2m22^m-2 减去了没有相邻同色的方案

而没有相邻同色的话每一行都可以决策是否与上一行相同或相反,即 2×2n12\times 2^{n-1}

如果加上限制,对于没有相邻同色的情况,意味着这一行被确定了,方案数要除 22 ,即 2空行2^{空行}

同理,对于有相邻同色的就是 2空列2^{空列}

还需要考虑有可能不能填成要求的状态,需要分类讨论

Submission

F. Occurrences

一个串出现的次数肯定不能比它的一个元素多,所以只要他的元素出现过,他就得出现过

如果把每个数按照序列顺序连边,每选定一个点就得把整个链放进去,如果这个链有分支或成环肯定是没办法选的

所以并查集维护能放进去的链,dp 方案即可

把连通块大小一样的一起做,最多只有 k\sqrt{k} 个,复杂度 O(mk)O(m\sqrt{k})

CF Edu106 D. The Number of Pairs

怎么又开始数学题了

g=gcd(a,b)g = \gcd(a,b) a=ag,b=bga'=\dfrac{a}{g},b'=\dfrac{b}{g}

则 $cga’b’-dg=x \Rightarrow ca’b’-d=\dfrac{x}{g} $

gxg|xk=xgk = \dfrac{x}{g}

ab=k+dca'b' = \dfrac{k+d}{c}

所以 ck+dc|k+d , 要求 gcd(a,b)=1\gcd(a',b')=1 那么 a,ba',b' 就是 k+dc\dfrac{k+d}{c} 的质因子集合划分,即 2c2^c 种方案

枚举 gg 即可

Submission

CF Edu 105 D. Dogeforces

因为权值互异,所以按 LCA 的权值排序合并恰好形成了树形结构

每次合并当前的两个节点到一颗子树里,用并查集维护

Submission

CF749 Div1+2 E. Moment of Bloom

图上奇偶性 -> 生成树 ?

首先如果存在被访问奇数次的节点肯定无解,大概挺好理解的,而如果有解直接在生成树上找路径即可

原因是如果叶子结点成为端点次数是偶数,那么他与父节点边权是偶数,如此归纳即可

Submission

CF Harbour.Space Scholarship Contest 2021-2022 H

一个很妙的做法

强制每个 xx 只能使用那些,与 xx 相比只有最低的 dd 位可能不同的元素。

考虑一位一位更新答案,设 f(x,d)f(x,d) 为数字 xxdd 位上的答案,维护 mmax(x,d)\mathrm{mmax}(x,d)mmin(x,d)\mathrm{mmin}(x,d) 为数字 xxdd 位的异或最大/最小值

mmax(x,d)=max(mmax(x,d1),mmax(x2d,d1)+2d=1)\mathrm{mmax}(x,d)=\max({\mathrm{mmax}(x,d-1),\mathrm{mmax}(x\oplus2^{d},d-1)+2^{d=1}})

mmin(x,d)=max(mmin(x,d1),mmin(x2d,d1)+2d=1)\mathrm{mmin}(x,d)=\max({\mathrm{mmin}(x,d-1),\mathrm{mmin}(x\oplus2^{d},d-1)+2^{d=1}})

对于 f(x,d)f(x,d) 仅需要决策 f(x,d),f(x2d,d),mmin(x,d)mmax(x,d)+2df(x,d),f(x\oplus2^d,d),\mathrm{mmin}(x,d)-\mathrm{mmax}(x,d)+2^{d} 即可

ARC114C Sequence Scores

考虑加入一个新数字 xx 在长度为 ii 的序列的贡献

如果 xx 不在其中,需要额外一次操作

如果 xx 插入的位置是一个低点,不需要操作

否则需要一次额外操作

F(i,x)F(i,x) 为这时的贡献,有 F(i,x)=mi1k=1i1(mx)i1k×mk1F(i,x)=m^{i-1}-\sum\limits_{k=1}^{i-1}(m-x)^{i-1-k}\times m^{k-1}

即枚举 xx 出现的位置,减去情况 22

O(nm)O(nm) 求和即可

2021江西ICPC省赛 C. 水晶洞窟

曼哈顿距离 x,yx,y 独立

要求的就是 n(n1)(n+1)6+max(i=1nj=i+1naiaj)(at[lt,ryt])\dfrac{n(n-1)(n+1)}{6}+\max(\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}|a_i-a_j|) (a_t \in [l_t,r_yt])

显然后边的最大值在 aia_i 都是端点处取到,设 f(a1,a1,,an)=max(i=1nj=i+1naiaj)(at[lt,ryt]f(a_1,a_1,\dots,a_n)=\max(\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}|a_i-a_j|) (a_t \in [l_t,r_yt] 则对 aia_i 差分得到

Δfi=j=1n[aj<ai][aj>ai]\Delta f_i=\sum\limits_{j=1}^{n}[a_j<a_i]-[a_j>a_i] 容易发现他单调不降,所以肯定是在端点取到最大值

继续贪心的想,aia_i 的分布应该尽可能"均匀"

证明咕

dpi,jdp_{i,j} 表示到了第 ii 层选了 jj 个放在左边的最大值

转移可以递推,假设一开始所有层的点都处在 l1,r1l_1,r_1 的位置上,左右各有 n2\dfrac{n}{2} 个,每次决策一个点把其他点放下去

Submission

CF750 Div2 E. Pchelyonok and Segments

显然最长区间不能超过 n\sqrt{n}

从前到后不好考虑,需要从后向前考虑,记 dpi,jdp_{i,j} 为第 ii 位后缀,存在一个区间 [l,r][l,r] 和为 rl+1=jr-l+1=j 的最大区间和

先转移 dpi,jdpi+1,jdp_{i,j} \gets dp_{i+1,j}[i,i+j1][i,i+j-1] 的区间和 <dpi+j,j1< dp_{i+j,j-1} 则可以选择这个区间

复杂度 O(nn)O(n\sqrt{n})

Submission

CF Edu 116 D. Red-Blue Matrix

考虑枚举 k[1,m1]k \in [1,m-1] ,转换下条件就是前 kk 列的蓝色区域最大值小于红色区域最小值

为了满足这个条件直接按照第一列的顺序排列,即选择染色至少是染前 ii 行蓝色,剩下的条件可以 O(1)O(1) 二维最大值检查

O(nm)O(nm)