poj2231 Moo Volume

来源:互联网 发布:深圳软件产业基地公司 编辑:程序博客网 时间:2024/06/17 08:20

原题:http://poj.org/problem?id=2231

思路: dp[i]表示前i个location的Volume值,将输入数字排序,根据规律推出转移方程:dp[i]=dp[i-1]+(i-1)*2*(a[i]-a[i-1]);

#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;int cmp(const void *a,const void *b){int aa=*(int*)a;int bb=*(int*)b;return aa-bb;}int main(){int n;while(~scanf("%d",&n)){ll sum=0;ll a[10010];ll dp[10010]={0};for(int i=1;i<=n;i++){scanf("%lld",&a[i]);}qsort(a+1,n,sizeof(a[0]),cmp);//for(int i=1;i<=n;i++)//{//printf("%lld ",a[i]);//}//printf("\n");for(int i=2;i<=n;i++){ll tmp=2*(a[i]-a[i-1]);dp[i]=dp[i-1]+(i-1)*tmp;sum=sum+dp[i];}printf("%lld\n",sum);}return 0;}


原创粉丝点击