HLG1473教主的遺產 狀壓dp

2021-07-02 01:31:14 字數 1850 閱讀 9224

教主的遺產

time limit: 1000 ms

memory limit: 65536 k

total submit: 27(12 users)

total accepted: 20(12 users)

rating:

special judge: no

description

恭送教主!

教主在2023年7月19日上午10:48,坐上前往北京的火車,從此開始了高富帥的生活。

在教主的的大學四年acm生涯中,他用事實告訴我們,要想在比賽拿獎,除了平時的刻苦努力外,很大一部分還要依賴比賽時是

做題策略,簡單來講就是做題順序,唯有想把能過的都過掉,然後再過難題,這樣才能在比賽中拿獎。

我們將用這個做題順序量化表示,即ac係數,ac係數越大,拿獎可能性就越大。

在比賽中會給出n個題,不同做題順序會有不同的ac係數,假如a先做,b後做的話,b對a的ac係數為4, 反過來 b先做,a後做的話,a對b的ac係數為5,說明先做b後做a將得到更高的ac係數。

設sij表示第i題在第j題做完後才做獲得的ac係數,有三道題a, b, c,做題順序為bac,則係數和為:sum = sab + scb + sca。

求乙個做題順序,使得ac係數和最大。

input

有多組測試資料。

對於每組測試資料,第一行為n(1<=n<=16),表示題目數量。

接下來有n行,每行n個數字,對於1+i行的第j個數字sij(0 <= sij <= 32), 表示第i題在第j題之後做的ac係數。

output

每組測試資料輸出一行,包含乙個數,為最大係數和。

sample input10 

20 2 

4 0 

30 2 4 

4 0 25 

17 15 0 

sample output04

46source

2012 summer contest 1 - dp

author

黃李龍@hrbust

分析:狀態壓縮 dp[i]表示到達狀態i的最大值  由於每一次加入乙個新題 都會與前面的舊題產生乙個係數  所以掃瞄一遍就行了

這個題跟那個一筆畫的思路很像   由於|的性質每次加入乙個點狀態都會往後轉移  所以狀態轉移是成立的

**:

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

const

int maxn = 17;8

inta[maxn][maxn];

9int

n;10

int dp[1

<

1112

intdp() 29}

30//

printf("sum == %d\n", sum);

31 dp[i | ( 1

<< ( j - 1 ) ) ] = max(dp[i | ( 1

<< ( j - 1 ) )], dp[i] +sum);32}

33}34}

35return dp[max - 1

];36}37

intmain() 43}

44//

` for(int i = 1; i <= n; i++) puts("");

48//

` }

49 printf("

%d\n

", dp());50}

51return0;

52 }

view code

HLG1473教主的遺產 狀壓dp

教主的遺產 time limit 1000 ms memory limit 65536 k total submit 27 12 users total accepted 20 12 users rating special judge no description 恭送教主!教主在2012年7月1...

NDK1473(植物擺放)

高精度乘法 數學公式的推導能力 分析 1 根據題意可分析出土豆火箭一定安排在一起且土豆在前。2 計算出放置多少個火箭使殭屍的傷害值最大。設放置k個火箭 則土豆的個數為n k。k確定了傷害值也就定了。n k個土豆的傷害為 a k b 1 n k k個火箭的傷害為a k 2 a k 1 k 2 1 a ...

HLG 菜鳥和大牛

菜鳥和大牛 time limit 1000 ms memory limit 65536 k total submit 421 197 users total accepted 208 181 users rating special judge no description blue和autoger...