題意:有 n 個city,可以選擇任一城市作為起點,每個城市不能訪問超過2次,
城市之間有權值,問訪問全部n個城市需要的最小權值。
思路:因為每個城市可以訪問最多兩次,所以用三進制表示訪問的狀態。
詳細見代碼注釋!!!!
#include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF 1e8 #define inf 0x3f3f3f3f #define eps 1e-8 #define LL long long #define N 100001 #define mol 100000000 int dp[60000][15];//dp[i][j] 表示在狀態 i 的情況訪問到 j 的最小值 int g[15][15]; int n,m; int st[60000][11];//dp[i][j] i 狀態的第 j 個城市可以訪問幾次 int bit[12];//初始所有可能狀態 int main() { bit[0]=0;bit[1]=1; for(int i=2;i<=11;i++) bit[i]=3*bit[i-1]; for(int i=0;i<59050;i++) { int t=i; for(int j=1;j<=10&&t;j++) { st[i][j]=t%3; t/=3; } } while(~scanf("%d%d",&n,&m)) { int u,v,c; memset(dp,0x3f,sizeof(dp)); memset(g,0x3f,sizeof(g)); for(int i=0;i<=n;i++) dp[bit[i]][i]=0;//初始起點 為0 while(m--) { scanf("%d%d%d",&u,&v,&c); if(c
Problem Description Compar
改寫自OpenCV中的lda.cpp程序,通過改寫的程
,其它運算在指針世界裡沒有意義
先推廣一下QQ群: 二、關鍵部分代碼: 1.數據結構定義
C++ 中提供的override 關鍵字 C+&
杭電 2602 Bone Collector(背包問題 )