CF 969 Div2
A
-
题意:
给定区间 [ l , r ] [l,r] [l,r],每次删除三个数 a , b , c a, b, c a,b,c,要求这三个数字两两互质,求最多删除几次
-
题解:
每次删除连续的三个数,要求第一个数是奇数即可
B
-
题意:
有一个数组 A A A,每次操作对在值域 [ l , r ] [l,r] [l,r] 的数字加一或者减一,要求每次操作后输出整个数组的最大值
-
题解:
每次操作不会改变整个数组的最大值的位置,只需要维护最大值即可
C
-
题意:
给定一个数组 A A A 和两个整数 a a a, b b b,每次可以选取数组中的某个元素加 a a a 或加 b b b,求最终数组 m a x − m i n max-min max−min 的最小值
-
题解:
因为 s a + t b sa+tb sa+tb 的正整数最小值是 gcd ( a , b ) \gcd(a,b) gcd(a,b),所以可以直接把操作看成对某个元素 + g c d ( a , b ) +gcd(a,b) +gcd(a,b) 即可
将每个 A i m o d gcd ( a , b ) A_i \bmod \gcd(a,b) Aimodgcd(a,b) 放入一个 s e t set set 中,然后每次令 s e t set set 的最小值加上 gcd ( a , b ) \gcd(a,b) gcd(a,b) 变成最大值后,再次去求整个数组中的极差,重复操作 n n n 次就行
D
-
题意:
给定一颗有根树,每个节点有
0
,1
,?
三种权值,Alice
和Bob
轮流将每个?
节点填入0
或1
。若 s s s 是一个字符串,若 s s s 中
01
和10
的个数相等,这个字符串算是好字符串。对于这棵树上每条根到叶子的字符串,Alice
想要最大化这些字符串中好字符串的数量而Bob
想要最小化。求两人在最优策略下,最终好字符串的数量。 -
题解:
如果一个字符串开头和结尾的字符一样,那么这个字符串就是好字符串
只有根节点和叶子节点是有用的
如果根节点不是
?
,直接填叶子节点,Alice
想要和根节点一样,Bob
想要不一样如果根节点是
?
,考虑所有叶子节点0
还是1
多如果某个元素多的话,
Alice
首先将根节点填上某个颜色,之后依次填即可如果叶子节点
0
和1
一样多的话,就是最后填根节点了注意,如果叶子节点
?
是奇数个的话,Alice
和Bob
需要去竞争谁最后去填写根节点的值具体细节看代码
E
-
题意:
给定一棵树,书上节点编号满足
dfs序
现在知道所有边的总权值 w w w, d i s ( i , i + 1 ) dis(i,i+1) dis(i,i+1) 表示节点 i i i 到节点 i + 1 i+1 i+1 的路径权值可能的最大值,初始每一条边的权值都不知道,每次会确定一条边的权值,求 ∑ i = 1 n d i s ( i , i + 1 ) \sum\limits_{i=1}^n dis(i,i+1) i=1∑ndis(i,i+1)(权值确定后不会撤回)
-
题解:
考虑每次确定一条边会发生什么
如果节点 i i i 到 i + 1 i+1 i+1 经过这条边,这条边如果是最后一条没确定的边,那么 d i s ( i , i + 1 ) dis(i,i+1) dis(i,i+1) 就确定了
否则 d i s ( i , i + 1 ) dis(i,i+1) dis(i,i+1) 一定是 w − v a l w-val w−val,其中 v a l val val 是所有确定边的权值和
直接模拟即可
F
-
题意:
假如有一个集合 S S S,每次可以选出奇偶性相同的 S i S_i Si 和 S j S_j Sj,然后将 S i + S j 2 \frac{S_i+S_j}{2} 2Si+Sj 插入集合
考虑数组 A A A,有多少连续子数组可以经过如上方法扩展成为连续的
-
题解:
假设一个集合 { x , y } \{x,y\} {x,y},一定会扩展为一个等差数列,公差是 y − x gcd ( y − x , 2 ∞ ) \frac{y-x}{\gcd(y-x,2^{\infty})} gcd(y−x,2∞)y−x
对于有序集合 { x , y , z } \{x,y,z\} {x,y,z},因为 { x , y } \{x,y\} {x,y}, { y , z } \{y,z\} {y,z}, { x , z } \{x,z\} {x,z} 都会形成等差数列,所以最后公差为 g c d ( y − x , z − y ) gcd ( gcd ( y − x , z − y ) , 2 ∞ ) \frac{gcd(y-x,z-y)}{\gcd(\gcd(y-x,z-y),2^{\infty})} gcd(gcd(y−x,z−y),2∞)gcd(y−x,z−y)
问题转化为,原数组的差分数组,每个元素除以其与 2 ∞ 2^{\infty} 2∞ 的 gcd \gcd gcd 后,有多少连续子段的 gcd \gcd gcd 为 1 1 1
可以
dp
, d p i , j dp_{i,j} dpi,j 表示以 i i i 为结尾, gcd \gcd gcd 为 j j j 的方案数,其中 j j j 可取的值只有 log 2 n \log_2 n log2n 个