A:
枚举4个门的守卫,看一下钱够不够贿赂,够的话就把多余的钱全给第二个人
B:
统计一下Sum[i%k],取最小的那个i,则答案为i%k
C:
方程转化为 sigma(ai-k*bi) = 0,以ai-k*bi为容量,ai为价值,背包一遍
D:
虽然l,r的范围很大,但是边最多3000条,则可行区间的左右端点的取值必然在这3000*2个值内。因此,枚举3000个左端点,二分右端点,dfs判断可行性,维护一个最大差值即是解
E:
预处理出note到note的最大曼哈顿距离,然后扫一遍乐谱得解。关键在于预处理的过程,时间上不允许从每个位置bfs一次。但是注意到曼哈顿距离的特殊性,在每一列维护note x的最大行和最小行,则第i列的a 与第j列的b 的最大距离为 max(ai.maxline-bi.minline, bi.maxline-ai.minline)+abs(i-j),复杂度m*m*k*k,1.5S过去了。存在把复杂度优化到m*k*k的方法,499MS,见代码。