Eat Walnuts(區間dp)
原題連結
題意
給你n個堅果。每次不能刪第一個和最後一個。刪除一個堅果耗費
(a[i]+a[i-1]+a[i+1])^2。求最終刪剩下兩個堅果最小花費。
題解
設
f
[
i
]
[
j
]
f[i][j]
f[i][j]表示保留 i 和 j 並刪除i-j之間堅果的最小花費。
f
[
i
]
[
j
]
=
m
i
n
(
f
[
i
]
[
j
]
,
f
[
i
]
[
k
]
+
f
[
k
]
[
j
]
+
p
(
a
[
i
]
+
a
[
k
]
+
a
[
j
]
)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]+p(a[i]+a[k]+a[j])
f[i][j]=min(f[i][j],f[i][k]+f[k][j]+p(a[i]+a[k]+a[j])
len從3開始列舉即可(中間才有堅果可刪)。兩個及以下沒有意義。
#include<bits/stdc++.h>
using namespace std;
const int N=105;
int f[N][N],a[N];
int p(int x)
{
return x*x;
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1;i<=n;i++)cin>>a[i];
for(int len=3;len<=n;len++)
for(int i=1;i+len-1<=n;i++)
{
int j=i+len-1;
f[i][j]=0x3f3f3f3f;
for(int k=i+1;k<j;k++)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]+p(a[i]+a[j]+a[k]));
}
cout<<f[1][n]<<endl;
}
return 0;
}
相關文章
- 2020 ICPC 線上模擬賽 E題 Eat Walnuts(區間dp)
- 區間dp
- 【DP】區間DP入門
- 【區間dp】石子合併
- [動態規劃] 區間 dp動態規劃
- POJ1390 Blocks (區間DP)BloC
- 區間dp 合併石子問題
- AtCoder Regular Contest 104——C區間dp
- 動態規劃 區間dp 基礎題動態規劃
- ACM日常訓練日記——8.1(區間dp)ACM
- Sheep Eat Wolves
- 區間問題(非DP型別)及變形型別
- NOIP集訓Day24 DP常見模型3 - 區間模型
- 一類適合記憶化搜尋的區間dp
- leetcode:1000. 合併石頭的最低成本(區間dp,困難)LeetCode
- 二叉搜尋樹 [四邊形不等式優化區間dp]優化
- 【題解】Solution Set - NOIP2024集訓Day22 DP常⻅模型3「區間」模型
- 【題解】Solution Set - NOIP2024集訓Day23 DP常⻅模型3「區間」模型
- acm-(區間dp、迴文串、子序列)ICPC SG Preliminary Contest 2018 C - Making PalindromesACM
- [ABC227H] Eat Them All 題解
- dp 套 dp(dp of dp)小記
- DP套DP
- 經典鏈式呼叫 Person("Dan").sleep(2).eat("dinner")
- [DP] 數位DP
- 【DP】Educational DP Contest
- dp套dp 隨寫
- 區間縮小
- 區間合併
- 合併區間
- dp
- 芻議線段樹 2 (區間修改,區間查詢)
- 樹狀陣列的區間查詢與區間修改陣列
- POJ 2376 Cleaning Shifts(區間貪心之區間覆蓋)
- [DP] DP最佳化總結
- hdu--4455+ Substrings+2012杭州區域賽C題+DP
- 58. 區間和
- XYD 統計區間
- 6.24 區間合併