题意:起先没看懂,看了别人的解释:点击打开链接
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN = 1005;
long long dp[MAXN];
int n,m,a[MAXN],b[MAXN];
int main(){
int t;
scanf("%d",&t);
while (t--){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(dp,0x3f3f3f3f,sizeof(dp));
scanf("%d",&n);
for (int i = 1; i <= n; i++){
scanf("%d%d",&a[i],&b[i]);
a[i] += a[i-1];
}
dp[0] = 0;
for (int i = 1; i <= n; i++)
for (int j = 0; j < i; j++)
dp[i] = min(dp[i],dp[j]+(a[i]-a[j]+10)*b[i]);
printf("%lld\n",dp[n]);
}
return 0;
}