链接:https://ac.nowcoder.com/acm/contest/317/E
来源:牛客网

题目描述

小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸
地方阵地可以看做是n×mn×m的矩形
航空母舰总共会派出qq架飞机。
飞机有两种,第一种飞机会轰炸以(xi,yi)(xi,yi)为中心,对角线长为lili的正菱形(也就是两条对角线分别于xx轴 yy轴平行的正方形),而第二种飞机只会轰炸正菱形的上半部分(包括第xixi行)
(具体看样例解释)
现在小a想知道所有格子被轰炸次数的异或和
注意:不保证被轰炸的格子一定在矩形范围内,若越界请忽略

输入描述:

第一行三个整数n,m,qn,m,q,分别表示矩阵的长/宽/询问次数
接下来qq行,每行四个整数opt,x,y,lopt,x,y,l,表示飞机类型,轰炸的坐标,以及对角线长度
保证ll为奇数!

输出描述:

一个整数,表示所有格子被轰炸次数的异或和
示例1

输入

4 5 4
1 2 2 1
1 3 3 5
1 3 2 3
2 2 4 3

输出

2
题意:每次对一个菱形区域轰炸,求每个点被轰炸次数的异或和。
题解:如果是矩形,很容易利用差分+二维前缀和解决(差分主要用于区间修改问题,前缀和主要用于单点查询问题),但是由于是矩形,单点查询并不能通过简单的加减进行维护,
于是动态差分诞生了,由于单点查询是按照行列顺序进行的,所以可以让差分数组不断地向下向右转移,具体见下图
 #include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
typedef long long ll;
int a[][],b[][],c[][],d[][];
void up(int x,int y,int l){
a[x-(l/)][y]++;b[x-(l/)][y+]--;
a[x+][y-(l/)-]--;b[x+][y+(l/)+]++;
}
void down(int x,int y,int l){
c[x+][y-(l/)+]++;d[x+][y+(l/)]--;
c[x++(l/)][y+]--;d[x+(l/)+][y]++;
}
int main(){
int n,m,q;
scanf("%d%d%d",&n,&m,&q);
while(q--){
int opt,x,y,l;
scanf("%d%d%d%d",&opt,&x,&y,&l);
up(x+,y+,l);
if(opt==)down(x+,y+,l);
}
int ans0=;
for(int i=;i<=n+;i++){
int ans=;
for(int j=;j<=;j++){
ans+=a[i][j]+b[i][j]+c[i][j]+d[i][j];
if(i>&&j>&&j<=+m){
ans0^=ans;
}
if(i+<&&j->=){
a[i+][j-]+=a[i][j];
d[i+][j-]+=d[i][j];
}
if(i+<&&j+<){
b[i+][j+]+=b[i][j];
c[i+][j+]+=c[i][j];
}
}
}
cout<<ans0<<endl;
return ;
}
 

[动态差分+二维前缀和][小a的轰炸游戏]的更多相关文章

  1. Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)

     题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...

  2. HDU-6514 Monitor(二维前缀和+差分)

    http://acm.hdu.edu.cn/showproblem.php?pid=6514 Problem Description Xiaoteng has a large area of land ...

  3. COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)

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

  4. 二维前缀和好题hdu6514

    #include<bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<=b;i++) using namespace std; ]; )* ...

  5. 动态生成二维码并利用canvas合成出一张图片(类似海报、分享页)

    在前端开发并打算推广一个APP的时候,推广页是免不了的,而推广页的展示方式一般是给人家一个二维码,让别人自己去安装APP,这样前段任务也达到了,这次写这篇文章的原因主要还是总结一下,其中有很多不完善的 ...

  6. 2018 Multi-University Training Contest 4 Problem E. Matrix from Arrays 【打表+二维前缀和】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6336 Problem E. Matrix from Arrays Time Limit: 4000/20 ...

  7. 子串查询(二维前缀数组) 2018"百度之星"程序设计大赛 - 资格赛

    子串查询 Time Limit: 3500/3000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Subm ...

  8. CF Gym 100463D Evil (二维前缀和+离散)

    题意:给一些带颜色的点,求一个最小的矩形,恰好包括一半的红色点,且不包括蓝色点. 题解:暴力,求个二维前缀和,用容斥原理更新一下.N很小所以我采用了离散优化,跑了个0ms. 之前没写过二维前缀和,加上 ...

  9. [CSP-S模拟测试]:physics(二维前缀和+二分+剪枝)

    题目传送门(内部题26) 输入格式 第一行有$3$个整数$n,m,q$.然后有$n$行,每行有一个长度为$m$的字符串,$+$表示正电粒子,$-$表示负电粒子.然后有$q$行,每行$2$个整数$x,y ...

随机推荐

  1. nyoj 0269 VF(dp)

    nyoj 0269 VF 意思大致为从1-10^9数中找到位数和为s的个数 分析:利用动态规划思想,一位一位的考虑,和s的范围为1-81 状态定义:dp[i][j] = 当前所有i位数的和为j的个数 ...

  2. js MDN 查看

  3. 每天CSS学习之text-indent

    text-indent是CSS的一个属性,其作用是定义首行文本的缩进.其值如下: 1.length:首行缩进固定的长度.默认值为0. 设置 首行缩进2em的长度. div{ width:300px; ...

  4. 团队项目开发特点以及NABCD分析总结

    (注:此博客来源于韩晓凡,我们是一个团队) 团队项目的特点:开发的这款软件是从我们的日常生活中得到的启发,现在正是大学阶段,刚刚开始管理自己每个月的生活费,并且在大学中每个月的生活费会有很多去处,然而 ...

  5. 实力封装:Unity打包AssetBundle(番外篇)

    前情提要:第二种打包方式. 自定义AssetBundle包扩展名 在之前的教程中,我们已经多次提到过扩展名了,并且也已经说明了如何设置自定义的AssetBundle扩展名.至于为什么还要把它单独拿出来 ...

  6. excel的操作

    python可以对excel进行写的操作,读的操作和修改的操作,做不同的功能需要导入不同的模块 1.对 excel进行写的操作 import xlwt book=xlwt.Workbook() #新建 ...

  7. Oracle function和procedure

    1.返回值的区别 函数有1个返回值,而存储过程是通过参数返回的,可以有多个或者没有 2. 调用的区别,函数可以在查询语句中直接调用,而存储过程必须单独调用. 函数:一般情况下是用来计算并返回一个计算结 ...

  8. day 关于生成器的函数

    def average(): count=0 toatal=0 average=0 while True: value=yield average toatal+=value count+=1 ave ...

  9. JavaServlet的文件上传和下载

    关于JSP中的文件上传和下载操作 先分析一下上传文件的流程 1-先通过前段页面中的选择文件选择要上传的图片 index.jsp <%@ page language="java" ...

  10. ubantu安装node、npm、cnpm、live-server

    更新ubuntu软件源 sudo apt-get update sudo apt-get install -y python-software-properties software-properti ...