poj3186(递推)
来源:互联网 发布:浙江海正药业待遇知乎 编辑:程序博客网 时间:2024/06/09 15:36
链接:点击打开链接
题意:给定一串数列,每次只可以从两端取数,第一次取得乘1,第二次乘2,以此类推问当所有数取完时和最大是多少
代码:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <algorithm>using namespace std;long long a[2005],dp[2005][2005];int main(){ //dp[i][j]代表从左边取i个从右边取i个 long long i,j,n,ans; while(scanf("%I64d",&n)!=EOF){ for(i=0;i<n;i++) scanf("%I64d",&a[i]); for(i=0;i<=n;i++){ for(j=0;j+i<=n;j++){ if(i==0&&j==0) dp[i][j]=0; else if(i==0) //左边不取和右边不取需要特殊处理 dp[i][j]=dp[i][j-1]+a[n-j]*j; else if(j==0) dp[i][j]=dp[i-1][j]+a[i-1]*i; else //只有dp[i-1][j]和dp[i][j-1]能推出dp[i][j] dp[i][j]=max(dp[i-1][j]+a[i-1]*(i+j), dp[i][j-1]+a[n-j]*(i+j)); } } ans=0; for(i=0;i<=n;i++) ans=max(ans,dp[i][n-i]); printf("%I64d\n",ans); } return 0;}
0 0
- poj3186(递推)
- poj3186
- POJ3186
- poj3186 dp
- dp poj3186
- poj3186(搜索)
- poj3186解题报告
- POJ3186【区间DP】
- POJ3186迷之DP
- POJ3186+3190+3250
- poj3186(区间dp)
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- 递推
- Android Fragment和FragmentActivity区别和用法
- mysql中FIND_IN_SET的使用方法
- MVC模式
- opencv编译contrib部分
- leetcode 21. Merge Two Sorted Lists
- poj3186(递推)
- Apache中如何设置默认首页具体该怎么操作
- 精辟、经典的话积累
- Apache提示You don't have permission to access / on this server问题解决
- 编写高质量的 JavaScript 代码(一)
- 详解Android中AsyncTask的使用
- Android Studio快捷键Ctrl + Alt + Left 或Right不起作用
- poj 2186 Popular Cows 强连通量分解模板
- iOS最新的中文审核条例