模板題...
差分,然後用主席樹維護時間點上的優先值和就好了
就是細節煩...
1 #include2#define int long long
3#define mid (l+r>>1)
4#define writeln(x) write(x),puts("")
5#define writep(x) write(x),putchar(' ')
6using
namespace
std;
7 inline int
read()
10while(isdigit(chr))
11return ans*f;
12 }void write(int
x)const
int m = 2e5+5
; 17
int rt[m*20],s[m*20],ls[m*20],rs[m*20],cnt[m*20
],n,m,lst,x,y,k,a[m],b[m],t;
18 vectoraa[m],bb[m];
19void update(int &x,int y,int l,int r,int p,int
opt)
25int query(int x,int l,int r,int
k)31
signed main()sort(b+1,b+n+1);int len=unique(b+1,b+n+1)-b-1;37
for(int i=1,pos;i<=m;i++)
43for(int j=0;j)
47 }lst=1;48
while(m--)return0;
54 }
然而悲傷的是:洛谷上暴力跑的最快惹qaq,排行榜第一頁全是暴力,轉行打暴力吧
upd:經測試bzoj上暴力跑得也賊快,上了第一頁
貼一下暴力**:
#include#define re register intusing
namespace
std;
inline
intread()
while(isdigit(chr))
return ans*f;
}const
int n=1e5+10
;struct pa[n];
int n,m,sum;long
long ans=1
;inline
bool cmp(const p&a,const p&b)
intmain()
return0;
}
CQOI2015 任務查詢系統 主席樹
最近實驗室正在為其管理的超級計算機編制一套任務管理系統,而你被安排完成其中的查詢部分。超級計算機中的任務用三元組 si,ei,pi 描述,si,ei,pi 表示任務從第si秒開始,在第ei秒後結束 第si秒和ei秒任務也在執行 其優先順序為pi。同一時間可能有多個任務同時執行,它們的優先順序可能相同...
CQOI2015 任務查詢系統(主席樹 差分)
這是一道好題 可以更深的理解主席樹 最初的想法是 一開始 一邊加入任務 一邊維護時間軸 換句話說 對於每個時間點 我們都想維護一顆權值線段樹 這裡的權值代表著優先順序pi 相當於對於乙個任務 我們要維護ei si棵 然而顯然mle 考慮降維 聯想到主席樹建樹方式是通過字首和來的 既然是求字首和 這道...
CQOI2015 任務查詢系統
因為對於任務來說,對一段區間是有用的,於是我們可以用差分來表示區間,然後主席樹維護字首區間和即可。然後因為我們是求和,我們同時主席樹也要維護區間的數字個數,因為求k小和。但是有可能當前區間的有a個相同的數字,我們求b個和,然後bac pragma gcc optimize 2 include def...