![1176: [Balkan2007]Mokia](/uploads/image/0657.jpg)
链接
分析
三维偏序问题,CDQ分治论文题。
代码
1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long LL;
4
5 inline int read() {
6 int x=0,f=1;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
7 for (;isdigit(ch);ch=getchar())x=x*10+ch-'0';return x*f;
8 }
9
10 int ans[10010],W;
11 struct Que{
12 int ty,x,y,w,id;
13 bool operator < (const Que &a) const {
14 return x == a.x ? ty < a.ty : x < a.x;
15 }
16 }A[160000*4+10000+10],B[160000*4+10000+10];
17
18 struct Bit{
19 int sum[2000010];
20 void update(int p,int v) {
21 for (; p<=W; p+=p&(-p)) sum[p] += v;
22 }
23 int query(int p) {
24 int ans = 0;
25 for (; p; p-=p&(-p)) ans += sum[p];
26 return ans;
27 }
28 void clear(int p) {
29 for (; p<=W&&sum[p]; p+=p&(-p)) sum[p] = 0;
30 }
31 }bit;
32
33 void CDQ(int L,int R) {
34 if (L == R) return ;
35 int M = (L + R) >> 1;
36 CDQ(L,M);
37 CDQ(M+1,R);
38 int i = L, j = M + 1,k = L;
39 while (i <= M && j <= R) {
40 if (A[i] < A[j]) {
41 if (A[i].ty == 0) bit.update(A[i].y,A[i].w);
42 B[k++] = A[i++];
43 }
44 else {
45 if (A[j].ty == 1) ans[A[j].id] += A[j].w * bit.query(A[j].y);
46 B[k++] = A[j++];
47 }
48 }
49 while (i <= M) B[k++] = A[i++];
50 while (j <= R) {
51 ans[A[j].id] += A[j].w * bit.query(A[j].y);
52 B[k++] = A[j++];
53 }
54 for (int i=L; i<=R; ++i) {
55 bit.clear(A[i].y);
56 A[i] = B[i];
57 }
58 }
59 int main() {
60
61 W = read();W = read(); // 把W在这里int了一下,然后。。。
62 int Index = 0,QueIndex = 0;
63
64 while (1) {
65 int opt = read();
66 if (opt==3) break;
67 if (opt==1) {
68 int a = read(),b = read(),val = read();
69 A[++Index] = (Que){0,a,b,val,0};
70 }
71 else {
72 int a1 = read(),b1 = read(),a2 = read(),b2 = read();
73 A[++Index] = (Que){1,a1-1,b1-1,1,++QueIndex};
74 A[++Index] = (Que){1,a1-1,b2,-1,QueIndex};
75 A[++Index] = (Que){1,a2,b1-1,-1,QueIndex};
76 A[++Index] = (Que){1,a2,b2,1,QueIndex};
77 }
78 }
79 CDQ(1,Index);
80 for (int i=1; i<=QueIndex; ++i) printf("%dn",ans[i]);
81 return 0;
82 }
转载于:.html
本文发布于:2024-02-04 22:19:08,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170717692660132.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
| 留言与评论(共有 0 条评论) |