陣列a包含n個元素a1, a2......an。陣列b包含n個元素b1, b2......bn。並且陣列a中的每乙個元素ai,都滿足1 <= ai <= bi。陣列a的代價定義如下:
(公式表示所有兩個相鄰元素的差的絕對值之和)
給出陣列b,計算可能的最大代價s。
input
第1行:1個數n,表示陣列的長度(1 <= n <= 50000)。
第2 - n+1行:每行1個數,對應陣列元素bi(1 <= bi <= 10000)。
output
輸出最大代價s。
sample input
5101sample output10110
36i題目意思是求a陣列的最大代價 s值,a取值為1<=a[ i ]<= b [ i ];
思路就是要使代價和最大我們需要使兩個的差值最大,設乙個二維陣列dp[1000][0],和dp[1000][1],
兩個陣列交替著在1 和 b[i]中找最大值
方程為dp[i][0]=max(dp[i-1][0],dp[i-1][1]+abs(a[i-1]-1));
dp[i][1]=max(dp[i-1][0]+abs(a[i]-1),dp[i-1][1]+abs(a[i]-a[i-1]));
結果是max(dp[n][0],dp[n][1]);
**如下:
#include#include#includeusing namespace std;
int main()
printf("%d\n",max(dp[n][0],dp[n][1]));
}return 0;
}
F 陣列的最大代價 51Nod 1270
陣列a包含n個元素a1,a2.an。陣列b包含n個元素b1,b2.bn。並且陣列a中的每乙個元素ai,都滿足1 ai bi。陣列a的代價定義如下 公式表示所有兩個相鄰元素的差的絕對值之和 給出陣列b,計算可能的最大代價s。input 第1行 1個數n,表示陣列的長度 1 n 50000 第2 n 1...
51nod 1270 陣列的最大代價
要麼取峰值要麼取谷值,dp n 0 dp n 1 分別表示第i位取1或最大值時,最大的代價 include include include includeusing namespace std const int maxn 50010 int a maxn dp maxn 2 int main dp...
51nod1270陣列的最大代價
1270 陣列的最大代價 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 陣列a包含n個元素a1,a2.an。陣列b包含n個元素b1,b2.bn。並且陣列a中的每乙個元素ai,都滿足1 ai bi。陣列a的代價定義如下 公式表示所有兩個相鄰元素的差的絕對值之和 給...