蓝桥(4)

前缀和 & 差分

一维:

 s[i] = a[1] + a[2] + ... a[i]
 
 s[i] = a[i] + s[i-1]
 
 a[l] + ... + a[r] = s[r] - s[l - 1]
 
 a[i] = s[i] - s[i-1]

此时若将区间s[l…r]中都加上一个数c,对数组a的影响:

 a[l] = s[l] - s[l-1]    ===>  a[l] += c
 a[r+1] = s[r+1] - s[r]  ===>  a[r+1] -= c

二维:

s[i, j] = 第 i 行 j 列格子左上部分所有元素的和

以(x1, y1)为左上角,(x2, y2)为右下角的子矩阵的和为:

  s[x2, y2] - s[x1 - 1, y2] - s[x2, y1 - 1] + s[x1 - 1, y1 - 1]
s[i][j] = b[i][j] + s[i-1][j] + s[i][j-1] - s[i-1][j-1]

b[i][j] = s[i][j] - s[i-1][j] - s[i][j-1] + s[i-1][j-1]

若将位于(x1, y1)(x2, y2)之间的原序列都加上c:

b[x1][y1] += c;
b[x1][y2+1] -= c;
b[x2+1][y1] -= c;
b[x2+1][y2+1] += c;

三维:

三维前缀和公式:

S(x,y,z) = b(x,y,z) + S(x-1,y,z) + S(x,y-1,z) - S(x-1,y-1,z) + S(x,y,z-1) - S(x-1,y,z-1) - S(x,y-1,z-1) + S(x-1,y-1,z-1)
s[i][j][k] = b[i][j][k] + s[i-1][j][k] + s[i][j-1][k] - s[i-1][j-1][k]
            + s[i][j][k-1] - s[i-1][j][k-1] - s[i][j-1][k-1] + s[i-1][j-1][k-1];
b[i][j][k] = s[i][j][k] - s[i-1][j][k] - s[i][j-1][k] + s[i-1][j-1][k]
            - s[i][j][k-1] + s[i-1][j][k-1] + s[i][j-1][k-1] - s[i-1][j-1][k-1]

将位于(x1, y1, z1)(x2, y2, z2)之间的原序列都加上c

b[x1    ][y1    ][z1    ]   += c;  // 000
b[x1    ][y1    ][z2 + 1]   -= c;  // 001
b[x1    ][y2 + 1][z1    ]   -= c;  // 010
b[x1    ][y2 + 1][z2 + 1]   += c;  // 011
b[x2 + 1][y1    ][z1    ]   -= c;  // 100
b[x2 + 1][y1    ][z2 + 1]   += c;  // 101
b[x2 + 1][y2 + 1][z1    ]   += c;  // 110
b[x2 + 1][y2 + 1][z2 + 1]   -= c;  // 111

作者:ToLoveToFeel
链接:https://www.acwing.com/solution/content/71584/
来源:AcWing

规律: 偶+奇-

ps. 三维坐标(x,y,z)映射到一维的下标是(x⋅B+y)×C+z

三体攻击

题目描述:

三体人将对地球发起攻击。
为了抵御攻击,地球人派出了 A×B×C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体。
其中,第 i 层第 j 行第 k 列的战舰(记为战舰 (i,j,k))的生命值为 d(i,j,k)。

三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。
具体地,第 t 轮攻击用 7 个参数 lat,rat,lbt,rbt,lct,rct,ht 描述;
所有满足 i∈[lat,rat],j∈[lbt,rbt],k∈[lct,rct] 的战舰 (i,j,k) 会受到 ht 的伤害。

如果一个战舰累计受到的总伤害超过其防御力,那么这个战舰会爆炸。
地球指挥官希望你能告诉他,第一艘爆炸的战舰是在哪一轮攻击后爆炸的。

输入格式

第一行包括 4 个正整数 A,B,C,m;
第二行包含 A×B×C 个整数,其中第 ((i−1)×B+(j−1))×C+(k−1)+1 个数为 d(i, j, k);
第 3 到第 m+2 行中,第 (t − 2) 行包含 7 个正整数 lat, rat, lbt, rbt, lct, rct, ht。

输出格式

输出第一个爆炸的战舰是在哪一轮攻击后爆炸的。
保证一定存在这样的战舰。

数据范围

1≤A×B×C≤106,
1≤m≤106,
0≤d(i, j, k), ht≤109,
1≤lat≤rat≤A,
1≤lbt≤rbt≤B,
1≤lct≤rct≤C
层、行、列的编号都从 1 开始。

输入样例:

2 2 2 3
1 1 1 1 1 1 1 1
1 2 1 2 1 1 1
1 1 1 2 1 2 1
1 1 1 1 1 1 2

输出样例:
2

样例解释:在第 2 轮攻击后,战舰 (1,1,1) 总共受到了 2 点伤害,超出其防御力导致爆炸

https://www.acwing.com/problem/content/description/1234/

### 关于蓝桥单片机开发的相关信息 对于希望参与蓝桥杯单片机竞赛的学习者来说,可以直接从官方开发板入手学习,无需预先掌握STC89C52相关内容。这是因为蓝桥杯官方开发板所涉及的内容已经覆盖了大多数基础知识点,并且其芯片性能相较于传统51单片机有所提升,在运行速度方面更快[^1]。 #### 官方开发板的特点 蓝桥杯官方开发板不仅包含了常见的51单片机功能模块,还扩展了许多实用的功能模块。通过学习这些模块的操作方法及其背后的原理,可以达到对51单片机初步认识的目的。因此,无论是初学者还是有一定经验的学生都能从中受益。 另外,《STM32单片机开发应用教程 (HAL库版) —— 基于国信长天嵌入式竞赛实训平台(CT117E-M4)`提供了针对更高级别的微控制器——即STM32系列的教学材料[^2]。如果计划进一步深入研究或者准备更高层次的比赛项目,则可以从该书籍及相关资源着手探索更为复杂的编程技巧以及实际应用场景下的解决方案设计思路[^3]。 以下是部分推荐参考资料链接地址供参考: - **硬件资源介绍**: 查看具体设备构成详情可访问此页面获取更多信息关于国信长天嵌入式竞赛实训平台(CT117E-M4)。 [点击这里](https://example.com/hardware_resource) - **软件工具安装指南**: 如果打算尝试使用STM32CubeMX 和 KEIL5 进行程序编写的话,请按照下面给出的指导完成相应环境搭建工作。 下载地址: [百度网盘分享链接](https://pan.baidu.com/s/1Ud3DC0yy4NtLrOuilAzASQ),提取码:`9xxj` ```python # 示例代码展示如何初始化GPIO端口配置过程中的基本框架结构 import pyb def init_gpio(): pin = pyb.Pin('PB6', pyb.Pin.OUT_PP) return pin if __name__ == "__main__": led_pin = init_gpio() while True: led_pin.high() # 设置高电平点亮LED灯 pyb.delay(1000) # 延迟一秒 led_pin.low() # 设置低电平熄灭LED灯 pyb.delay(1000) # 再次延迟一秒形成闪烁效果 ``` 上述脚本片段展示了利用Python控制一个简单的输出信号来驱动外部电路元件的例子。虽然这并非直接适用于所有类型的MCUs,但它可以帮助理解通用输入/输出接口的基本操作逻辑。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值