題意:給定n個數
每次可以從頭或者尾取出資料
於是按取出來得順序,就可以排成乙個數列,假設這個數列為
a1,a2,a3,a4.......an
現在我們假設按照取出來的順序有乙個權值
w=a1*1+a2*2+a3*3+....an*n
現在需要程式設計求出,如何控制取數的順序,讓w的值最大
思路:首先我以為是貪心,每次取最小值出來就可以了。。可是貪心的思路是錯的。。有反例的
然後看到帖子上有人說這個題是動態規劃,於是我就朝動態規劃的方向進行構思
其實這個動態轉移方程還比較好想,可以開乙個二維的陣列用來存當前的最大值
由於每次要麼從頭取,要麼從尾取,於是狀態轉移方程為:
dp[i][j]=max(dp[i-1][j]+v[i]*(i+j),dp[i][j-1]+v[n-j+1]*(i+j));
然後適當注意一下邊界條件就可以ac了~~
my ugly code:
#include#includeusing namespace std;
int dp[2005][2005];
int v[2005];
int max(int a,int b)
int main()
int ans=0;
for(i=0;i<=n;i++)
if(dp[i][n-i]>ans)
ans=dp[i][n-i];
printf("%d/n",ans);
} return 0;
}
poj 動態規劃 1141
dp練習的第三道題,依然花了我斷斷續續好幾個小時 有人說看到題目裡的 2.if s is a regular sequence,then s and s are both regular sequences.3.if a and b are regular sequences,then ab is ...
動態規劃 硬幣 POJ
總時間限制 1000ms 記憶體限制 262144kb 描述 太空人bob有一天來到火星上,他有收集硬幣的習慣。於是他將火星上所有面值的硬幣都收集起來了,一共有n種,每種只有乙個 面值分別為a1,a2 an。bob在機場看到了乙個特別喜歡的禮物,想買來送給朋友alice,這個禮物的 是x元。bob很...
POJ 動態規劃 3
動態規劃 需要用資料結構優化的動態規劃 poj2754,poj3378,poj3017 四邊形不等式理論 斜率優化 poj1160,poj1180,poj3709 較難的狀態dp 插頭dp poj3133,poj1739,poj2411 poj1763 需要用資料結構優化的動態規劃 poj 3017...