HDU1565 方格取數 1 狀態壓縮dp

2022-04-06 11:19:35 字數 728 閱讀 6916

題目鏈結。

分析:說這題是狀態壓縮dp,其實不是,怎麼說呢,題目資料太水了,所以就過了。手動輸入n=20的情況,超時。正解是網路流,不太會。

a這題時有個細節錯了,是dp[i][j]還是dp[i][q[j]]? 答案是dp[i][j],因為q[j]必定會超(感謝cz學長提示)。

ac**如下:

#include #include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 20000

;int q[maxn], dp[21][maxn], g[21][21

];int

main()

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

}memset(dp,

0, sizeof

(dp));

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

}dp[i][j] =ans;

for(int k=0; k) }}

}int ans = -1

;

for(int i=0; i)

printf(

"%d\n

", ans);

}return0;

}

HDU 1565 方格取數 1

hdu 1565 方格取數 1 我的第乙個狀態壓縮dp 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數,從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大 3 75 15 21 75 15 28 34 70 5 188對於每乙個數...

HDU1565 方格取數 1

problem description 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 ou...

HDU 1565 方格取數 1

problem description 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。input 包括多個測試例項,每個測試例項包括乙個整數n 和n n個非負數 n 20 ou...