題意: 有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城市打工的最多剩餘錢數。
24 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
yesno
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 再進行動態更新,用上...