給n個區間,求小區間被多少個大區間包含
我們可以按照r從大到小,l從小到大,把區間sort一遍,然後for迴圈,每次查詢有多少個數在l的前面,就有多少個大區間包含此次遍歷的區間,然後我們可以用樹狀陣列記錄一下,減少複雜度。
#include
#include
#include
#include
#define debug(x) cout<<#x<<" = "<#define inf 0x3f3f3f3f
using
namespace
std;
const
int maxn = 1e5 + 10;
struct node
} node[maxn];
/********************樹狀陣列模板************************/
int bitree_max;//資料範圍[1,n]
int bitree_num[maxn];
void update(int i, int value)
}int query(int i)
return ans;
}/********************樹狀陣列模板************************/
int main(void)
for (int i = 1; i <= n; i++)
cout
<< cnt[i] << " \n"[i == n];
}return
0;}
poj 2481(樹狀陣列)
這題樹狀陣列明顯可解,不解釋,但是注意有相同的奶牛的處理 include include include include define n 100005 using namespace std int c n tem struct dian d n int cmp dian a,dian b int...
poj 2481 樹狀陣列
解法2 按si值做降序排序後,相當於求每個位置i左邊大於等於e i 的個數 樹狀陣列更新節點的路徑和求和的路徑要改變,getsum i 相當於求i i 1 maxn include include using namespace std const int maxn 100010 int sum m...
POJ2481 樹狀陣列
題意 給n個節點的s和e,求對於每個節點,其他節點和它的關係滿足si sj and ej ei and ei si ej sj 的個數 題解 由於e的關係遞減,s的關係遞增,因此可以先對e排序,然後利用樹狀陣列更新並查詢每個sj在其之前的si的個數就是問題的解 include include inc...