题意简述
给定 组数据,每组数据有两个整数 ,表示有一个 的矩阵。
矩阵的每个点都有值,表示到这个点要的成本,且这个值为 。
现在要从 到 ,问最小成本。
解题思路
这里的最优解就是先横着走,再竖向走。
因为在第一行横着走时,,此时 。而向下走成本都是一样的,可以证明这种走法最优。
横向走的成本(等差数列优化到 $\Theta (1) $ 级别):
竖向走的成本:
总成本(有个 重复算了,要减掉):
最后,一定要开 long long
。
代码实现
#include<bits/stdc++.h>
using namespace std;
long long t,n,m;
int main() {
scanf("%d",&t);
while(t--) {
scanf("%d%d",&n,&m);
long long ans1=m*(m+1)/2;
long long ans2=n*(m+m*n)/2;
printf("%lld\n",ans1+ans2-m);
}
return 0;
}
//code by TheCedar