A
判断((a+b)|(y-x))即可。
B
贪心的枚举互相匹配的前后缀,再寻找剩下的串中是否有合法的可作为中间位置的串即可。
C
维护一下当前能到达的温度的最大值和最小值,再和每个人的需求比一下即可。
D
发现一串连续的(<)已经构成了LIS,那么最长LIS则要求所有的(<)能连在一起,最短LIS则要求每段LIS互相独立无法拼接。
可以维护一头一尾两个指针表示值域,(<)的使用尾指针,(>)的使用头指针,通过控制(>)前的元素段与段之间的递增/递减来实现最长LIS/最短LIS间的切换。
E
做过CSP-J2019的T4的都应该知道:我们需要求出奇偶性不同的两条最短路长。由于重复经过一条路径只会给最短路带来偶数次影响,所以只能通过走环来强制改变路径的奇偶性。
不强制走环的最短路一定是原树上的最短路,强制走环的话可以考虑强制走加的边((u,v))这样虽然有两种情况但是奇偶性是一致的(画个图证一下就好了)。
F1&F2
记(f_{i,j})为第(i)天,上一天在位置(j)架起了照相机的最大值,则有。
其中(w(i,j)=sum_{p=j}^{j+k-1}a_{i,p}), (mathrm{intersect}(i,j,p))表示(w(i,j))与(w(i,p))的相交部分。
F1的话发现(mathrm{intersect}(i,j,p)=0)的部分可以通过预处理前缀/后缀的最大值就可以(O(1))转移,不为(0)的部分可以暴力(O(k))转移。
F2的话考虑(a_{i,j})会与(f_{i-1,j-k+1},f_{i-1,j-k+2},cdots,f_{i-1,j})交叉,是一段区间。于是每一次可以用线段树维护(f_{i-1,p}-mathrm{intersect}(i,j,p)).当枚举的(j o j+1)时,至多只会有两个(a)的值的贡献被加上/删去,线段树上直接区间修改即可。