BZOJ 1176 MOKIA
cdq分治。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 2000500
#define maxq 400050
using namespace std;
int s,w,type,a,b,c,d,cnt=,m=,ans[maxq];
struct ques
{
int val,opt,x,y,pos,id;
}q[maxq],tmp[maxq];
int t[maxn];
bool cmp(ques a,ques b)
{
if ((a.x==b.x) && (a.y==b.y)) return a.opt<b.opt;
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
int lowbit(int x)
{
return (x&(-x));
}
void add1(int x)
{
scanf("%d%d%d",&a,&b,&c);
q[++m].id=m;q[m].pos=;q[m].val=c;q[m].opt=;
q[m].x=a;q[m].y=b;
}
void add2(int x)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
cnt++;
q[++m].val=;q[m].opt=;q[m].x=c;q[m].y=d;q[m].pos=cnt;q[m].id=m;
q[++m].val=;q[m].opt=;q[m].x=a-;q[m].y=b-;q[m].pos=cnt;q[m].id=m;
q[++m].val=-;q[m].opt=;q[m].x=a-;q[m].y=d;q[m].pos=cnt;q[m].id=m;
q[++m].val=-;q[m].opt=;q[m].x=c;q[m].y=b-;q[m].pos=cnt;q[m].id=m;
}
void add(int x,int val)
{
for (int i=x;i<=w;i+=lowbit(i))
t[i]+=val;
}
int query(int x)
{
int ret=;
for (int i=x;i>=;i-=lowbit(i))
ret+=t[i];
return ret;
}
void cdq(int left,int right)
{
if (left==right) return;
int mid=left+right>>;
int l1=left,l2=mid+;
for (int i=left;i<=right;i++)
{
if ((q[i].id<=mid) && (!q[i].opt)) add(q[i].y,q[i].val);
else if ((q[i].id>mid) && (q[i].opt)) ans[q[i].pos]+=q[i].val*query(q[i].y);
}
for (int i=left;i<=right;i++)
if ((q[i].id<=mid) && (!q[i].opt)) add(q[i].y,-q[i].val);
for (int i=left;i<=right;i++)
{
if (q[i].id<=mid) tmp[l1++]=q[i];
else tmp[l2++]=q[i];
}
for (int i=left;i<=right;i++)
q[i]=tmp[i];
cdq(left,mid);cdq(mid+,right);
}
int main()
{
scanf("%d%d",&s,&w);
while (scanf("%d",&type)!=EOF)
{
if (type==) break;
if (type==) add1(cnt);
else add2(cnt);
}
sort(q+,q+m+,cmp);
cdq(,m);
for (int i=;i<=cnt;i++)
printf("%d\n",ans[i]);
return ;
}
BZOJ 1176 MOKIA的更多相关文章
- BZOJ 1176 Mokia CDQ分治+树状数组
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
- bzoj 1176 Mokia(CDQ分治,BIT)
[题目链接] http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=96974 [题意] 定义查询操作与修改操作:1 x y z 为 ...
- [bzoj] 1176 Mokia || CDQ分治
原题 给出W×W的矩阵(S没有用,题目有误),给出无限次操作,每次操作的含义为: 输入1:你需要把(x,y)(第x行第y列)的格子权值增加a 输入2:你需要求出以左下角为(x1,y1),右上角为(x2 ...
- BZOJ 1176: [Balkan2007]Mokia
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 2012 Solved: 896[Submit][St ...
- BZOJ 1176: [Balkan2007]Mokia( CDQ分治 + 树状数组 )
考虑cdq分治, 对于[l, r)递归[l, m), [m, r); 然后计算[l, m)的操作对[m, r)中询问的影响就可以了. 具体就是差分答案+排序+离散化然后树状数组维护.操作数为M的话时间 ...
- BZOJ 1176[Balkan2007]Mokia(CDQ分治)
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 3381 Solved: 1520[Submit][S ...
- 【BZOJ 1176】【Balkan 2007】Mokia
http://www.lydsy.com/JudgeOnline/problem.php?id=1176 整体二分的例题 把每个询问拆成四个询问,整体二分里x坐标递增,按x坐标扫的时候用树状数组维护y ...
- BZOJ 1176 [Balkan2007]Mokia ——CDQ分治
[题目分析] 同BZOJ2683,只需要提前处理s对结果的影响即可. CDQ的思路还是很清晰的. 排序解决一维, 分治时间, 树状数组解决一维. 复杂度是两个log [代码] #include < ...
- BZOJ 1176: [Balkan2007]Mokia [CDQ分治]
题意: 有一个n * n的棋盘,每个格子内有一个数,初始的时候全部为0.现在要求维护两种操作: 1)Add:将格子(x, y)内的数加上A. 2)Query:询问矩阵(x0, y0, x1, y1)内 ...
随机推荐
- NODEjs常见错误检查
一.没有添加对uncaughtException异常的捕捉处理,最起码也要在其中写个日志记录错误,然后可以调用 process.exit(1); 退出进程. 二.处理函数的回调函数检查,经常忘记在回调 ...
- js-jQuery对象与dom对象相互转换
http://blog.csdn.net/jueshengtianya/article/details/8823091 核心提示:jquery选择器得到的jquery对象和标准的 javascri ...
- Activity学习(二)——生命周期
一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...
- hdu 3886 Final Kichiku “Lanlanshu” 数位DP
思路: dp[i][j][k]:满足在字符串的j位,前一位数字是k. 代码如下: #include<iostream> #include<cstdio> #include< ...
- linux下如何查看主机的外网ip地址
在linux下如果我们使用的是nat方式上网.通过ifconfig命令查看到的ip地址往往是内网地址 那么如何查看主机在互联网上使用的公网IP呢?我们可以在命令行下使用curl命令实现这个功能. [r ...
- SSH乱码和Xshell异常断开解决方法
一.SSH Secure Shell Client中文乱码的解决方法 这是SSH Secure Shell Client多年未解决的短板,要求客户端和服务器端都要‘UTF-8’编码,我终于知道Wind ...
- cojs 疯狂的字符串 题解报告
首先这道题是GT考试的加强版本QAQ 当n<k的时候,答案显然是10^n 当n=k的时候,答案显然是10^n-1 这样就有20分辣 之后我们考虑k<=20的做法 显然设f(i,j)表示前i ...
- Python概述_软件安装_常见问题
1. Python安装 目前python有2个大版本,2和3,由于2和3语法有差别,现有的许多库都是基于python2开发,本系列文章以python2为主. 1.1 重要概念 1. 动态语言 运行 ...
- java jms
这篇博文我们主要介绍J2EE中的一个重要规范JMS,因为这个规范在企业中的应用十分的广泛,也比较重要,我们主要介绍JMS的基本概念和它的模式,消息的消费以及JMS编程步骤. 基本概念 JMS是java ...
- JavaPersistenceWithHibernate第二版笔记-第四章-Mapping persistent classes-002identity详解
一.简介 1.You now have three methods for distinguishing references: Objects are identical if they occ ...