仍然是一道cdq模版。。

那么对于一个询问,容斥一下分成四个,变成问(1,1)~(x,y),那么对于x,y,修改只有x'<=x&&y'<=y,才对询问有影响,那么加上读入顺序,就是一个三维偏序了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; struct node
{
int tp,x,y,v,be;//第一维时间已经有序
//tp=0 表示修改 v为修改的值
//tp=-1、1询问 v为所求值
}a[];int len;
void ins(int tp,int x,int y,int v,int be)
{
len++;
a[len].tp=tp;
a[len].x=x;a[len].y=y;
a[len].v=v;a[len].be=be;
} //---------------------------------- int n,s[];
int lowbit(int x){return x&-x;}
void add(int x,int k)
{
while(x<=n)
{
s[x]+=k;
x+=lowbit(x);
}
}
int getsum(int x)
{
int ans=;
while(x>=)
{
ans+=s[x];
x-=lowbit(x);
}
return ans;
} //---------------树状数组----------------- node t[];
void cdq(int l,int r)
{
if(l==r)return ;
int mid=(l+r)/;
cdq(l,mid);
cdq(mid+,r); int i=l,j=mid+,p=l;
while(i<=mid&&j<=r)
{
if(a[i].x<=a[j].x)
{
if(a[i].tp==)add(a[i].y,a[i].v);
t[p++]=a[i++];
}
else
{
if(a[j].tp!=)a[j].v+=getsum(a[j].y);
t[p++]=a[j++];
}
}
while(i<=mid)
{
if(a[i].tp==)add(a[i].y,a[i].v);
t[p++]=a[i++];
}
while(j<=r)
{
if(a[j].tp!=)a[j].v+=getsum(a[j].y);
t[p++]=a[j++];
} for(int i=l;i<=mid;i++)
if(a[i].tp==)add(a[i].y,-a[i].v); for(int i=l;i<=r;i++)a[i]=t[i];
} //-------------------cdq------------------------ int ans[],ansl;
int main()
{
int S;
scanf("%d%d",&S,&n); int op,x1,y1,x2,y2,v;len=;
while(scanf("%d",&op)!=EOF)
{
if(op==)break; if(op==)
{
scanf("%d%d%d",&x1,&y1,&v);
ins(,x1,y1,v,);
}
else
{
ansl++;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if(x1->&&y1->)ins(,x1-,y1-,,ansl);
if(x1->)ins(-,x1-,y2,,ansl);
if(y1->)ins(-,x2,y1-,,ansl);
ins(,x2,y2,,ansl);
}
} cdq(,len); memset(ans,,sizeof(ans));
for(int i=;i<=len;i++)
if(a[i].tp!=)ans[a[i].be]+=a[i].v*a[i].tp; for(int i=;i<=ansl;i++)printf("%d\n",ans[i]);
return ;
}

bzoj2683(要改一点代码)&&bzoj1176: [Balkan2007]Mokia的更多相关文章

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

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

  2. 2018.09.16 bzoj1176: [Balkan2007]Mokia(cdq分治)

    传送门 调了半天发现是输出优化打错了求心理阴影体积233 这题很简单啊. 一个修改操作x如果对一个询问操作y有贡献那么有. tx<ty,Xx<=Xy,Yx<=Yy" rol ...

  3. bzoj1176: [Balkan2007]Mokia cdq

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

  4. Bzoj1176 [Balkan2007]Mokia

    Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2000  Solved: 890 Description 维护一个W*W的矩阵,初始值均为S.每次操作 ...

  5. BZOJ1176: [Balkan2007]Mokia CDQ分治

    最近很不对啊=w= 写程序全是bug啊 ans数组开小了竟然一直不知道,小数据没问题大数据拍不过,交上去RE 蛋疼半天 这个主要把每次询问拆成3个询问. #include<cstdio> ...

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

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

  7. bzoj千题计划144:bzoj1176: [Balkan2007]Mokia

    http://www.lydsy.com/JudgeOnline/problem.php?id=1176 CDQ分治 #include<cstdio> #include<iostre ...

  8. 【kd-tree】bzoj1176 [Balkan2007]Mokia

    裸题不多说,注意在sqrt(n*log(n))次插入后重构树以保持深度. #include<cstdio> #include<cmath> #include<algori ...

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

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

随机推荐

  1. Mongodb 断电或者强制关机之后

    Mongodb相信大家都比较熟悉了,将它注册为服务什么的就不说了,网上到处都是.在公司用的过程中,我发现在意外断电,或者强制关机之后,启动服务时候就会报错,找了很久,试了很多种方法,才发现,它有个自带 ...

  2. 三、Oracle常用内置函数

    1. ASCII  返回与指定的字符对应的十进制数;  SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from d ...

  3. python007 Python3 数字(Number)

    var1 = 1 var2 = 10 您也可以使用del语句删除一些数字对象的引用.del语句的语法是: del var1[,var2[,var3[....,varN]]]] 您可以通过使用del语句 ...

  4. laravel groupby分组问题。

    laravel 5.7使用groupBy分组查询时会提示一个错误,但是sql可以执行. 因为:mysql从5.7以后,默认开启了严格模式. 解决方法:将/config/database.php 中:关 ...

  5. 【ITOO 2】.NET 动态建库建表:使用SQL字符串拼接方式

    导读:在最近接手的项目(高效云平台)中,有一个需求是要当企业用户注册时,给其动态的新建一个库和表.刚开始接手的时候,是一点头绪都没有,然后查了一些资料,也问了问上一版本的师哥师姐,终于有了点头绪.目前 ...

  6. [luoguP2447] [SDOI2010]外星千足虫(高斯消元 + bitset)

    传送门 用bitset优化,要不然n^3肯定超时 消元过程中有几点需要注意,找到最大元后break,保证题目中所说的K最小 如果有自由元说明解很多,直接返回 #include <bitset&g ...

  7. 命令行模式直接下载jar包到本地库

    命令行下,直接使用  dependency:get -DrepoUrl=仓库地址 -Dartifact=groupId:artifactId:version[:packaging][:classifi ...

  8. python监控tomcat日记文件

    最近写了一个用python监控tomcat日记文件的功能 实现的功能: 监控日记文件中实时过来的记录,统计每分钟各个接口调用次数,统计结果插入oracle #!/usr/bin/python # -* ...

  9. 10.1——pair,map,set,multimap,multiset

    map和set只允许相同的键出现一次,而multimap和multiset则允许出现多次. 1. 引言——pair类型: pair需要添加头文件utility头文件 make_pair<v1,v ...

  10. 快速让你明白Objective-C的语法(和Java、C++对比)

    很多想开发iOS,或者正在开发iOS的程序员以前都做过Java或者C++,当第一次看到Objective-C的代码时都会头疼,Objective-C的代码在语法上和Java, C++有着很大的区别,有 ...