bzoj 1176: [Balkan2007]Mokia&&2683: 简单题 -- cdq分治
2683: 简单题
Time Limit: 50 Sec Memory Limit: 128 MB
Description
|
命令 |
参数限制 |
内容 |
|
1 x y A |
1<=x,y<=N,A是正整数 |
将格子x,y里的数字加上A |
|
2 x1 y1 x2 y2 |
1<=x1<= x2<=N 1<=y1<= y2<=N |
输出x1 y1 x2 y2这个矩形内的数字和 |
|
3 |
无 |
终止程序 |
Input
Output
Sample Input
1 2 3 3
2 1 1 3 3
1 2 2 2
2 2 2 3 4
3
Sample Output
5
HINT
Source
#include<map>
#include<cmath>
#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define inf 1000000007
#define ll long long
#define N 2000010
inline int rd()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
struct qaz{int op,x,y,v,dd;}q[N];
bool cmp(qaz a,qaz b){return a.x==b.x?a.y<b.y:a.x<b.x;}
int n,ans[N],m,ji[N],mm;
int c[N];
void add(int x,int v){for(int i=x;i<=n;i+=i&(-i)) c[i]+=v;}
int fd(int x){int sum=;for(int i=x;i;i-=i&(-i)) sum+=c[i];return sum;}
void cdq(int l,int r)
{
if(l==r) return;
int mid=l+r>>;
cdq(l,mid);cdq(mid+,r);
sort(q+l,q+mid+,cmp);
sort(q+mid+,q+r+,cmp);
int i=l,j=mid+,lst=;
while(j<=r)
{
while(q[i].op==&&i<=mid) i++;
while(q[j].op==&&j<=r) j++;
if(i<=mid&&q[i].x<=q[j].x) add(q[i].y,q[i].v),lst=i++;
else if(j<=r) ans[q[j].dd]+=fd(q[j].y),j++;
}
for(i=l;i<=lst;i++) if(q[i].op==) add(q[i].y,-q[i].v);
}
int main()
{
n=rd();
int op,x,y,A,x2,y2;
while()
{
op=rd();
if(op==)
{
x=rd();y=rd();A=rd();
q[++m]=(qaz){,x,y,A,m};
}
else if(op==)
{
x=rd();y=rd();x2=rd();y2=rd();
ji[++mm]=m;
q[++m]=(qaz){,x2,y2,,m};
q[++m]=(qaz){,x-,y-,,m};
q[++m]=(qaz){,x2,y-,,m};
q[++m]=(qaz){,x-,y2,,m};
}
else break;
}
cdq(,m);
for(int i=,p=ji[i];i<=mm;i++,p=ji[i])
printf("%d\n",ans[p+]+ans[p+]-ans[p+]-ans[p+]);
return ;
}
bzoj 1176: [Balkan2007]Mokia&&2683: 简单题 -- cdq分治的更多相关文章
- BZOJ 2683: 简单题 [CDQ分治]
同上题 那你为什么又发一个? 因为我用另一种写法又写了一遍... 不用排序,$CDQ$分治的时候归并排序 快了1000ms... #include <iostream> #include ...
- BZOJ 2683 简单题 cdq分治+树状数组
题意:链接 **方法:**cdq分治+树状数组 解析: 首先对于这道题,看了范围之后.二维的数据结构是显然不能过的.于是我们可能会考虑把一维排序之后还有一位上数据结构什么的,然而cdq分治却可以非常好 ...
- BZOJ 2683: 简单题(CDQ 分治)
题面 Time Limit: 50 Sec Memory Limit: 128 MB Description 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: ...
- BZOJ 2683 简单题 ——CDQ分治
[题目分析] 感觉CDQ分治和整体二分有着很本质的区别. 为什么还有许多人把他们放在一起,也许是因为代码很像吧. CDQ分治最重要的是加入了时间对答案的影响,x,y,t三个条件. 排序解决了x ,分治 ...
- 【BZOJ-1176&2683】Mokia&简单题 CDQ分治
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
- BZOJ 1176[Balkan2007]Mokia(CDQ分治)
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 3381 Solved: 1520[Submit][S ...
- BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )
考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...
- BZOJ 1176: [Balkan2007]Mokia
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 2012 Solved: 896[Submit][St ...
- bzoj2683简单题 cdq分治
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 1803 Solved: 731[Submit][Status][Discuss] ...
随机推荐
- springcloud中eureka集群unavailable-replicas
unavailable-replicas 配置了集群,但是在注册中心显示另外的几个集群地址是不可用的: 1 首先需要再host中添加服务名映射,如果应映射了再看是否在yml中配置了prefer-ip- ...
- CSS锚伪类顺序需注意的几点
CSS锚伪类有以下几种: a:link{color:pink} /*未访问的链接*/ a:visited{color:red} /*已访问的链接*/ a:hover{color:blue} /*鼠标移 ...
- 十九、springboot使用@ControllerAdvice(二)之深入理解
前言: 接口类项目开发时,为了便于后期查找问题,一般会拦截器或过滤器中记录每个接口请求的参数与响应值记录, 请求参数很容易从request中获取,但controller的返回值无法从response中 ...
- 缓存数据库-redis数据类型和操作(hash)
一:Redis 哈希(Hash) Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个 hash 可以存储 232 - 1 ...
- SHELL 中的变量
变量的分类 系统环境变量 系统本身所有,通常为大写字母 系统变量通过 set 或 declare 指令进行查看 UDV 变量(user defined variable ) 用户创建和维护,建议大写 ...
- 用js面向对象思想封装插件
js是基于原型的面向对象语言,如果你学过java,c#等正统面向对象语言,你会难以理解js的面向对象,他和普通的面向对象不太一样,今天,我们通过封装一个toast插件,来看看js面向对象是如何运行的. ...
- Java KeyStore 用命令生成keystore文件自己生成证书,简介
1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...
- 【转】shell命令中>/dev/null 2>&1的实现原理
异步执行 exec("/alidata/server/php/bin/php /nas/wxdoctor/index.php App/Common/WordsPic/user_id/&quo ...
- babel转换不了有些es6
bable只转换新语法 不支持新的全局变量如promise async等等,可以使用babel-polyfilll来兼容
- the server ssl certificate failed to verify
很久没上传项目之后,远程端断开联系 如果是git,就git clone,重新把项目拉下来. svn的话,就svn ls,拉下项目.