luogu P1282 多公尺諾骨牌

2021-08-24 20:51:15 字數 685 閱讀 9270

線性dp,需要一點理解。可以模擬揹包問題,此時的狀態不是揹包容量而是差值。

f [i][j]:代表對前 i 個牌在 j 的差值下 最小的翻動數。

有遞推式

f [ i ] [ j ] = min( f [ i - 1 ] [ j - (a[i]-b[i]) ]+1 , f [ i - 1 ] [ j - (b[i]-a[i]) ] )

a,b 為上下牌面數

ps: 顯然 j 差值可能為負,程式設計時加個偏移量使之為正即可。

//  head file excluded

using

namespace

std;

int n,m;

const

int nn = 5000;// 向後位移 保證差值為正

int f[2][nn*2+1];

int a[1001],b[1001];

int main()

memset(f,0x7f,sizeof(f));

f[0][0+nn]=0;

int tar=0,ori = 1;// 兩陣列交替儲存

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

}int ans;

for(int j=0;j<=border;j++)

}return

0;}

Luogu 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 使得上下兩個方塊互換...

luogu 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 使得上下兩個方塊互換位置。程式設計...

luogu 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 使得上下兩個方塊互換位置...