dp 洛谷P1437 HNOI2004 敲磚塊

2021-07-31 20:44:00 字數 644 閱讀 2265

這道題不可以直接行列dp;

這樣乙個狀態可以從非常多且複雜的狀態更新過來;

很麻煩,不可取;

標算 這裡講的很好;

但是我們不用旋轉三角形,直接在dp的時候換一下順序就好啦;

#include

#include

#include

#include

#define ll long long

using namespace std;

int a[52][52],f[52][2000][52],sum[52][52];

int n,m,ans;

int main()

然後有些心得要說說;

你看程式裡面那個i,p兩個迴圈;

顯然在j比較大的時候i是不可以直接列舉到m的;

在j比較大的時候p也不可以列舉到i-k的;

所以我們一定要加限制;

其實我們只要加兩個裡面的乙個限制就好啦;

因為這個雖然i我沒加限制,但是因為p我限制了,所以不會列舉到一些不可能的狀態;

雖然i會出現不可能的情況,但是p限制了,所以i的不可能狀態不會被利用;

如果兩個都不限制就會萎了;

當然咯,最好全限制

洛谷P1437 HNOI2004 敲磚塊 dp

無 在乙個凹槽中放置了 n 層磚塊 最上面的一層有n 塊磚,從上到下每層依次減少一塊磚。每塊磚 都有乙個分值,敲掉這塊磚就能得到相應的分值,如下圖所示。14 15 4 3 23 33 33 76 2 2 13 11 22 23 31如果你想敲掉第 i 層的第j 塊磚的話,若i 1,你可以直接敲掉它 ...

洛谷 P1437 HNOI2004 敲磚塊

在乙個凹槽中放置了 n 層磚塊 最上面的一層有n 塊磚,從上到下每層依次減少一塊磚。每塊磚 都有乙個分值,敲掉這塊磚就能得到相應的分值,如下圖所示。14 15 4 3 23 33 33 76 2 2 13 11 22 23 31如果你想敲掉第 i 層的第j 塊磚的話,若i 1,你可以直接敲掉它 若i...

洛谷 1437 敲磚塊 DP

題意 中文題 題解 先旋轉三角形。然後要打掉第i行第j個,就要打掉第i行第j 1個和第i 1行第j 1個。所以到第i,j元素時,對於第i行,前j都被打掉,後面的都沒被打掉。但是對於第i 1行,前j 1一定被打掉,但後面的可以被打掉,也可以不打掉。所以狀態轉移就很好寫了。include include...