hdu3001 三進製 狀態壓縮dp

2021-07-30 21:50:24 字數 1146 閱讀 5039

**:

都過了這麼久了。。。我連這麼基礎的狀態壓縮dp都不會。。

收穫:(1)沒有關於樹這種說法中。。要記得注意重邊,,,

(2)原來的多進製是這樣弄得。。

(3)他這裡更新答案的時候是怎樣更新的。

#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define inf 1000000000

#define bug1 cout<<"bug1"<=2||e[i][j]==inf)continue;

int v=s+tri[j];

dp[v][j]=min(dp[v][j],dp[s][i]+e[i][j]);}}

if(fg)}}

if(ans==inf)ans=-1;

pf("%d\n",ans);

}}

2023年5月6日09:25:11;

自己再做,還是有錯。。  至少知道了多進製不能<<

#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define mem(a,b) memset(a,b,sizeof(a));

#define sf scanf

#define pf printf

const int inf=1e9;

const int n=15;

const int m=60000;

const int inf=0x3f3f3f3f;

int n,m;

//2023年5月6日08:42:30

int g[n][n];

int p[15];

int dig[m][11];

int d[m][11];

void init()

}}int main()

init();

while(~sf("%d%d",&n,&m))

int ans=inf;

for(int i=1;i



hdu 3001(狀態壓縮dp)

include include include define max1 10 define max2 59049 3 10 define inf 0x3f3f3f3f using namespace std 由於每個點可經過兩次 用三進製數表示狀態 例10020 三進製 表示經過點2兩次點1一次其餘...

HDU 3001(狀態壓縮dp)

這是我第一次寫的過了所有的樣例,但是wa因為題目是說每個點可以走兩次,而我剛開始以為這題就是裸的旅行家問題,後台資料一定專門設定了某個點重複走兩次會更小的情況,所以這裡需要一種新的方法,三進製!標記 提供幾組測試資料 輸入 5 5 2 1 1 3 1 1 4 1 1 5 1 1 2 5 10 答案 ...

nyoj 1182旅遊 三進製狀態壓縮dp

這個是經典狀態壓縮dp tsp問題的變形 首先來看看 挑戰程式設計競賽 講解tsp問題 給定乙個n個定頂點組成的帶權有向圖的距離矩陣d i,j inf表示沒有變 要求從頂點0出發,經過每個頂點恰好一次後再回到頂點0。問所經過得邊的總權重的最小值是多少?限制條件 1 0tsp問題是np困難的。沒有已知...