#include<stdio.h>
#include<string.h>
int a[105] , p[105] , n , dp[105] , sum[105];
void f(){
for(int i = 1 ; i <= n ; i ++){
dp[i] = (sum[i] + 10) * p[i];
for(int j = 1 ; j <= i ; j ++){
if(dp[i] > dp[j] + (sum[i] - sum[j] + 10) * p[i]){
dp[i] = dp[j] + (sum[i] - sum[j] + 10) * p[i];
}
}
}
}
int main(){
int t;
scanf("%d" , &t);
while(t --){
scanf("%d" , &n);
memset(dp , 0 , sizeof(dp));
memset(sum , 0 , sizeof(sum));
for(int i = 1 ; i <= n ; i ++){
scanf("%d%d" , &a[i] , &p[i]);
sum[i] = sum[i - 1] + a[i];
}
f();
printf("%d\n" , dp[n]);
}
}
hdu 1300 Pearls (DP 类似最长上升子序列)
最新推荐文章于 2019-10-10 16:56:13 发布