2024.11.21 test
A
给定序列 \(a\),只有三种值,问最长的区间满足只有一种值出现,或者三种值的出现次数互不相同。
\(n\le 10^6\)。
一个 trick,三种值出现次数不同的话考虑钦定大小顺序,设 \(cnt_0<cnt_1<cnt_2\)。
那么,\(s_{r,1}-s_{r,0}>s_{l-1,1}-s_{l-1,0}\),\(s_{r,2}-s_{r,1}>s_{l-1,2}-s_{l-1,1}\),\(r\ge l\)。
虽然这是个三维偏序,但是对于每个 \(r\) 我们只求最小的 \(l\),所以不需要关心 \(r\ge l\)。
那么就是二维偏序 \(O(n\log n)\)。
B
解析 CSS。大模拟。
考虑 unordered_set unordered_map 极限通过。
C
\(n\) 张卡牌,每张的值为 \(a_i\),双方轮流选卡片,使得所有选出卡片的 \(\gcd\) 变为 \(1\) 或没有牌可以选的人负。
问先手胜还是负。同时问双方随机选数先手的胜率。\(n\le 100,a_i\le 1e5\)。
考虑设 \(f_{i,d}\) 表示当前 \(\gcd=d\),且已经选了 \(i\) 个数的答案。显然当前已选的都是 \(d\) 的倍数。
枚举下一个选择的会转移到哪个 \(d\) 即可。