time limit: 40 sec memory limit: 128 mb
submit: 444 solved: 188
[submit][status]
mato同學從各路神犇以各種方式(你們懂的)收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間[l,r],他今天就看編號在此區間內的這些資料。mato有乙個習慣,他總是從檔案大小從小到大看資料。他先把要看的檔案按編號順序依次拷貝出來,再用他寫的排序程式給檔案大小排序。排序程式可以在1單位時間內交換2個相鄰的檔案(因為加密需要,不能隨機訪問)。mato想要使檔案交換次數最小,你能告訴他每天需要交換多少次嗎?
第一行乙個正整數n,表示mato的資料份數。
第二行由空格隔開的n個正整數,第i個表示編號為i的資料的大小。
第三行乙個正整數q,表示mato會看幾天資料。
之後q行每行兩個正整數l、r,表示mato這天看[l,r]區間的檔案。
q行,每行乙個正整數,表示mato這天需要交換的次數。
41 4 2 3
21 2
2 40
2hint
n,q <= 50000
樣例解釋:第一天,mato不需要交換
第二天,mato可以把2號交換2次移到最後。
by taorunz
題解:先離線莫隊做,然後我們需要做的就是求出給定區間內《或》乙個數的個數。
剛開始一直想著這不是裸的主席樹嗎?然後題解說不用主席樹,樹狀陣列就行。。。
想了一會兒還是不會,一看別人的**,原來是維護當前區間的樹狀陣列啊,orz
**:
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8 #include9 #includeview code10 #include11 #include
12#define inf 1000000000
13#define maxn 50000+5
14#define maxm 500+100
15#define eps 1e-10
16#define ll int
17#define pa pair18
#define for0(i,n) for(int i=0;i<=(n);i++)
19#define for1(i,n) for(int i=1;i<=(n);i++)
20#define for2(i,x,y) for(int i=(x);i<=(y);i++)
21#define for3(i,x,y) for(int i=(x);i>=(y);i--)
22#define mod 1000000007
23using
namespace
std;
24 inline int
read()
2528
while(ch>='
0'&&ch<='9')
29return x*f;30}
31struct recc[maxn];
32ll n,m,cnt,tot,a[maxn],b[maxn],s[maxn],v[maxn],ans[maxn];
33 inline bool cmp(rec x,rec y)
34 inline bool cmp1(int x,int y)
35 inline ll sum(int x)
36 inline void add(int x,int y)
37int
main()
3849 m=read();int block=sqrt(n);
50 for1(i,n)b[i]=(i-1)/block+1
;51 for1(i,m)c[i].l=read(),c[i].r=read(),c[i].id=i;
52 sort(c+1,c+m+1
,cmp);
53int l=1,r=0;54
for1(i,m)
5562 for1(i,m)printf("
%d\n
",ans[i]);
63return0;
64 }
bzoj3289 Mato的檔案管理
給定乙個序列,每次詢問乙個區間,你可以交換相鄰兩個元素,這個區間你最少需要多少次交換才能使其有序。我們觀察,每次交換如果交換a i 和a i 1 那麼顯然a i a i 1 交換後逆序對個數減一。當序列逆序對個數為0時序列就有序。那麼顯然題意就是詢問區間逆序對個數。我們可以用莫隊演算法來做。因為它符...
bzoj 3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...
bzoj3289 Mato的檔案管理
description mato同學從各路神犇以各種方式 你們懂的 收集了許多資料,這些資料一共有n份,每份有乙個大小和乙個編號。為了防止他人偷拷,這些資料都是加密過的,只能用mato自己寫的程式才能訪問。mato每天隨機選乙個區間 l,r 他今天就看編號在此區間內的這些資料。mato有乙個習慣,他...