第一道CDQ,抄了下helenkeller的代码,感觉和归并排序差不多。。。

因为左半边的修改肯定在右半边的询问之前,所以就不用管时间的限制了,可以直接x轴排序树状数组处理y轴。。。

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int w,n;
const int maxn=;
inline int read()
{
int p=;char c=getchar();
while(c<''||c>'')c=getchar();
while(c>=''&&c<='')p=p*+c-'',c=getchar();
return p;
}
struct node
{
int x1,y1,x2,y2,op,k,num;
int ans;
}p[maxn],cc[maxn<<];
int c[];
bool cmp(const node&a,const node&b)
{
if(a.x1==b.x1)return a.op<b.op;
return a.x1<b.x1;
}
int tot=;
void add(int x,int y)
{
for(int i=x;i<=w;i+=(i&(-i)))
{
c[i]+=y;
}
}
int sum(int x)
{
int q=;
for(int i=x;i;i-=(i&(-i)))
{
q+=c[i];
}
return q;
}
void solve(int l,int r)
{
if(l==r)return ;
int mid=(l+r)>>;int cnt=;
for(int i=l;i<=mid;i++)
{
if(p[i].op==)cc[cnt++]=p[i];
}
for(int i=mid+;i<=r;i++)
{
if(p[i].op==)
{
cc[cnt++]=p[i];
cc[cnt++]=p[i];
cc[cnt-].x1--;
cc[cnt-].x1=p[i].x2;
cc[cnt-].op=;
}
}
sort(cc,cc+cnt,cmp);
for(int i=;i<cnt;i++)
{
if(cc[i].op==)
{
add(cc[i].y1,cc[i].k);
}
else if(cc[i].op==)
{
p[cc[i].num].ans-=sum(cc[i].y2)-sum(cc[i].y1-);
}
else
{
p[cc[i].num].ans+=sum(cc[i].y2)-sum(cc[i].y1-);
}
}
for(int i=;i<cnt;i++)
{
if(cc[i].op==)
{
add(cc[i].y1,-cc[i].k);
}
}
solve(l,mid);
solve(mid+,r);
return ;
}
int main()
{
freopen("locust.in","r",stdin);
freopen("locust.out","w",stdout);
scanf("%d%d",&w,&n);
int flag,a,b,c,d;
for(int i=;i<=n;i++)
{
flag=read();
if(flag==)
{
a=read();b=read();c=read();
p[i].op=;
p[i].x1=a;
p[i].y1=b;
p[i].k=c;
}
else
{
a=read();b=read();c=read();d=read();
p[i].op=;
p[i].x1=min(a,c);p[i].x2=max(a,c);
p[i].y1=min(b,d);p[i].y2=max(b,d);
}
p[i].num=i;
}
solve(,n);
for(int i=;i<=n;i++)
{
if(p[i].op==)printf("%d\n",p[i].ans);
}
return ;
}

cogs 577 蝗灾 CDQ分治的更多相关文章

  1. COGS 577 蝗灾 [CDQ分治入门题]

    题目链接 昨天mhr神犇,讲分治时的CDQ分治的入门题. 题意: 你又一个w*w正方形的田地. 初始时没有蝗虫. 给你两个操作: 1. 1 x y z: (x,y)这个位置多了z只蝗虫. 2. 2 x ...

  2. COGS 577 蝗灾 线段树+CDQ分治

    第一次写cdq分治 感谢hhd&lty 这20亿对CP的指导(逃) 其实 就是 递归看左半部分对右半部分的贡献 (树状数组写挂了--临时改的线段树[大写的尴尬]) //By SiriusRen ...

  3. COGS 577 蝗灾

    传送门 时间限制:2 s 内存限制:128 MB DESCRIPTION C国国土辽阔,地大物博......但是最近却在闹蝗灾..... 我们可以把C国国土当成一个W×W的矩阵,你会收到一些诸如(X, ...

  4. COGS 2479. [HZOI 2016]偏序 [CDQ分治套CDQ分治 四维偏序]

    传送门 给定一个有n个元素的序列,元素编号为1~n,每个元素有三个属性a,b,c,求序列中满足i<j且ai<aj且bi<bj且ci<cj的数对(i,j)的个数. 对于100%的 ...

  5. cdq分治入门学习 cogs 1752 Mokia nwerc 2015-2016 G 二维偏序

    /* CDQ分治的对象是时间. 即对于一个时间段[L, R],我们取mid = (L + R) / 2. 分治的每层只考虑mid之前的修改对mid之后的查询的贡献,然后递归到[L,mid],(mid, ...

  6. CDQ分治嵌套模板:多维偏序问题

    CDQ分治2 CDQ套CDQ:四维偏序问题 题目来源:COGS 2479 偏序 #define LEFT 0 #define RIGHT 1 struct Node{int a,b,c,d,bg;}; ...

  7. 【教程】简易CDQ分治教程&学习笔记

    前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦!       CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...

  8. BZOJ 2683 简单题 ——CDQ分治

    [题目分析] 感觉CDQ分治和整体二分有着很本质的区别. 为什么还有许多人把他们放在一起,也许是因为代码很像吧. CDQ分治最重要的是加入了时间对答案的影响,x,y,t三个条件. 排序解决了x ,分治 ...

  9. HDU5618 & CDQ分治

    Description: 三维数点 Solution: 第一道cdq分治...感觉还是很显然的虽然题目不能再傻逼了... Code: /*=============================== ...

随机推荐

  1. UITableViewController和XML解析还有地图的简单结合

    然后我的代码就按照上面的这个顺序输出. #import <Foundation/Foundation.h> #import <MapKit/MapKit.h> @interfa ...

  2. jquery数组删除指定元素的方法:grep()

    jquery数组删除指定元素的方法:grep() 金刚 数组 jquery javascript 元素 遇到的问题 今天遇到一个问题,删除数组中的一个指定元素,并返回新的数组. 我定义的js数组是这样 ...

  3. 2014年年度工作总结--IT狂人实录

    2014年也是我人生最重要的一年,她见证了我的成长与蜕变,让我从一个迷茫的旅者踏上一条柳暗花明的路. 春宇之行 从春宇短暂的9个月,却经历常人难以想想的风风雨雨,首先要感谢春宇公司给我带来了安逸宽松的 ...

  4. TNS-12541: TNS:no listener TNS-12560 TNS-00511: No listener

        为了测试需要,系统管理员帮忙将一台ORACLE数据库服务器克隆到虚拟机上,我上去删除了root.oracle.tomcat账号下的crontab定时作业,然后启动了ORACLE数据库实例,删除 ...

  5. Linux系统VNC配置实践总结

    VNC概述 VNC (Virtual Network Computing)是虚拟网络计算机的缩写.VNC 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的.VNC 是在 ...

  6. shell数值运算与运算符

  7. Tomcat关闭日志catalina.out

    catalina.out文件会越来越大,对系统的稳定造成了一定的影响.conf/logging.properties 一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统 ...

  8. linux tomcat 的安装

    1.tomcat6 下载地址 http://tomcat.apache.org/download-60.cgi 下载的话,下载那个.tar.gz后缀名的即可. 好像在 Linux.Unix上tomca ...

  9. WPF RichTextbox

    WPFTextBoxAutoComplete AvalonEdit WPF SyntaxHighlightBox   WinForm 下的 Fast Colored TextBox for Synta ...

  10. EF optimize the perfermance

          参考 Three steps for fast entityframework 6.1 code-first startup performance Managing DbContext ...