【杂题乱写】牛客练习赛114
按道理来说前两天还玩了个div3,但是都会做就懒得写了。
A
倒着排序,判断一下
B
单局分胜负概率求出便可知道结束的期望轮数
C
求出来极长的段 \([l_1,r_1]\dots [l_m,r_m]\)
那么设 \(f_i\) 表示凑出来 \(1\dot i\) 所使用的最小段数(只有 \(\exists r_k=i\) 或者 \(i=m\) 的 \(i\) 才有用)
转移找到最长的右端点是 \(i\) 的区间,中间的 \(f_j\) 取最小值即可。可以通过将 \(r_i\) 换成前缀 \(\max\) 并把所有 \(f_i\) 均合法化来实现去掉 \(\log\)
D
考虑一种贪心:如果 \(cnt_{i+1}\ge cnt_i\) ,那么应当将以 \(i\) 结尾的顺子缀上 \(i+1\)
于是模拟判断即可。
如果将输入牌号变成输入每张牌几张,那么可以通过修改差分数组这个角度来模拟。
E
期望线性性把总数平摊到人。期望线性性把每个人的总收益平摊到每轮的收益,这时候设 \(f_{i,j}\) 表示前 \(i\) 轮过后,最后 \(j\) 次没有收益的概率。
还有一种想法比较出色,倒序开局,设从当前状态 \(f_{i,j}\) 到最后结束的期望收益,初始化只有最后一轮有收益的是 \(1\) ,其他全是 \(0\) 即可。最后答案取 \(f_{1,0}\)
F
预处理每个前缀的最长后缀,满足这个后缀中所有数字互不相同。(尺取法)
预处理每个前缀的最长后缀,满足这个后缀呈现 \(ʌ\) 形(可以先计算以 \(i\) 为结尾的最长递增,再反向计算以 \(i\) 为开头的最长递增,拼起来)
取两种后缀中较短的就是合法区间了!
方案就是从最高的开始,两边哪个高跳哪边
G
把边权 xor 到点权上,即记每个点的点权为所有出边的边权 xor 值。把这些点权扔到线性基里面求最大异或和即可
为什么呢?构造方案的方法是对最大异或和有贡献的点涂成一种颜色,一条边如果两个端点同色,那么 xor 会被抵消

浙公网安备 33010602011771号