題目鏈結。
分析:說這題是狀態壓縮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...