A
- 考虑两队的领先情况改变,那么一定有某一时刻两队的比分相等
- 于是首先检查最开始的领先队伍,再检查现在的领先队伍,如果前后不同,则 \(YES\),否则 \(NO\)
B
- 注意到当 \(x=1\),则会进入循环,手模一下发现 \(ans=k\%(y-1)+1)\)
- 现在的问题是:什么时候 \(x=1\)?直接手动模拟即可,不难证明时间复杂度 \(O(n)\)
C
- 首先简化题意:在一个数列中划分出若干个不相交的子区间,并保证区间和在 \(min\) 到 \(max\) 之间,求最多可划分出多少个这样的区间。
- 注意到对于每个 \(i\),可转移的点是一个区间 \([l,r]\)
- 注意到,转移区间的 \(l\) 和 \(r\) 都是单调不减的,所以双指针维护即可
D
- 首先注意到 \(c\) 其实并不重要,全当 \(1\) 看即可
- 其次注意到这题里的正负也不重要
- 然后注意到这题实际上每个大小为 \(k\times k\) 的矩形都是一个数,我们要用这些数凑出 \(0\) 点上的和与 \(1\) 点上的和的差值
- 然后注意到 \(k\times k\) 矩形的贡献二位前缀和秒了
- 然后注意到这玩应变成裸的裴蜀定理,所以一套 \(\gcd\) 搂过去就做完了
E
- 注意到 \(n\leq 10^{18}\),大胆猜测复杂度关于 \(n\) 是 \(\log\) 的
- 设答案为 \(f_{n,k}\)
- 设 \(c\) 为最大的小于 \(n\) 的全 \(1\) 二进制数的位数,这个 \(\log\) 的复杂度就能求出来
- 要求 \(f_{i,j}\) 只需求出 \(f_{2^c,j}\) 和 \(f_{i-2^c,j-1}\)
- 前半段没什么好说的,后半段是因为最高位肯定是 \(1\)
- 然后我们要求跨中间的区间个数
- 如果前半段 \(j>k\),那没得玩了,直接 \(0\)
否则前半段每个位置都合法,因数:\(2^c\)- 显然后半段的长度严格不大于前半段,且只有最后一位可以取满所有的 1,也就是说后半段的因数是 \(\min(n-2^c,2^c-1)\)
- 乘起来即为中间段贡献
F
- 首先考虑维护最长不降前缀和最长不降后缀,线段树即可
- 但是可能出现前缀的最大值比后缀最小值还小的情况
- 也就是说我们需要在这个基础上将排序区间扩展
- 扩展到什么地方呢?二分即可
- 所以线段树需要再维护一个区间最值