P1282 多公尺諾骨牌

2022-04-04 16:28:33 字數 938 閱讀 7982

\(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+n]=min(f[i][j+dis+n],f[i-1][j+n]+1);

\]所以得出

\[f[i][j+n] = min(f[i-1][j-dis+n] , f[i-1][j+dis+n] + 1) ;

\]

#include #define rep(i,j,n) for(register int i=j;i<=n;i++)

#define rep(i,j,n) for(register int i=j;i>=n;i--)

#define low(x) x&(-x)

using namespace std ;

typedef long long ll ;

const int inf = int_max >> 1 ;

inline ll in()

int n ;

const int size = 1000 + 5 ;

const int n = 5000 ;

int a[size] , b[size] ;

int f[size][size * 11] ;

int ans ;

inline void ot()

rep(i,0,n) }}

signed main()

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 多公尺諾骨牌

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....