小a的轰炸游戏 (差分)
我是看题解的!
这道题还是有很多细节,当然,是一道差分的好题!
题意:有2种飞机,一种是只炸上半菱形,一种是炸整个菱形。问所有区域内的所有格子的异或和。
思路:用前缀和思路;

这样遍历过去就完成了一次轰炸。
但是,这样是不现实的,因为不可能每次都这样做。但是下面一下就可以。
这里,我尽量写清楚这道好题的主要思路。
也就是使用a, b,c,d4个数组来存储1和-1;然后再箭头方向更新!就很好了。
#include<iostream>
#include<cstdio>
using namespace std;
#define ll long long
const int maxn = 3e3 + , L = 1e3;
const int maxm = 1e5 + ;
const ll INF = 1e16;
int a[maxn][maxn], b[maxn][maxn], c[maxn][maxn], d[maxn][maxn];
int n, m, k; 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(){
scanf("%d%d%d", &n, &m, &k);
for (int i = , op, x, y, l; i < k; ++i){
scanf("%d%d%d%d", &op, &x, &y, &l);
x += L; y += L;
up(x, y, l);
if (op == )down(x, y, l);
}
int res = ;
for (int i = ; i < n + * L; ++i)
{
int ans = ;
for (int j = ; j < m + * L; ++j){
ans += a[i][j] + b[i][j] + c[i][j] + d[i][j];
if (i >= L + && i <= L + n&&j >= L + && j <= L + m)res ^= ans;
a[i + ][j - ] += a[i][j];
b[i + ][j + ] += b[i][j];
c[i + ][j + ] += c[i][j];
d[i + ][j - ] += d[i][j];
}
}
cout << res << endl;
}
小a的轰炸游戏 (差分)的更多相关文章
- 差分数组|小a的轰炸游戏-牛客317E
小a的轰炸游戏 题目链接:https://ac.nowcoder.com/acm/contest/317/E 思路 这题考查的是对差分数组原理和前缀和的理解. 四个数组分别记录朝着四个方向下放的个数 ...
- [动态差分+二维前缀和][小a的轰炸游戏]
链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n× ...
- 小a的轰炸游戏(差分,前缀和)
题目传送门 题意: 给出一个n*m的矩形,然后有两个操作. 1操作,对一个给出的菱形,对菱形范围内的东西进行+1. 2操作,对一个上半菱形的区域,进行+1操作. 最后求矩形内各个数的异或和. 思路: ...
- 【BZOJ3436】小K的农场(差分约束)
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include< ...
- BZOJ_3436_小K的农场_差分约束
BZOJ_3436_小K的农场_差分约束 题意: 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得 一些含糊的信息(共m个),以下列三种形式描述 ...
- 微信小程序开发的游戏《拼图游戏》
微信小程序开发的游戏<拼图游戏> 代码直接考进去就能用 pintu.js // pintu.js Page({ /** * 页面的初始数据 */ data: { }, initGame: ...
- 用微信小程序做H5游戏尝试
微信小程序发布后,公司虽然没有拿到第一批内测资格,但作为微信亲密合作伙伴,一定要第一时间去尝试啦.现在微信小程序刚发布还在测试阶段,可以说是1.0版本,所以框架和结构内容都还不多,相关的文档跟微信AP ...
- 小妖精的完美游戏教室——人工智能,A*算法,引言
今天也要直播魔法,求科学的! 欢迎来到小妖精Balous的完美游戏教室! 经过前两周的学习,相信米娜桑已经对状态机有所了解了呢~虽然状态机能够实现几乎所有的人工智能,但是,在实践中,你们有没有发现,自 ...
- hihocoder1545 : 小Hi和小Ho的对弈游戏(树上博弈&nim博弈)
描述 小Hi和小Ho经常一起结对编程,他们通过各种对弈游戏决定谁担任Driver谁担任Observer. 今天他们的对弈是在一棵有根树 T 上进行的.小Hi和小Ho轮流进行删除操作,其中小Hi先手. ...
随机推荐
- 全面掌握Node命令选项
全面掌握Node命令选项 译者按:作为Node.js开发者,有必要全面了解一下节点命令的所有选项,这样在关键时刻才能得心应手. 原文:掌握Node.js的CLI和命令行选项 译者:Fundebug 为 ...
- 洛谷P2286 [HNOI2004]宠物收养场
题目描述 凡凡开了一间宠物收养场.收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领 ...
- css不受高度限制实现文本超出隐藏并以省略号结束
文本超出省略号显示代码: overflow: hidden; text-overflow:ellipsis; white-space: nowrap;width: 100px; /*宽度做好限制*/ ...
- 2018-11-13 中文代码示例之Programming in Scala学习笔记第二三章
由于拷贝后文档格式有变, 仅摘几段如下. 完整而且代码带语法高亮的源版在: program-in-chinese/Programming_in_Scala_study_notes_zh 前言: 本书已 ...
- Ubuntu、deepin 安装 mysql
在 Ubuntu 和 deepin 安装 mysql 是很简单的,只需要几条简单的命令即可 1. sudo apt-get install mysql-server 2. sudo apt-get ...
- SOD框架--系统概要
SOD框架(源PDF.NETE框架)系统概要介绍 --核心三大功能(S,O,D): SQL-MAP XML SQL config and Map DAL SQL Map Entity ORM OQL( ...
- 折半插入排序算法的C++实现
折半插入排序思想和直接插入排序类似. 1)找到插入位置: 2)依次后移正确位置及后面的元素. 区别是查找插入位置的方法不同. 折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置. 注意,折 ...
- struts2从认识到细化了解
目录 Struts2的介绍与执行流程 介绍: 执行流程: 运行环境搭建 基础示例 Action类的编写 介绍: 访问servlet API 补充: 配置文件 常见配置文件: 常量的配置: struts ...
- java后台打开浏览器代码
import java.awt.Desktop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxE ...
- POST 400 的一次遭遇
使用Springboot开发接口的过程中,使用POST接收提交的数据. @PostMapping("/input") public void inputData(@RequestB ...