【COGS1752】 BOI2007—摩基亚Mokia
http://cogs.pro/cogs/problem/problem.php?pid=1752 (题目链接)
题意
给出$n*n$的棋盘,单点修改,矩阵查询。
Solution
离线以后CDQ分治。每一层按照$Y$排序,然后询问用前缀和拆成$4$个,树状数组维护一下就可以了。
细节
?
代码
// cogs1752
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define inf (1ll<<30)
#define Pi acos(-1.0)
#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout)
using namespace std; const int maxn=200010,maxd=2000010;
int c[maxd],ans[maxn],n,m;
struct data {int x,y,k,id,op;}q[maxn<<2],nq[maxn<<2]; int lowbit(int x) {
return x&-x;
}
void add(int x,int val) {
for (int i=x;i<=n;i+=lowbit(i)) c[i]+=val;
}
int query(int x) {
int res=0;
for (int i=x;i;i-=lowbit(i)) res+=c[i];
return res;
}
void solve(int l,int r) {
if (l==r) return;
int mid=(l+r)>>1,l1=l,l2=mid+1;
for (int i=l;i<=r;i++) q[i].id<=mid ? nq[l1++]=q[i] : nq[l2++]=q[i];
for (int i=l;i<=r;i++) q[i]=nq[i];
solve(l,mid);solve(mid+1,r);
for (int i=l,j=mid+1,k=l;i<=mid || j<=r;) {
if (j>r || (i<=mid && q[i].y<=q[j].y)) {
if (q[i].k>0) add(q[i].x,q[i].k);
nq[k++]=q[i++];
}
else {
if (q[j].k<0) ans[-q[j].k]+=q[j].op*query(q[j].x);
nq[k++]=q[j++];
}
}
for (int i=l;i<=mid;i++) if (q[i].k>0) add(q[i].x,-q[i].k);
for (int i=l;i<=r;i++) q[i]=nq[i];
}
int main() {
free("mokia");
int T,tot=0;
while (scanf("%d",&T)!=EOF) {
if (T==0) scanf("%d",&n);
if (T==1) {
int x,y,k;
scanf("%d%d%d",&x,&y,&k);
m++,q[m]=(data){x,y,k,m,0};
}
if (T==2) {
int x1,y1,x2,y2;tot++;
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
m++,q[m]=(data){x1-1,y1-1,-tot,m,1};
m++,q[m]=(data){x1-1,y2,-tot,m,-1};
m++,q[m]=(data){x2,y1-1,-tot,m,-1};
m++,q[m]=(data){x2,y2,-tot,m,1};
}
if (T==3) break;
}
solve(1,m);
for (int i=1;i<=tot;i++) printf("%d\n",ans[i]);
return 0;
}
【COGS1752】 BOI2007—摩基亚Mokia的更多相关文章
- COGS1752. [BOI2007]摩基亚Mokia
1752. [BOI2007]摩基亚Mokia ★★☆ 输入文件:mokia.in 输出文件:mokia.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 摩尔瓦 ...
- COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...
- COGS1752. [BOI2007]摩基亚Mokia(CDQ,树状数组)
题目描述 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能够回 ...
- COGS1752. [BOI2007]摩基亚Mokia CDQ
CDQ的板子题 #include<cstdio> #include<cstring> #include<iostream> #include<algorith ...
- COJS 1752. [BOI2007]摩基亚Mokia
1752. [BOI2007]摩基亚Mokia ★★★ 输入文件:mokia.in 输出文件:mokia.out 简单对比时间限制:5 s 内存限制:128 MB [题目描述] 摩尔瓦 ...
- 分治(CDQ):[BOI2007]摩基亚Mokia
[题目描述] 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它能 ...
- Bzoj1176:Mokia&Cogs1752:[BOI2007]摩基亚Mokia
题目 Cogs 没有Bzoj的权限号 Sol 离线,\(CDQ\)分治,把询问拆成\(4\)个,变成每次求二位前缀和 那么只要一个修改操作(关键字为时间,\(x\),\(y\))都在这个询问前,就可以 ...
- [COGS 1752] 摩基亚Mokia
照例先上题面 1752. [BOI2007]摩基亚Mokia 输入文件:mokia.in 输出文件:mokia.out 时间限制:1.5 s 内存限制:128 MB [题目描述] 摩尔瓦多的移 ...
- [BOI2007]摩基亚
题目:洛谷P4390.BZOJ1176. 题目大意: 给你一个\(W\times W\)的矩阵,初始每个数都为\(S\).现在有若干操作: 1. 给某个格子加上一个值:2. 询问某个子矩阵的值的和:3 ...
随机推荐
- 大数据入门第二十四天——SparkStreaming(一)入门与示例
一.概述 1.什么是spark streaming Spark Streaming is an extension of the core Spark API that enables scalabl ...
- Sagas模式
Sagas属于一个错误管理模式,也同时用于控制复杂事务的执行和回滚等.同时,Compensating-Transaction模式的的实现也是也是类似于Sagas策略的,可以对比参考一下. Sagas的 ...
- [Oracle]如果误删了某个数据文件,又没有被备份,能否恢复?
如果你有从这个数据文件创建之前,直到现在的,所有的ArchiveLog 和 Online REDO,是有可能进行恢复的. 执行: RMAN> restore datafile <filei ...
- 11.8 开课二个月零四天 (Jquery取属性值,做全选,去空格)
1.jquery取复选框的值 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "htt ...
- HNOI2019 摸鱼记
感觉准备省选时有点浮躁,没有准备联赛时那样认真, 希望能将这次省选当做一个教训吧QAQ. Day -inf 基本上把要学的东西都学了,至少做到了自己心里有底. Day 0 乒乓球室没开差评,打隔膜不带 ...
- async await使用
promise使用 var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(f ...
- 微信小程序之缓存——不同页面传递数据
1. 添加缓存 单个密钥允许存储的最大数据长度为1MB,所有数据存储上限为10MB. // 存储信息到storage // 异步存储 set() { wx.setStorage({ key: 'use ...
- 重置Oracle配置
经常被ORACLE坑,作为一个只需要开发时候连连ORACLE的程序员,在经历了一次又一次的折腾之后,决定还是把这些琐碎的事情写下来. 经常在虚拟机中使用ORACLE,ORACLE的网络配置有一些变化就 ...
- php faker 库填充数据
Generating Fake Data in PHP with Faker 时间 2016-01-28 07:13:00 Wern Ancheta 原文 http://wern-ancheta.c ...
- spring boot 实现文件下载
html 代码 js部分 window.location.href= this.Baseurl+'/plan/down?file='+filename; spring boot 后台代码@GetMap ...