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] ...
随机推荐
- ubuntu复制文件或目录
转自http://www.linuxidc.com/Linux/2008-11/17179.htm cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项 ...
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
对照<第一行代码——Android>进行学习,第五章中说到广播包的相关知识,前面获取广播等程序例程都可以跑的通,但是在5.3.2节中,程序A发送自定义广播,并接收自定义广播,同时程序B也接 ...
- linux中断申请之request_threaded_irq 【转】
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=21977330&id=3755609 在linux里,中断处理分 ...
- springboot配置fastjson后端往前端传输格式化
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.Spri ...
- js权威指南---学习笔记01
1.当函数赋值给对象的属性时,就变为了方法:2.被零整除不报错,只会返回无穷大(Infinity)或者负无穷大.例外:零除以零等于非数字(NaN).3.NaN与任何值都不相等! 4.Javascrip ...
- 洛谷P1342请柬
传送门啦 核心思想:两遍最短路. 1号点去各地的时间直接套最短路模板,各地到1号点时间用逆向思维,视为求1号点沿反边到各地的时间即可. #include <iostream> #inclu ...
- Linux学习笔记:pwd与dirs的区别
在Linux中可以使用pwd和dirs进行当前目录查看,分别用于显示当前目录和显示完整目录记录.具体如下: 1.pwd 显示当前目录 2.dirs 显示目录堆叠中的记录 END 2018-08-21 ...
- apachebench对网站进行并发测试
,安装apache ,打开cmd进入apache安装目录的bin目录(有ab.exe) ,执行ab命令 格式:ab -n -c http://localhost:80/test/test.php 说明 ...
- SCTF 2014 PWN400 分析
之前没有分析PWN400,现在再开一篇文章分析一下. 这个日志是我做题的一个笔记,就是说我做一步题就记录一下是实时的.所以说可能会有错误之类的. 首先程序是经典的笔记本程序,基本上一看到这种笔记本就知 ...
- zabbix监控多实例tomcat--不使用JMX
https://blog.csdn.net/nisan892541/article/details/47727967