日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

动态规划 —— 状压 DP

發(fā)布時(shí)間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态规划 —— 状压 DP 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【概述】

通常將以一個(gè)集合內(nèi)的元素信息作為狀態(tài)且狀態(tài)總數(shù)為指數(shù)級(jí)別的動(dòng)態(tài)規(guī)劃稱為狀態(tài)壓縮動(dòng)態(tài)規(guī)劃。

其是一類以集合信息為狀態(tài)的特殊的動(dòng)態(tài)規(guī)劃問(wèn)題,主要有傳統(tǒng)集合動(dòng)態(tài)規(guī)劃與基于連通性狀態(tài)壓縮的動(dòng)態(tài)規(guī)劃兩種。

其原理是通過(guò)二進(jìn)制位運(yùn)算將狀態(tài)壓縮(用整數(shù)表示集合)作為動(dòng)態(tài)規(guī)劃的狀態(tài)來(lái)解決問(wèn)題。

通常具備以下兩個(gè)特點(diǎn):

  • 數(shù)據(jù)規(guī)模的某一維或幾維特別小
  • 需要具備動(dòng)態(tài)規(guī)劃問(wèn)題的兩個(gè)基本性質(zhì):最優(yōu)性原理、無(wú)后效性原則
  • 為更好的理解狀壓 DP,首先要有相關(guān)的位運(yùn)算知識(shí),關(guān)于位運(yùn)算:點(diǎn)擊這里。

    【使用條件】

    在任意時(shí)刻,已經(jīng)求出最優(yōu)解的狀態(tài)與尚未求出最優(yōu)解的狀態(tài)在各維度上的分界點(diǎn)組成了 DP 擴(kuò)展的輪廓,對(duì)于某些問(wèn)題,需要在動(dòng)態(tài)規(guī)劃的狀態(tài)中記錄一個(gè)集合,保存這個(gè)輪廓的詳細(xì)信息,以便進(jìn)行狀態(tài)轉(zhuǎn)移。

    若集合大小不超過(guò) n,集合中每個(gè)元素都是小于 k 的自然數(shù),則可以把這個(gè)集合看作一個(gè) n 位 k 進(jìn)制數(shù),以一個(gè)??之間的十進(jìn)制整數(shù)的形式作為 DP 狀態(tài)的一維。

    【使用技巧】

    1.狀壓 DP 題型

    1)數(shù)據(jù) n≤16 ,但狀態(tài)總數(shù)可達(dá)指數(shù)級(jí)

    2)滿足無(wú)后效性原則,通過(guò)前面的狀態(tài)知道后面的怎么選,用 1、0 來(lái)記錄狀態(tài)是否存在

    2.一般定義二維數(shù)組

    第一維是第幾排(如:鋪磚塊等)

    第二維標(biāo)識(shí)狀態(tài),0 或 1

    3.數(shù)組初始化

    根據(jù)題設(shè)設(shè)置初值,一般為 memset(dp,127,sizeof(dp));

    再進(jìn)行狀態(tài)更新:

    for(int i=0;i<n;i++) ? dp[i][1<<i]=0;?

    表示 i 在 state 中存在,這里的 1<<i 就是一種只選 i 的 state

    4.枚舉狀態(tài)循環(huán)求值

    for(int i=1;i<=n;i++) {for(int j=0;j<(1<<m);j++){if(check(i,j))//判斷當(dāng)前行滿足條件的state{for(int k=0;k<(1<<m);k++)//枚舉上一行的pre_state進(jìn)行更新{...}}} }

    5.判斷狀態(tài)中的每一個(gè)是否符合要求

    for(int i=sum;i!=0;i=(i-1)&sum) {... }

    【例題】

    1.入門題

  • Corn Fields(POJ-3254):點(diǎn)擊這里
  • 最小總代價(jià)(洛谷-U17433):點(diǎn)擊這里
  • Necklace(HDU-3091):點(diǎn)擊這里
  • Most Powerful(ZOJ-3471):點(diǎn)擊這里
  • 2.TSP 問(wèn)題

  • Hie with the Pie(POJ-3311)(狀壓+Floyd求最短路):點(diǎn)擊這里
  • Traveling(HDU-3011)(三進(jìn)制的壓縮):點(diǎn)擊這里
  • Tourism Planning(HDU-4096)(注意滿意度的計(jì)算):點(diǎn)擊這里
  • 3.其他

  • 炮兵陣地(POJ-1185)(三層狀態(tài)的判斷):點(diǎn)擊這里
  • Pieces(HDU-4628)(回文字串的判斷):點(diǎn)擊這里
  • Mondriaan's Dream(POJ-2411)(貼磚塊問(wèn)題):點(diǎn)擊這里
  • Doing Homework(HDU-1074)(狀壓+遞歸輸出):點(diǎn)擊這里
  • 方格取數(shù)(1)(HDU-1565)(需進(jìn)行預(yù)處理,計(jì)算合法數(shù)據(jù)個(gè)數(shù)):點(diǎn)擊這里
  • Riddle(2018 CCPC (秦皇島站) I 題)(互斥的狀態(tài)):點(diǎn)擊這里
  • 總結(jié)

    以上是生活随笔為你收集整理的动态规划 —— 状压 DP的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。