2016夏季練習 dp

2021-07-14 16:19:25 字數 515 閱讀 7550

首先第乙個是知道了我們的dp原來是有可能用搜尋來進行推演和解釋的,之前一直以為是遞推的。

第二個樹形dp的確是第一次看見,所以還是需要多多學習。

先來解釋一下這個題目:

選乙個樹的非聯通最大子集,其中資料是有權值

**://tree-like dp

#include #include #include #include using namespace std;

const int maxn = 6005;

int con[maxn];

vectortree[maxn];

int v[maxn];

int dp[maxn][2];

bool vis[maxn];

int n;

void dfs(int root){

vis[root]=1;

dp[root][0]=0;

dp[root][1]=con[root];

int p;

for(int i=0;i

2016夏季練習 dp

對於影響因素的個數來判斷需要的維度,根據狀態的多少來開闢陣列 對於各個狀態進行乙個比較,注意使用壓縮的方法對於問題中的所有東西進行優化 include include include using namespace std int n,m const int n 100 5 const int m ...

2016夏季練習 LCA

這個是倍增法的寫法,回頭將tarjan演算法的方式寫上 include include include include include include using namespace std const int maxn 10000 10 int n,rt int l,r vectortree ma...

2016夏季練習 線段樹

解釋在 注釋裡 include include include include using namespace std 由於題目中明確後輸入的y一定更大 也就是認為後輸入的其實對於我們的尋找和排序實際上沒有什麼影響 這樣我們就可以進行具體的查詢 const int maxn 32000 10 int...