当前位置: 首页 > news >正文

刷题日记—数组—布尔数组的应用

前几天刷题碰到了种树,切方块类型的题目,这类题目用布尔类型判断每一个个体的状态,最后根据每个元素对应的布尔值来统计数目:如下:
1.移数问题:
image
解题步骤如下:```plaintext

include

using namespace std;
bool flag[10001];
int main(){
int l,m;
while(cin>>l>>m){
while(m--){
int x1,x2;
cin>>x1>>x2;
for(int i=x1;i<=x2;++i){
flag[i]=true;
}
}
int cnt=0;
for(int i=0;i<=l;++i){
if(!(flag[i])){
cnt++;
}
}
cout<<cnt<<endl;

}
return 0;

}

 ==这里有一个细节点:bool数组是定义在main函数外的,因为如果定义在main函数里面,会导致bool数组被随机赋值,而定义在main函数外则是全都赋初始值为0。==
2.切割方块问题
题目如图
![image](https://img2024.cnblogs.com/blog/3713817/202510/3713817-20251025223155222-2117006809.png)
解题:```plaintext
#include<iostream>
using namespace std;
bool flag[21][21][21];
int main() {int w, x, h;cin >> w >> x >> h;for (int i = 1; i <= w; ++i) {for (int j = 1; j <= x; ++j) {for (int k = 1; k <= h; ++k) {flag[i][j][k] = 1;}}}int q;cin >> q;while (q--) {int x1, x2, y1, y2, z1, z2;cin >> x1 >> y1 >> z1 >> x2 >> y2 >> z2;for (int i = x1; i <= x2; ++i) {for (int j = y1; j <= y2; ++j) {for (int k = z1; k <= z2; ++k) {flag[i][j][k] = 0;}}}}int cnt = 0;for (int i = 1; i <= w; ++i) {for (int j = 1; j <= x; ++j) {for (int k = 1; k <= h; ++k) {if (flag[i][j][k] == 1) {cnt++;}}}}cout << cnt;return 0;
}

写完上面两题,我们应该就能体会到bool数组的优越性了,它可以描述某一位置的状态,避免重叠区间情况的反复取值造成的运算错误,从而实现精准计数,避免同一位置的多次取值。

在解题过程中常见的错误:1.条件运算符“==”写成了赋值运算符“=”导致WA;
2.局部变量的定义位置错误,导致每次循环都重置初始值或者无法使用定义值。

http://www.hskmm.com/?act=detail&tid=39089

相关文章:

  • 详细介绍:k8s中的kubelet
  • 树状数组 区间加 区间和 小记
  • 实验二 现代C++编程初体验
  • 昨夜雨疏风骤
  • 明天的任务
  • Windows SMB权限提升漏洞遭活跃利用
  • 江西振兴杯决赛Misc全解
  • 完整教程:Webpack5 第四节
  • 2025.10.25总结
  • ABC429
  • 10.25 CSP-S模拟39/2025多校冲刺CSP模拟赛8 改题记录
  • ABC429(C,D,E)
  • 玩转单片机之智能车小露——数字与字符串的转换与打印
  • 数据采集作业1 102302111 海米沙
  • 嵌入子流形
  • Link-Cut Tree
  • 列表,集合,字典的增、删、查、改方法对比
  • MusicFree 音乐
  • 线段上随机取n个点的最大距离期望
  • RuoYi-Cloud-Plus 数据权限实现原理解析
  • 第5天(中等题 滑动窗口、逆向思维)
  • P10老板一句‘搞不定就P0’,15分钟我用Arthas捞回1000万资损 - 指南
  • 华为堡垒机
  • [HZOI] CSP-S模拟38 赛后总结
  • Meet in the middle 学习笔记
  • 集合常见操作示例
  • 深入解析:港大和字节携手打造WorldWeaver:以统一建模方案整合感知条件,为长视频生成领域带来质量与一致性双重飞跃。
  • 集合与列表有何不同的使用场景,如何选择?
  • 虚拟机下 安装 ubuntu 18.04
  • MinIO快速入门