Every page of tragedy is thrown away Burned out in the flame
随便做
Edu111 D. Excellent Arrays
如果在 i 位置上放了一个 i+a 另一个位置是 j−a 和就能满足条件
显然最大值是一半选 +a 一半选 −a 是个组合数
然后讨论下边界,有些地方不能任选
Submission
Edu112 E. Boring Segments
极差的话考虑排序之后双指针,维护全覆盖用线段树即可
Submission
Edu112 D. Say No to Palindromes
只有三个字符的无回文子串只能是 abc 这样的排列,一共 3! 种,每种都试一下做个前缀和即可
Submission
Edu112 F. Good Graph
考虑如果现在是一个好图,加入一个新边的影响,如果他连接了两个连通块肯定可以加
否则需要考虑生成树,首先需要保证异或和为 1 ,然后需要保证树上 u→v 的路径都不是其他环
因为如果有环相交构成的大环就是 0 了,这个可以给边打标记,因为每个边仅被访问一次,所以直接树状数组大力加
Submission
CF721 Div2 D. MEX Tree
挺好想的,不太好写,mex=k 的肯定是选择了 [0,k−1] 的一条链加上不包含 k 的某些点
找链可以直接跳上去拼接,但是去掉包含 k 的点需要巨大多分类讨论,为了避免讨论可以差分一下,只用找包含 [0,k] 的路径
Submission
CF708 Div2 E2. Square-free division
暴力 dpi,j 表示前 i 个修改了 j 次的最小段,每次枚举前面的位置是 O(n2k) 的
可以发现,能取的话肯定是取最靠前的最优,所以预处理 (r,i) 表示点 r 修改 i 次最左边的位置即可 O(nk2)
Submission
Edu109 E. Assimilation IV
大降智少推式子多动脑子
考虑每个点的概率,共 n! 种可能,被选到的是排列中至少有一个 i 使得 i+ai≥n 发现没啥好办法统计…
补集转化,一个都没有就需要第 n 位至少是 2 第 n−1 位至少是 3
直接乘起来统计即可
Submission
Edu109 C. Robot Collisions
只能在整数值相交意味着可以奇偶分开处理,每次相撞必然是里的最近的 LR 相撞
形如 LLRRLRLRLLLRL 的序列可以转换成括号序列,每次匹配的括号相撞,剩余的括号到了边界后反转后匹配
Submission
Edu113 D. Inconvenient Pairs
距离不等于曼哈顿距离的必然不在十字交叉口
考虑在横线方向上的答案 两个点不等于曼哈顿距离的一定处于两个不同的横线上,并且中间没有竖线,开个 map 统计即可
Submission
ABC224 F. Problem where +s Separate Digits
考虑每一位 x 的贡献,如果他在从后往前数第 k 个,它可以成为第 [1,k−1] 位数,贡献分别为 x×10i
他成为第 i 位的方案数是自己后面 i 位都没有 + 的方案,总方案为 (21)n−1 这种方案占比为 (21)i 需要注意因为最后不能放加号,所以他贡献为 x×10k−1 的方案应该是是 (21)k−1
Submission
AGC035D Add and Remove
发现 a1 和 an 没意义,一定只贡献一次
剩下的考虑计算每个元素对答案的贡献次数
反着进行这个过程,在 ai,ai+1 种插入一个数,若 ai 被算了 ki 次这个数会被算 ki+ki+1 次
反着推,设 dpl,r,m,n 表示第 l 个算了 m 次 第 r 个算了 n 次的最小贡献
有转移 dpl,r,m,n=min(dpl,k−1,m,m+n+dpk+1,r,m+n,n+(m+n)ai)
状态上界是 2n
DFS 做就行
SPOJ PERIODNI
分成多个矩形后每个矩形块可以独立DP然后合并
分成矩形这个过程就是在笛卡尔树上做DP,设 dpi,j 是第 i 个子树里放了 j 个数的方案数,然后合并子树的方案后计算当前矩形的方案即可
CF501 Div3 F. Bracket Substring
设 dpi,j,k 表示当前是第 i 位,栈高 j ,匹配到了子串的第 k 位,用 KMP 预处理一下匹配即可 O(n3)
CF Edu 114
VP了一场,卡在E的分类讨论了
A~C
略
D. The Strongest Build
爆搜题,不知道为啥看错题以为最后的构造要升序卡了一会儿
发现 n 才 10 最有答案肯定是全选最大的,如果不能选最大的,就找一个位置选小一点的,然后堆优化BFS,第一个取出来的没被 ban 的就是答案
判断是不是被 ban 直接把 vector 塞进 map 里就行
因为没记录是否访问 MLE * 2 ,因为未知错误 WA * 2
Submission
E. Coloring
先考虑空的状态
发现如果有两个相邻的格子同色,那就可以直接递推出所有的状态了
即 2m−2 减去了没有相邻同色的方案
而没有相邻同色的话每一行都可以决策是否与上一行相同或相反,即 2×2n−1
如果加上限制,对于没有相邻同色的情况,意味着这一行被确定了,方案数要除 2 ,即 2空行
同理,对于有相邻同色的就是 2空列
还需要考虑有可能不能填成要求的状态,需要分类讨论
Submission
F. Occurrences
一个串出现的次数肯定不能比它的一个元素多,所以只要他的元素出现过,他就得出现过
如果把每个数按照序列顺序连边,每选定一个点就得把整个链放进去,如果这个链有分支或成环肯定是没办法选的
所以并查集维护能放进去的链,dp 方案即可
把连通块大小一样的一起做,最多只有 k 个,复杂度 O(mk)
CF Edu106 D. The Number of Pairs
怎么又开始数学题了
设 g=gcd(a,b) a′=ga,b′=gb
则 $cga’b’-dg=x \Rightarrow ca’b’-d=\dfrac{x}{g} $
即 g∣x 设 k=gx
则 a′b′=ck+d
所以 c∣k+d , 要求 gcd(a′,b′)=1 那么 a′,b′ 就是 ck+d 的质因子集合划分,即 2c 种方案
枚举 g 即可
Submission
CF Edu 105 D. Dogeforces
因为权值互异,所以按 LCA 的权值排序合并恰好形成了树形结构
每次合并当前的两个节点到一颗子树里,用并查集维护
Submission
CF749 Div1+2 E. Moment of Bloom
图上奇偶性 -> 生成树 ?
首先如果存在被访问奇数次的节点肯定无解,大概挺好理解的,而如果有解直接在生成树上找路径即可
原因是如果叶子结点成为端点次数是偶数,那么他与父节点边权是偶数,如此归纳即可
Submission
CF Harbour.Space Scholarship Contest 2021-2022 H
一个很妙的做法
强制每个 x 只能使用那些,与 x 相比只有最低的 d 位可能不同的元素。
考虑一位一位更新答案,设 f(x,d) 为数字 x 在 d 位上的答案,维护 mmax(x,d) 和 mmin(x,d) 为数字 x 在 d 位的异或最大/最小值
mmax(x,d)=max(mmax(x,d−1),mmax(x⊕2d,d−1)+2d=1)
mmin(x,d)=max(mmin(x,d−1),mmin(x⊕2d,d−1)+2d=1)
对于 f(x,d) 仅需要决策 f(x,d),f(x⊕2d,d),mmin(x,d)−mmax(x,d)+2d 即可
ARC114C Sequence Scores
考虑加入一个新数字 x 在长度为 i 的序列的贡献
如果 x 不在其中,需要额外一次操作
如果 x 插入的位置是一个低点,不需要操作
否则需要一次额外操作
即 F(i,x) 为这时的贡献,有 F(i,x)=mi−1−k=1∑i−1(m−x)i−1−k×mk−1
即枚举 x 出现的位置,减去情况 2
O(nm) 求和即可
2021江西ICPC省赛 C. 水晶洞窟
曼哈顿距离 x,y 独立
要求的就是 6n(n−1)(n+1)+max(i=1∑nj=i+1∑n∣ai−aj∣)(at∈[lt,ryt])
显然后边的最大值在 ai 都是端点处取到,设 f(a1,a1,…,an)=max(i=1∑nj=i+1∑n∣ai−aj∣)(at∈[lt,ryt] 则对 ai 差分得到
Δfi=j=1∑n[aj<ai]−[aj>ai] 容易发现他单调不降,所以肯定是在端点取到最大值
继续贪心的想,ai 的分布应该尽可能"均匀"
证明咕
设 dpi,j 表示到了第 i 层选了 j 个放在左边的最大值
转移可以递推,假设一开始所有层的点都处在 l1,r1 的位置上,左右各有 2n 个,每次决策一个点把其他点放下去
Submission
CF750 Div2 E. Pchelyonok and Segments
显然最长区间不能超过 n
从前到后不好考虑,需要从后向前考虑,记 dpi,j 为第 i 位后缀,存在一个区间 [l,r] 和为 r−l+1=j 的最大区间和
先转移 dpi,j←dpi+1,j 若 [i,i+j−1] 的区间和 <dpi+j,j−1 则可以选择这个区间
复杂度 O(nn)
Submission
CF Edu 116 D. Red-Blue Matrix
考虑枚举 k∈[1,m−1] ,转换下条件就是前 k 列的蓝色区域最大值小于红色区域最小值
为了满足这个条件直接按照第一列的顺序排列,即选择染色至少是染前 i 行蓝色,剩下的条件可以 O(1) 二维最大值检查
O(nm)