最近很不对啊=w= 写程序全是bug啊

ans数组开小了竟然一直不知道,小数据没问题大数据拍不过,交上去RE

蛋疼半天

这个主要把每次询问拆成3个询问。

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
#define dout printf
using namespace std; const int Maxw=+,Maxm=+,Maxq=+;
typedef long long ll;
int S,W,tot,C[Maxw],ans[Maxm+Maxq*]; void Add(int x,const int&d){
for(;<x&&x<=W;x+=x&-x)C[x]+=d;
}
int Query(int x){
int ret=;
for(;<x&&x<=W;x-=x&-x)ret+=C[x];
return ret;
} const int Hmod=1e5+;
struct node{
bool tp;//0 for modify and 1 for query
int x,y,ans,id;
node(int x,int y,int tp,int ans,int id):tp(tp),x(x),y(y),ans(ans),id(id){}
node(){ans=;}
}da[Maxq*+Maxm],q[Maxq*+Maxm]; struct prob{
int s1,s2,s3,s4,t;
void init(int x1,int y1,int x2,int y2){
++tot,da[s1=tot]=node(x2,y2,,,tot);
if(x1==||y1==)s2=;
else ++tot,da[s2=tot]=node(x1-,y1-,,,tot);
if(x1==)s3=;
else ++tot,da[s3=tot]=node(x1-,y2,,,tot);
if(y1==)s4=;
else ++tot,da[s4=tot]=node(x2,y1-,,,tot);
t=(x2-x1+)*(y2-y1+);
}
int calc(){
return ans[s1]+ans[s2]-(ans[s3]+ans[s4])+t*S;
}
}pr[Maxq];int totpr=; inline bool cmp(const node&a,const node&b){
if(a.x!=b.x)return a.x<b.x;
return a.y<b.y;
}
void init(){
scanf("%d%d",&S,&W);
for(int x1,y1,x2,y2,d,opt;~scanf("%d",&opt)&&opt!=;){
if(opt==)scanf("%d%d%d",&x1,&y1,&d),++tot,da[tot]=node(x1,y1,,d,tot);
else scanf("%d%d%d%d",&x1,&y1,&x2,&y2),pr[++totpr].init(x1,y1,x2,y2);
}
} void CDQ(int l,int r){
if(l==r)return;
int mid=(l+r)>>;
CDQ(l,mid);
CDQ(mid+,r);
int i=l;
for(int j=mid+;j<=r;j++){
for(;i<=mid&&da[i].x<=da[j].x;i++)if(!da[i].tp)Add(da[i].y,da[i].ans);
if(da[j].tp)da[j].ans+=Query(da[j].y);
}
for(i--;i>=l;i--)if(!da[i].tp)Add(da[i].y,-da[i].ans);
merge(da+l,da+mid+,da+mid+,da+r+,q,cmp);
memcpy(da+l,q,sizeof(da[])*(r-l+));
}
int main(){
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout); init();
CDQ(,tot);
for(int i=;i<=tot;i++)ans[da[i].id]=da[i].ans;
for(int i=;i<=totpr;i++)printf("%d\n",pr[i].calc()); return ;
}

BZOJ1176: [Balkan2007]Mokia CDQ分治的更多相关文章

  1. BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )

    考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...

  2. BZOJ 1176[Balkan2007]Mokia(CDQ分治)

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 3381  Solved: 1520[Submit][S ...

  3. [BZOJ1176][Balkan2007]Mokia cdq+树状数组

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 3134  Solved: 1395[Submit][S ...

  4. BZOJ 1176: [Balkan2007]Mokia [CDQ分治]

    题意: 有一个n * n的棋盘,每个格子内有一个数,初始的时候全部为0.现在要求维护两种操作: 1)Add:将格子(x, y)内的数加上A. 2)Query:询问矩阵(x0, y0, x1, y1)内 ...

  5. BZOJ 1176 [Balkan2007]Mokia ——CDQ分治

    [题目分析] 同BZOJ2683,只需要提前处理s对结果的影响即可. CDQ的思路还是很清晰的. 排序解决一维, 分治时间, 树状数组解决一维. 复杂度是两个log [代码] #include < ...

  6. bzoj1176: [Balkan2007]Mokia cdq

    链接 bzoj 思路 cdq入门题,拆成4个矩阵,然后cdq. 代码 /************************************************************** P ...

  7. bzoj1176: [Balkan2007]Mokia【cdq分治】

    把询问搞成4个,cdq分治. #include <bits/stdc++.h> #define rep(i, a, b) for (int i = a;i <= b; i++) #d ...

  8. BZOJ1176 [Balkan2007]Mokia 【CDQ分治】

    题目 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. 输入格式 ...

  9. [bzoj1176]Mokia[CDQ分治]

    啃了一天论文,发现CDQ分治的原理其实很简单,大概就是这样的一类分治:将左右区间按一定规律排序后分开处理,递归到底时直接计算答案,对于一个区间,按照第二关键字split成两个区间,先处理左区间,之后因 ...

随机推荐

  1. Mediator 模式

    在面向对象系统的设计和开发过程中,对象之间的交互和通信是最为常见的情况,因为对象间的交互本身就是一种通信.在系统比较小的时候,可能对象间的通信不是很多.对象也比较少,我们可以直接硬编码到各个对象的方法 ...

  2. MYSQL 不排序

    mysql: SELECT * FROM EVENT WHERE eventId IN(443,419,431,440,420,414,509) ORDER BY INSTR(',443,419,43 ...

  3. jQuery源码整体结构(源码2.0.3)

    拨开jQuery的面纱,最近了解了下jQuery源码整体框架.主要包括: (1)  jQuery 核心模块 (2)  sizzle 选择器引擎 (3)  Deferred 异步队列 (4)  Supp ...

  4. Jquery效果之固定不动的块

    好多页面都有用到这种效果,大概就是不论页面上下如何滚动,固定不动的元素不随页面滚动,代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 ...

  5. QFTP走了以后QNetworkAccessManager出现了

    QNetworkAccessManager Class Header:    #include <QNetworkAccessManager>qmake:     QT += networ ...

  6. js 图片base64

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  7. Test for open live write

    this is test document. this is test document. this is test document. this is test document. this is ...

  8. tyvj P1135 - 植物大战僵尸 最大权闭合图

    P1135 - 植物大战僵尸 From ytt    Normal (OI)总时限:10s    内存限制:128MB    代码长度限制:64KB 背景 Background 虽然这么多天了,,虽然 ...

  9. Two shortest

    sgu185:http://acm.sgu.ru/problem.php?contest=0&problem=185 题意:找两条最短路径,没有边相交的最短路劲,并且输出路径. 题解:这一题和 ...

  10. 【POJ1330】Nearest Common Ancestors(树链剖分求LCA)

    Description A rooted tree is a well-known data structure in computer science and engineering. An exa ...