解釋在**注釋裡
#include #include #include #include using namespace std;
//由於題目中明確後輸入的y一定更大
//也就是認為後輸入的其實對於我們的尋找和排序實際上沒有什麼影響
//這樣我們就可以進行具體的查詢
const int maxn = 32000+10;
int x,y;
int level[4*maxn];
int tree[4*maxn];
int n;
void update(int rt,int left,int right,int data)
int query(int rt,int left,int right,int l,int r)
int mid=(left+right)>>1;
if(r<=mid) return query(rt<<1,left,mid,l,r);
if(l>mid) return query(rt<<1|1,mid+1,right,l,r);
return query(rt<<1,left,mid,l,mid)+query(rt<<1|1,mid+1,right,mid+1,r);
}int main(){
while(scanf("%d",&n)!=eof){
memset(tree,0,sizeof(tree));
memset(level,0,sizeof(level));
for(int i=0;i
2016夏季練習 線段樹
include include include include define lson rt 1 define rson rt 1 1 using namespace std int h,w,n const int maxn 200000 10 int tree maxn 2 void pushup...
2016夏季練習 dp
首先第乙個是知道了我們的dp原來是有可能用搜尋來進行推演和解釋的,之前一直以為是遞推的。第二個樹形dp的確是第一次看見,所以還是需要多多學習。先來解釋一下這個題目 選乙個樹的非聯通最大子集,其中資料是有權值 tree like dp include include include include u...
2016夏季練習 dp
對於影響因素的個數來判斷需要的維度,根據狀態的多少來開闢陣列 對於各個狀態進行乙個比較,注意使用壓縮的方法對於問題中的所有東西進行優化 include include include using namespace std int n,m const int n 100 5 const int m ...