无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

CF競(jìng)賽題目講解_CF580D(DP+狀態(tài)壓縮)

2022-08-23 16:46 作者:Clayton_Zhou  | 我要投稿

?https://codeforces.com/problemset/problem/580/D


題意:

給你n種菜,吃每種菜都會(huì)得到對(duì)應(yīng)的滿足值。給出k種規(guī)則,如果先吃a再吃b 滿足感就會(huì)提升c。

最后你要吃共m種菜,能獲得的最大滿足值為多少。


思路:

題目范圍 最多18種菜。所以使用狀態(tài)壓縮DP。


f[S][i]為當(dāng)前已選菜的狀態(tài)為S,最后一個(gè)菜為i的最大滿意度.


狀態(tài)轉(zhuǎn)移方程:

f[S1][j] = max(f[S1][j], f[S][i] + a[j] + val[i][j]);

S1表示吃了j之后的新狀態(tài),S表示未吃j之前的狀態(tài),val[i][j]表示i之后向前吃j。

程序復(fù)雜度O((2^n)*n*n)。


集合{a,b,c}的所有子集合為:

{a}, , {c},{a,b},{a,c},{b,c},{a,b,c}

對(duì)應(yīng)的二進(jìn)制數(shù):

1,10,100, 11,101,110,111


如果集合的大小n<32,可以考慮使用狀態(tài)壓縮,

即用一個(gè)數(shù)i<(1<<n)表示一個(gè)子集合。


CF競(jìng)賽題目講解_CF580D(DP+狀態(tài)壓縮)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
太仆寺旗| 锦屏县| 巴彦县| 汽车| 西乌| 胶南市| 英山县| 古丈县| 天峻县| 广河县| 达日县| 云南省| 海口市| 合水县| 昌宁县| 肇庆市| 河北区| 布拖县| 清丰县| 柳河县| 湟源县| 犍为县| 吉首市| 云林县| 天全县| 邵武市| 平利县| 万宁市| 枣强县| 甘德县| 万荣县| 七台河市| 郯城县| 阿城市| 屏山县| 临汾市| 富源县| 柏乡县| 七台河市| 太原市| 五峰|