仍然是一道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. 大数据学习——关于hive中的各种join

    准备数据 2,b 3,c 4,d 7,y 8,u 2,bb 3,cc 7,yy 9,pp 建表: create table a(id int,name string) row format delim ...

  2. ZOJ - 3781 Paint the Grid Reloaded 题解

    题目大意: 给一个n*m的X O构成的格子,对一个点操作可以使与它相连通的所有一样颜色的格子翻转颜色(X—>O或O—>X),问给定的矩阵最少操作多少次可以全部变成一样的颜色. 思路: 1. ...

  3. 【LibreOJ10121】与众不同(RMQ,二分)

    题意: 思路: C++ #include<map> #include<set> #include<cmath> #include<cstdio> #in ...

  4. linux下部署一个JavaEE项目的简单步骤

    部署项目的前提是准备好环境,包括:Java运行环境(JDK),Tomcat,Mysql数据库 1.首先将东西上传到服务器,我是在windows安装ssh工具(下载安装git即可http://gitfo ...

  5. Prime Ring Problem---hdu1016(dfs)

    http://acm.hdu.edu.cn/showproblem.php?pid=1016 这就是一道简单的dfs  但是是我自己想起来的   必须要记录一下 #include<stdio.h ...

  6. java-过滤器(Filter)

    在javaweb开发中,项目中都会包含一些过滤器(Filter),主要用于web服务器对资源的管理控制,如静态资源文件.jsp页面访问等.我们可以使用过滤器实现一些特殊的功能,如常见的过滤敏感词汇(替 ...

  7. Java中的字符

    以下内容引用自http://wiki.jikexueyuan.com/project/java/characters.html: 一般情况下,当处理字符时,使用的是原始数据类型char. 示例: ch ...

  8. Jinja2如何默认将None 值显示为空字符串?

    在Jinja模板中 {% if User %} {{ User.name }} {% endif %} 可以简化为下面的写法,同时,保证返回值为空,而不是显示为“None” {{ User.name ...

  9. Broadcom的消息机制

    在Broadcom中提供了自己的消息机制,有两种消息形式:Request/Response and Event(事件) Request/Response消息:进程之间的通信都是通过smd,所有的消息都 ...

  10. No module named '_sqlite3'问题解决

    Centos自带的python版本是2.7的,后面我自己装了3.5版本的,在创建应用的时候python manager.py startapp users 时,就会报No module named ' ...