题目
题解
贪心。
大……大 小……小 大……大
的方式排列,两端大的木桩尽可能相同,若大木桩数为奇数,则前少后多。这样可以保证[i,j]
尽可能多,且每个[i,j]
的正贡献不是0
就是b
(小木桩数量);对于所有的[i,a+b]
,前面的大木桩都会做负贡献-b
,后面的大木桩的负贡献为0
。
因此总贡献为前面大数*后面大数*小数-前面大数*小数
。
代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int main () {
LL a, b;
int T;
cin >> T;
while (T --) {
cin >> a >> b;
cout << (a/2) * ((a+1)/2) * b - (a/2 * b) << endl;
}
return 0;
}