[题目链接]

https://www.lydsy.com/JudgeOnline/problem.php?id=1176

[算法]

CDQ分治 + 树状数组即可

时间复杂度 : O(Nlog^2N)

[代码]

#include<bits/stdc++.h>
using namespace std;
const int N = ;
const int M = ;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull; struct Query
{
int pos , x , y , value , type , id;
} q[N * ] , t1[N * ] , t2[N * ]; int s , w , m , k;
int c[M] , ans[N]; template <typename T> inline void chkmax(T &x,T y) { x = max(x,y); }
template <typename T> inline void chkmin(T &x,T y) { x = min(x,y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline bool cmp(Query a , Query b)
{
if (a.x != b.x) return a.x < b.x;
else if (a.y != b.y) return a.y < b.y;
else return a.type < b.type;
}
inline int lowbit(int x)
{
return x & (-x);
}
inline void modify(int x , int val)
{
for (int i = x; i <= w; i += lowbit(i))
c[i] += val;
}
inline int query(int x)
{
int ret = ;
for (int i = x; i; i -= lowbit(i))
ret += c[i];
return ret;
}
inline void cdq(int l , int r)
{
int mid = (l + r) >> ;
if (l == r) return;
for (int i = l; i <= r; i++)
{
if (q[i].type == && q[i].pos <= mid) modify(q[i].y , q[i].value);
else if (q[i].type == && q[i].pos > mid) ans[q[i].id] += q[i].value * query(q[i].y);
}
for (int i = l; i <= r; i++)
{
if (q[i].type == && q[i].pos <= mid)
modify(q[i].y , -q[i].value);
}
int l1 = , l2 = ;
for (int i = l; i <= r; i++)
if (q[i].pos <= mid) t1[++l1] = q[i];
else t2[++l2] = q[i];
for (int i = ; i <= l1; i++) q[l + i - ] = t1[i];
for (int i = ; i <= l2; i++) q[l + l1 + i - ] = t2[i];
cdq(l , mid);
cdq(mid + , r);
} int main()
{ read(s); read(w);
while (true)
{
int type;
read(type);
if (type == ) break;
if (type == )
{
int x , y , a;
read(x); read(y); read(a);
q[++m] = (Query){m , x , y , a , , k};
} else
{
int X1 , Y1 , X2 , Y2;
read(X1); read(Y1); read(X2); read(Y2);
ans[++k] = s * (X2 - X1 + ) * (Y2 - Y1 + );
q[++m] = (Query){m , X2 , Y2 , , , k};
q[++m] = (Query){m , X1 - , Y2 , - , , k};
q[++m] = (Query){m , X2 , Y1 - , - , , k};
q[++m] = (Query){m , X1 - , Y1 - , , , k};
}
}
sort(q + , q + m + , cmp);
cdq( , m);
for (int i = ; i <= k; i++) printf("%d\n" , ans[i]); return ; }

[Balkan 2007] Mokia的更多相关文章

  1. 【BZOJ 1176】【Balkan 2007】Mokia

    http://www.lydsy.com/JudgeOnline/problem.php?id=1176 整体二分的例题 把每个询问拆成四个询问,整体二分里x坐标递增,按x坐标扫的时候用树状数组维护y ...

  2. [COGS 1752] 摩基亚Mokia

    照例先上题面 1752. [BOI2007]摩基亚Mokia 输入文件:mokia.in   输出文件:mokia.out 时间限制:1.5 s   内存限制:128 MB [题目描述] 摩尔瓦多的移 ...

  3. COGS1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★☆   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  4. cogs1752[boi2007]mokia 摩基亚 (cdq分治)

    [题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能 ...

  5. COJS 1752. [BOI2007]摩基亚Mokia

    1752. [BOI2007]摩基亚Mokia ★★★   输入文件:mokia.in   输出文件:mokia.out   简单对比时间限制:5 s   内存限制:128 MB [题目描述] 摩尔瓦 ...

  6. ACdream1157 Segments(CDQ分治 + 线段树)

    题目这么说的: 进行如下3种类型操作:1)D L R(1 <= L <= R <= 1000000000) 增加一条线段[L,R]2)C i (1-base) 删除第i条增加的线段, ...

  7. poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算

    /** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...

  8. BZOJ 2007: [Noi2010]海拔

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2410  Solved: 1142[Submit][Status] ...

  9. BZOJ 1176: [Balkan2007]Mokia

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 2012  Solved: 896[Submit][St ...

随机推荐

  1. GOPATH设置

    go help gopath查看gopath的原文帮助信息 go env查看gopath的配置 GOPATH与工作空间 前面我们在安装Go的时候看到需要设置GOPATH变量,Go从1.1版本到1.7必 ...

  2. 【Todo】Java并发学习 & 示例练习及代码

    接上一篇:http://www.cnblogs.com/charlesblc/p/6097111.html <Java并发学习 & Executor学习 & 异常逃逸 & ...

  3. NMM3DViewer 设计

    在FrameworkInterfaces工程的INMM3DServer.cs中定义了 岩石材料结构 BlockMaterial  -----> StrBLOCKProperty     publ ...

  4. IOS开发退出应用程序的代码

    IOS 开发中.我知道的两个退出程序的方法: 1. exit(0); 2. if([[UIApplication sharedApplication] respondsToSelector:@sele ...

  5. intellij idea 提示找不到default activivty

      更换环境之后 ,intellij idea 提示找不到默认的activity.   而查看源代码. 在代码中明显已经设置了默认activity了. 后来发现.程序中有个库工程中的AndroidMe ...

  6. Spring HTTP Service

    基于Spring MVC, 使用Http Service Invoke远程调用方法 (参考: http://blog.csdn.net/hanqunfeng/article/details/43031 ...

  7. 翻翻git之---有用的欢迎页开源库 AppIntro

    转载请注明出处:王亟亟的大牛之路 今天没有P1.直接进入正题 今天上的是一个帅帅的app滑动介绍页 . 为什么说帅? 作者对自己的内容是这么定义的 Make a cool intro for your ...

  8. C++静态库与动态库深入研究

    什么是库 库是写好的现有的,成熟的,可以复用的代码.现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常. 本质上来说库是一种可执行代码的二进制形式,可以被操 ...

  9. git 操作远程仓库地址

    查看所有远程仓库地址: git remote -v 更改远程仓库地址: git remote set-url origin newUrl 查看某一个远程仓库地址: git remote get-url ...

  10. POI-----POI操作Excel-4、字体