标签:cst namespace int std format 时间 接下来 form 描述
第??两个正整数n和m,分别表?天数以及糖果店每天?产的糖果数量。
接下来n?(第2?到第n+1?),每?m个正整数,第x+1?的第y个正整数 表?第x天的第y个糖果的费?。
输出只有?个正整数,表?你需要?付的最?费?。
3 2 1 1 100 100 10000 10000
107
5 5 1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4
10
对于100%的数据,1 ≤ n, m ≤ 300 , 所有输?的数均 ≤ 106。
1 #include<iostream> 2 using namespace std; 3 #include<cstring> 4 #include<cstdio> 5 #include<algorithm> 6 typedef long long LL; 7 LL f[350][500]; 8 LL v[350][500]; 9 LL n,m; 10 LL c[350]; 11 LL p[350][350]; 12 LL dfs(LL x,LL y){ 13 if(x<=0&&y<=0) return 0; 14 if(x<=0&&y>0) return 0x7fffffff; 15 if(x>0&&y<0) return 0x7fffffff; 16 if(v[x][y]==1) return f[x][y]; 17 LL ans=0x7fffffff,zans; 18 for(LL i=0;i<=y+1&&i<=m;i++){ 19 zans=dfs(x-1,y-i+1)+p[x][i]+i*i; 20 if(zans<ans) ans=zans; 21 } 22 v[x][y]=1; 23 f[x][y]=ans; 24 return ans; 25 } 26 int main(){ 27 LL t; 28 memset(v,0,sizeof(v)); 29 memset(f,0,sizeof(f)); 30 scanf("%lld%lld",&n,&m); 31 LL k=0; 32 for(LL i=1;i<=n;i++){ 33 p[i][0]=0; 34 for(int j=1;j<=m;j++) scanf("%lld",&c[j]); 35 sort(c+1,c+1+m); 36 for(LL j=1;j<=m;j++){ 37 p[i][j]=p[i][j-1]+c[j]; 38 } 39 } 40 LL ans=dfs(n,0); 41 printf("%lld\n",ans); 42 return 0; 43 }
标签:cst namespace int std format 时间 接下来 form 描述
原文地址:http://www.cnblogs.com/xfww/p/7953644.html