對於影響因素的個數來判斷需要的維度,根據狀態的多少來開闢陣列
對於各個狀態進行乙個比較,注意使用壓縮的方法對於問題中的所有東西進行優化
**:#include #include #include using namespace std;
int n,m;
const int n=100+5;
const int m=10;
const int maxn= (1<<10)+5;
int dp[n][n][n];
//dp[floor][prestate][currstate]
int mp[n];
char ch;
int st[100];
int sum[100];
/*dp關鍵是要找出那些量杜宇當前狀態的決策會產生影響,而這個影響的種類往往確定維度
dp[r][i][j]=max+sum[i]
*/bool judge(int x)
int asksum(int x)
return cnt;
}int main(){
while(scanf("%d%d",&n,&m)!=eof){
getchar();
memset(mp,0,sizeof(mp));
for(int i=0;i
2016夏季練習 dp
首先第乙個是知道了我們的dp原來是有可能用搜尋來進行推演和解釋的,之前一直以為是遞推的。第二個樹形dp的確是第一次看見,所以還是需要多多學習。先來解釋一下這個題目 選乙個樹的非聯通最大子集,其中資料是有權值 tree like dp include include include include u...
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...