hdu 4284 狀態壓縮dp

2022-06-02 13:57:10 字數 1461 閱讀 4342

題意: 有n 個點的無向圖,要去其中 h個地點做事,做事需要先辦理護照,之後可以掙一定數量的錢,知道了一開始有的總錢數,和 一些城市之間

道路的花費,問可不可以在 指定的 h 個城市打完工,並回到起點 1.

是個好題!!!

狀態轉移方程dp[s][i]=max(dp[s][i],dp[s'][j]-maps[j][i]-d[i]+c[i]);

dp[s][i]表示當在狀態s的時候最後再i城市打工的最多剩餘錢數。

2

4 5 10  //4個點,5個道路,10單位的錢

1 2 1

2 3 2

1 3 2

1 4 1

3 4 2

3    //3個必去的

1 8 5  //編號,消耗,賺的

2 5 2

3 10 1

2 1 100

1 2 10000

12 100000 1

yes

no

1 #include2 #include3 #include4 #include5 #include6

#define inf 99999999

7 typedef long

long

ll;8

using

namespace

std;910

const

int max=(1

<<16)+10;11

intn,m,val,h;

12int s[20],c[20],d[20

];13

int dp[max][20],dist[110][110

];14

15void init(int

num)19}

2021

void

floyd()27}

28}29}

3031

void

dp()44}

45}46bool flag=false;47

for(int i=0;i<=h;++i)if(dp[bit-1][i]-dist[s[i]][1]>=0)flag=true; //

沒返回過1

48if(flag)printf("

yes\n");

49else printf("

no\n");

50}5152

intmain()

62 scanf("

%d",&h);

63for(int i=1;i<=h;++i)

66floyd();

67 s[0]=1,c[0]=d[0]=0;68

dp();69}

70return0;

71 }

Hdu 3811 狀態壓縮 DP

題意 給定數n n 17 求乙個n位數,每位可選1 n中的乙個,且每位不同,並且滿足給定的條件,求方案數。給定條件為m個 x y 表示第x位為y的滿足要求。滿足m中的乙個條件即正確。演算法 dp 狀態壓縮 分析 首先不考慮條件的總方案數為n 我們先算不滿足條件的方案,因為m個條件之間是或者 關係,有...

hdu 1074 狀態壓縮dp

題目描述 有 n 門課程的作業,每門都有完成期限d,與完成所需時間c,若超過期限,1天扣1分。問完成這n門作業至少要扣多少分,並輸出扣分最少的做作業順序。思路 dp i 記錄完成狀態為i的情況下的資訊。完成所需時間,上乙個狀態,最小扣分 狀態方程 dp i min dp j cost j,i 從j狀...

hdu1565 dp狀態壓縮

題意 給你乙個n n的格仔的棋盤,每個格仔裡面有乙個非負數。從中取出若干個數,使得任意的兩個數所在的格仔沒有公共邊,就是說所取的數所在的2個格仔不能相鄰,並且取出的數的和最大。解題思路 先找出所有能成立的狀態,即 i i 1 0,表示每一行都沒有相鄰的,然後遍歷if q j 1 再進行動態更新,用上...