第一道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. OC 类别与扩展(匿名类别)

    OC 类别与扩展(匿名类别) 类别(Categroy): 又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调 ...

  2. windows server2012 R2 本地策略编辑

    进入本地策略编辑器: 1.win + R 2.输入命令行:gpedit.msc 密码期限设置: 1.windows设置 2.安全设置 3.账户策略 4.密码策略 5.密码最长使用期限 赋值 0 交互登 ...

  3. 解决idea中执行maven命令失败的问题

    1.问题描述 如上图所示,在使用idea 里的maven命令执行项目打包时,有时候会报如下一个错误. -Dmaven.multiModuleProjectDirectory system proper ...

  4. git操作命令

    参考:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 git 分布式版本控制系统. ...

  5. [Erlang 0105] Erlang Resources 小站 2013年1月~6月资讯合集

    很多事情要做,一件一件来; Erlang Resources 小站 2013年1月~6月资讯合集,方便检索.      小站地址: http://site.douban.com/204209/     ...

  6. 下一代Asp.net开发规范OWIN(2)—— Katana介绍以及使用

    接上篇OWIN产生的背景以及简单介绍,在了解了OWIN规范的来龙去脉后,接下来看一下Katana这个OWIN规范的实现,并看看如何使用在我们的Web开发中. 阅读目录: 一. Katana项目的结构和 ...

  7. Coding道场:第一次

    10/23日,我在部门内部进行了一次内部学习,使用目前流行的Coding Dojo(道场)方式,进行了TDD开发的演练.演练的题目如下:     有关Coding道场的介绍,请自行百度一下,我就不再多 ...

  8. SQL Server Replication 中关于视图的点滴

    在服务器A数据库TEST新建了一个本地发布(Local Publications)RPL_GES_MIS_TEST,在服务器B数据库RPL_TEST上创建了一个本地订阅(Local Subscript ...

  9. SSRS 2008 R2 错误:Timeout expired. The timeout period

    今天遇到了Reporting Services(SQL SERVER 2008 R2)的报表执行异常情况,报表加载数据很长时间都没有响应,最后报"An error occurred with ...

  10. 实时事件统计项目:优化solr和morphline的时间字段

    morphline优化,如下: 传过来的时间戳被复制到3个字段:eventTimeInMinuteChina_tdt ,eventTimeInMinuteUTC_tdt ,eventTimeInHou ...