**:
都過了這麼久了。。。我連這麼基礎的狀態壓縮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困難的。沒有已知...