CF2037
男儿何不带吴钩,收取关山五十州!
赛时发题解的行为是不是错的啊!
没有关系,反正也没写代码,万一假了呢!
E
考虑最小的 \(r\) 使得 \(f(1,r)\neq 0\)。如果不存在这样的 \(r\) 显然无解。否则一定有解。
考虑 \(f(1,r)\neq 0\) 能带来什么信息,必然有 \(s_r=1\),且 \(s_r\) 前面有 \(f(1,r)\) 个 \(0\)。其余的一段前缀全为 \(1\)。这样还原下去即可。交互次数 \(n-1\) 次。
F
二分答案,对于每个点处理出合法的 \(p\) 的区间。等价于询问是否存在一个点被覆盖 \(k\) 次。
这是简单的。
G
令 \(D(i)\) 表示 \(i\) 的因数集合。以下皆为递推按顺序考虑。
设走到 \(i\) 的方案数为 \(f_i\),则令 \(v_i=\sum\limits_{i|a_j} f_j\)。那么 \(f_i=\sum\limits_{j\in D(a_i)}2\times v_j-\sum\limits_{k\in D(j)}v_k\)。
枚举 \(j\),考虑做到 \(O(n\max(|D(i)|))\) 的时间复杂度。关键在于维护 \(\sum\limits_{k\in D(j)} v_k\)。这个东西显然可以利用维护因数个数进行维护。总时间复杂度大概 \(O(n\ln n+n\max|D(i)|)\)?我不好说。