P1282 多公尺諾骨牌

2021-09-10 09:38:37 字數 769 閱讀 9174

p1282多公尺諾骨牌

這個題其實挺水的,主要是對於這個狀態的理解

1.dp[i][j]=dp[i][j-(a[i]-b[i])];

2.dp[i][j]=dp[i][j-(b[i]-a[i])]+1;

兩個狀態取乙個min就行了。

為什麼這樣的轉移是合理的呢。

我們規定上面一半的點數為a[i],下面一半的點數為b[i]。

那麼首先我們看

1.如果說不反轉的話,就是a[i]-b[i],不+1

2.如果說反轉的話,就是b[i]-a[i],那麼就+1

初始化應該是:dp[1][a[1]-b[1]]=0;  dp[1][b[1]-a[1]]=1;

// luogu-judger-enable-o2

#include using namespace std;

int n;

int a[1001],b[1001];

int dp[1001][10005];

int main()

dp[1][a[1]-b[1]+5001]=0;

dp[1][b[1]-a[1]+5001]=1;

for(int i=2;i<=n;i++)

}for(int i=0;i<=5000;i++)

}}

P1282 多公尺諾骨牌

多公尺諾骨牌有上下2個方塊組成,每個方塊中有1 6個點。現有排成行的 上方塊中點數之和記為s1,下方塊中點數之和記為s2,它們的差為 s1 s2 例如在圖8 1中,s1 6 1 1 1 9,s2 1 5 3 2 11,s1 s2 2。每個多公尺諾骨牌可以旋轉180 使得上下兩個方塊互換位置。程式設計...

P1282 多公尺諾骨牌

多公尺諾骨牌有上下2個方塊組成,每個方塊中有1 6個點。現有排成行的 上方塊中點數之和記為s1,下方塊中點數之和記為s2,它們的差為 s1 s2 例如在圖8 1中,s1 6 1 1 1 9,s2 1 5 3 2 11,s1 s2 2。每個多公尺諾骨牌可以旋轉180 使得上下兩個方塊互換位置。程式設計...

P1282 多公尺諾骨牌

problem 此題是一道01揹包。關於01 揹包 我不想講了 my blog 這道題是一道基礎的01揹包問題 設f i j k表示前i張牌構成分值j的最小次數k 設 dis a i b i 不反轉 f i j dis n min f i j dis n f i 1 j n 反轉 f i j dis...