HDU 2079 選課時間 動態規劃

2021-09-12 07:17:34 字數 1480 閱讀 3393

題目傳送門:

這個題目乍一看像是個多重揹包問題,仔細一想還真是個多重揹包問題,只是沒有權值而已。這樣,我們的狀態就要改變了。

求什麼就設什麼

狀態:dp[i]表示已經組合好i個學分的組合數

刻畫子結構特徵:新的高學分的組合數都可以轉化為低學分的和。

舉個栗子:

目標4學分  2種學分種類

1學分 2門

2學分 2門

一共有兩種分法:1 1 2   和   2  2

在只有1學分 2門的情況下,只能湊成1學分 或者2學分的情況:

0

1

2

3

4

1

1

1

0

0

而在加上第二行的2學分 2門之後,就可以湊出3 4了。

0

1

2

3

4

1

1

2

1

2

可以看作在組合4個學分時,把4個學分分成了(1學分 2門的情況下已經組合好的 2學分 +剩下的2學分) 和   (1學分 2門的情況下已經組合好的 0學分 +剩下的4學分

而剩下的學分可以在2學分 2門的情況下湊成,剩下的2學分由乙個2湊成,剩下的4學分可以由2 + 2湊成。

就可以得到:dp[4] = dp[2] + dp[0];

遞迴基:dp[0] = 1,其意義是已經組合好0學分的組合數,其應用場景是在當前n學分m門的情況下,如果可以直接在該階段湊出目標學分

狀態轉移方程:dp[j] += dp[j-k*a];

#include #include #include #include using namespace std;

int f[100];

int main()

} } cout<} return 0;

}

HDU2079 選課時間

problem description 又到了選課的時間了,xhd看著選課表發呆,為了想讓下一學期好過點,他想知道學n個學分共有多少組合。你來幫幫他吧。xhd認為一樣學分的課沒區別 input 輸入資料的第一行是乙個資料t,表示有t組資料。每組資料的第一行是兩個整數n 1 n 40 k 1 k 8 ...

K 選課時間 HDU 2079

k 選課時間 hdu 2079 又到了選課的時間了,xhd看著選課表發呆,為了想讓下一學期好過點,他想知道學n個學分共有多少組合。你來幫幫他吧。xhd認為一樣學分的課沒區別 input 輸入資料的第一行是乙個資料t,表示有t組資料。每組資料的第一行是兩個整數n 1 n 40 k 1 k 8 接著有k...

HDU 2079選課時間 (母函式)

其實思路是挺簡單的,直接母函式的模板套用即可,主要是粗心的緣故吧,少些了點東西,後來反覆built才弄好 include include include include include using namespace std 選課時間 問n個學分有多少種組合,認為學分一樣的課沒區別 input 輸入...