XXII Open Cup named after E.V. Pankratiev, Grand Prix of IMO 题解
A
题目链接
这么唐的题我怎么不会/fn
令最小数为 \(mn\),不难得到有解的充分必要条件是所有数都是 \(mn\) 的超集
考虑这样的构造:每个 \(b\) 中间插入 \(mn\),不难得出这个序列是合法的
时间复杂度 \(O(n)\)
submission
B
题目链接
感觉也不难捏
考虑把 \(\lfloor\frac{b_i\times i^k}{w}\rfloor\) 拆成 \(\frac{b_i\times i^k-(b_i\times i^k)\% w}{w}\) 的形式
我们现在就可以分开算 \(\sum b_i\times i^k\) 和 \(\sum b_i\times i^k \%w\)
直接放在线段树上做,考虑合并两个区间的影响
直接维护 \(i^k\) 不太好做,考虑用斯特林数拆幂,维护 \(0-k\) 次幂的结果
然后就好做了
时间复杂度 \(O(n\log n)\)
submission
D
题目链接
有一个朴素的 \(O(\frac{n^3\log V}{\omega})\) 的 二分 \(+ bitset\) 优化 \(dp\) 的做法,比较唐,不知道为啥能冲过
考虑不二分,而是从小到大依次加入 \(cost(i,j)\)
如果这使 \([i,j]\) 可以被构成,那就尝试更新其他点
能更新到的点不难用两个 \(bitset\) 组合得到,然后暴力跳未更新过的点即可
因为每个区间只会被跳一次,所以复杂度为 \(O(\frac{n^3}{\omega})\)
submission
F
题目链接
难绷题
显然可以转化成有两个数 \(a,b\),每次 \(a\) 可以变成 \(2a\%p\) 或 \((2a-x)\%p\),求到 \(b\) 的最小步数
不难发现,最小步数 \(\le 30\),且当步数为 \(d\) 时,\(a\) 可以变成 \((2^da-kx)\%p(0\le k<2^d)\)
到了这一步,我就卡住了
题解的做法还是妙的,把等式两边都 \(\times x^{-1}\),这样就变成 $a $ 的可达范围是一个区间,这就显然了
时间复杂度 \(O(q\log p)\)
submission
G
题目链接
手玩题
自己造几个数据,尝试算一下两种的方案数,发现会算重,但重复部分是相同的,相减就对了,没啥好说的
时间复杂度 \(O(\frac{n^3}{\omega})\)
submission
H
题目链接
什么几把构造!是人想到的吗?!
\(k\le 20\) 显然构造一个环即可
考察下面这个构造:先构造一个长度为 \(a\) 的完全图,然后构造一条长度为 \(b\) 的链,链的两端接在完全图的两点上
考虑这样会形成的合法点对数:\(\frac{a(a-1)}{2}+b-1+2(a-1)\)
打表发现可以构造出 \(20\le k\le 60\) 的所有数
submission
I
题目链接
之前帮 zhak 验题时做过,现在忘了/gg
submission
J
题目链接
假设 \(p,q\) 固定,怎么求 \(f(p,q)\)?
发现 \(p,q\) 两个序列可以缩成一个序列,即把 \(q\) 按照 \(p\) 升序排列
考虑满足条件的 \(01\) 序列的形态:不存在 \(i<j,p_i>p_j\),\(s_i=1,s_j=0\),不难发现这便是充要条件
找到一条上升子序列,以这个为分界线,前面填 \(0\),后面填 \(1\),不难发现这和合法的 \(s\) 序列时一一对应的
所以合法的 \(s\) 个数即为转化后 \(q\) 的上升子序列个数
\(O(n^4)\) 计数就比较唐了,这里不再赘述,这已经可以过题了
题解说可以点值优化到 \(O(n^3)\),但我不会
submission
K
题目链接
太困难了,基本是贺的
贺的做法是找到一个集合,大小为 \(22\)(我也不知道咋找到的),求出这个集合中能凑出数 \(x\) 的次数,用这个做一个背包,发现恰好可以构成 \(1-10^6\) 中的所有数
构造方案的话只要集合中的数为正,背包用到的数(需要大于总和的一半)为负
时间复杂度 \(O(2^{22}+35\times 10^6+t)\)
submission
L
题目链接
打表找规律题
\(lcs\) 的下界为 \(n\),不过这好像没啥用
先打表,发现合法的只有两种情况:
- \(s: ABAB...A,\;\)\(t:C?C?...C\),\(?\) 表示 \(A\) 或 \(B\),其中 \(A,B,C\) 可以互换
- \(s:?A?A...A?,\;\)\(t:?A?A..A?\),且 \(s\) 序列的问号部分一段前缀为 \(A\),一段前缀为 \(B\),\(t\) 的问号部分与 \(s\) 恰好相反,其中 \(A,B,C\) 可以互换
然后就可以直接计数了,需要减去同时计算的部分
时间复杂度 \(O(\sum n)\)
submission
M
题目链接
唐题,暴力就能过
submission

浙公网安备 33010602011771号