A 暴力扫一遍 B 算法 0 似乎是二分 算法 1 随便贪心 C 算法 1 枚举一个点作为最大值 / 最小值,用单调栈维护其作为答案的左右端点即可轻易计算 . 时间复杂度 \(O(n)\) . 算法 2 贡献拆成整体最大减整体最小 . 分别是经典问题,可以分治,复杂度瓶颈在 rmq . The Method Of Four Russians 不知道能不能算出最大值位置吧 . 因为保证答案不超过 long long,所以 unsigned long long 自然溢出(同余 \(2^{64}\))…
A:后缀维护si*pi的最小值,查询的时候二分,判断后缀和当前两个部分就行. #include <bits/stdc++.h> using namespace std; typedef long long LL; ; int n, m; LL s[maxn], p[maxn]; LL suf[maxn]; int main() { // freopen("in", "r", stdin); int T; LL q; scanf("%d"…