7.10
Luogu2216 单调队列对每一行扫一遍可以求出每行中每一段固定长度的 min,然后每列对这玩意求个 min 即可
CF1195E 同上,只需要求 min 再求和
CF979D 显然 gcd 条件可以转化成 \(k|v\),为了让异或值最大可以对于每个二进制位从高到低考虑,需要符合上界且当前位 \(i\) 确定之后,剩下的可能性中有 \(k\) 的倍数(即 \([s,s+2^i-1]\))细节略多
CF1468C POJ1442 堆 & 对顶堆简单题
CF1585F (这里)[https://www.cnblogs.com/SkyRainWind/p/17542064.html]
7.11
CF1656B 模拟一下发现就是 \(a_i-a_j\)
CF1198A 二分/双指针
CF1731D 二分之后二维前缀和,由于是用一维数组代替的,0 的情况要特殊考虑
CF1781D 分别考虑一下 \(b_i=0/1\),分别对应 \(S\leq a_i-1,S\geq a_i+1\),那么必然是从小到大填 1 的。
CF1790F 对每个当前变成黑色的点,考虑往上走 ans 次,每次更新一下这些祖先的 \(dis\)。然后用原来的 \(dis\) 加上当前往上跳的步数来更新 \(ans\),由于 \(i+1\) 个黑点时 \(ans\) 一定 \(<\frac{n}{i}\),因此复杂度是调和级数。(由于每个黑色点对都能在 lca 处更新到答案,因此是正确的。)
Luogu4926
题意可以转化成 \(x_A\geq (k-T)\times x_B\),或者 \((k+T)\times x_A\geq x_B\),要求最大的 \(T\) 使得无解。考虑取 log 之后变成三角形不等式,如第一个式子可以变成 \(\log x_B\leq \log x_A-\log(k-T)\),也就是连一条 \(A\rightarrow B\) 的权为 \(-\log(k-T)\) 的边。
如何处理已知的 \(x=d\) 呢?可以 \(S{ \rightarrow} x\) 连一条 \(d\) ,再反过来一条 \(-d\),其中 \(S\) 为源点。这是由于 \(x=d\leftrightarrow x\leq d \and x\geq d\)
然后二分 \(T\) 跑 spfa,如果出现负环就无解。