[题目链接]

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. C++11 并发指南三(std::mutex 详解)(转)

    转自:http://www.cnblogs.com/haippy/p/3237213.html 上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::th ...

  2. Android自己定义控件

    今天我们来讲一下 Android中自己定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完毕的 ,但是.往往在一些项目中.单个控件有时是满足不了的.故此我们能够自己定义控件 ...

  3. 兔子-svnserver,client搭建

    http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html

  4. Layout规则总结

    一.尺寸要求 1.过孔到焊盘的距离多少合适? 6mil左右 2.铜皮到边框的距离多少合适? 极限8mil,通常12,最好做到20,40 3.Thermal焊盘打地孔个数? 正方形 3*3  4*4   ...

  5. Gson解析数组和list容器

    Gson解析数组和list容器 使用Gson解析首先须要增加架包文件:gson-2.2.4.jar 定义一个类Student: public class Student { String name=& ...

  6. JavaScript通过正则随机生成电话号码

    没有接口,就只能自己模拟Json数据了 恰好需要模拟一些电话号码,我又懒得自己随便写, 不如写一个小功能就用来实现随机生成电话号码 <!DOCTYPE html> <html lan ...

  7. poj 1730Perfect Pth Powers(分解质因数)

                                                             id=1730">Perfect Pth Powers Time Li ...

  8. hdu 3932 Groundhog Build Home

    Groundhog Build Home Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Ot ...

  9. MongoDB——mongo-connector同步到ES

    1.搭建完毕MongoDb复制集环境 2.开始安装 mongo-connector pip install mongo-connector:基于pip命令,不管是linux .window 系统默认有 ...

  10. checkbox 背景图片 纯CSS处理办法

    CSS .table_container input[type="checkbox"] { background: #fff url(/img/blue.png); backgro ...