【蓝桥杯每日一题】3.17

Alt

🏝️专栏: 【蓝桥杯备篇】
🌅主页: f狐o狸x

他们说内存泄漏是bug,我说这是系统在逼我进化成SSR级程序员


        OK来吧,不多废话,今天来点有难度的:二进制枚举

        二进制枚举,就是如果题目中描述的情况只有两种,就可以有 0 和 1 来表示,例如我们之前做过的扫雷游戏,每一个格子里面只有两种情况,就是有雷和无雷,就可以有 0 和 1 来表示。这样就可以使我们的枚举大大提高效率

3.12 二进制枚举

一、子集

        题目链接:

        78.子集

        题目描述:

        解题思路:

        例如示例一的 [ 1, 2, 3 ],他的子集就是[ 1 ], [ 2 ], [ 3 ], [ 1, 2 ], [ 1, 3 ], [ 2, 3 ], [ 1, 2, 3 ],其实集合里面的每个元素都有两种情况,出现和不出现,此时我们就可以用二进制来表示,如图:

        解题代码:

class Solution {
public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ret;int n = nums.size();for(int st = 0; st < (1 << n); st++){vector<int> tmp;for(int i = 0; i < n; i++){if((st >> i) & 1) tmp.push_back(nums[i]); }ret.push_back(tmp);}return ret;}
};

二、费解的开关

        这题非常考验我们的位运算的能力,如果看不懂的话可以私信煮波,煮波给你细细讲解(主要是这里懒了)

        题目链接:

        P10449 费解的开关

        题目描述:

        解题思路:

        对于每盏灯而言,只有亮与灭两种情况,因此可以用二进制存储关系,而且每排其实都是五个数字,因此我们可以将他每一排存的二进制变为一个十进制的数字来存储,在通过位运算来改变每一盏灯的亮灭情况,即可破解此题

        解题代码:


#include <iostream>
#include <cstring>
using namespace std;const int N = 10;int a[N], t[N];int calc(int push)
{int cnt = 0;while (push){cnt++;push &= (push - 1);}return cnt;
}int main()
{int n; cin >> n;while (n--){// 清空上一组的数据memset(a, 0, sizeof a);// 输入数据,每一排用十进制数字存储二进制for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){char ch; cin >> ch;if (ch == '0') a[i] |= (1 << j);}}int ret = 0x3f3f3f3f;// 枚举第一排的情况for (int st = 0; st < (1 << 5); st++){memcpy(t, a, sizeof a);int push = st;int cnt = 0; // 记录按了几次for (int i = 0; i < 5; i++){cnt += calc(push);t[i] = t[i] ^ push ^ (push << 1) ^ (push >> 1);t[i] &= (1 << 5) - 1; // 清除影响t[i + 1] ^= push; // 修改下一行的状态push = t[i];}if (t[4] == 0) ret = min(ret, cnt);}if (ret > 6) cout << "-1" << endl;else cout << ret << endl;}return 0;
}

三、Even Parity

        这题和上面那题“费解的开关”类似,就不多废话了

        题目链接:

       UVA11464 Even Parity - 洛谷

        题目描述:

        解题思路:

        一样的都是利用二进制来存储数据,再巧妙地运用位运算解决题目

        解题代码:

#include <iostream>
#include <cstring>
using namespace std;
const int N = 20;
int n;
int a[N]; // ⽤⼆进制存储状态
int t[N]; // 备份// 判断 x->y 是否合法
// 返回 -1,表⽰不合法
// 其余的数,表⽰合法,并且表⽰ 0->1 的次数
int calc(int x, int y)
{int sum = 0; for (int i = 0; i < n; i++){if (((x >> i) & 1) == 0 && ((y >> i) & 1) == 1) sum++;if (((x >> i) & 1) == 1 && ((y >> i) & 1) == 0) return -1;}return sum;
}
int solve()
{int ret = 0x3f3f3f3f; // 记录最⼩的改变次数// 枚举第⼀⾏的最终状态for (int st = 0; st < (1 << n); st++){memcpy(t, a, sizeof a);int change = st;int cnt = 0; // 统计 0->1 的次数bool flag = 1;for (int i = 1; i <= n; i++){// 先判断 change 是否合法int c = calc(t[i], change);if (c == -1){flag = 0;break;}cnt += c; // 累加次数// 当前⾏的最终状态t[i] = change;// 计算下⼀⾏的最终状态change = t[i - 1] ^ (t[i] << 1) ^ (t[i] >> 1);change &= (1 << n) - 1;}if (flag) ret = min(ret, cnt);}if (ret == 0x3f3f3f3f) return -1;else return ret;
}int main()
{int T; cin >> T;for (int k = 1; k <= T; k++){// 多组测试数据,记得清空memset(a, 0, sizeof a);cin >> n;for (int i = 1; i <= n; i++) // 避免越界访问{for (int j = 0; j < n; j++){int x; cin >> x;if (x) a[i] |= 1 << j;}}printf("Case %d: %d\n", k, solve());}return 0;
}

        最后这两个题有些难,各位稍安勿躁,刷小怪的时候偶尔遇到点BOSS也正常,明天我们来点有意思的算法,前缀和和差分

        "赛场上键盘冒火星?这是系统在为我颁发'钢铁直男'勋章!"

“啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,烂命一条就是干啊,冲冲冲”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36003.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab 汽车振动多自由度非线性悬挂系统和参数研究

1、内容简介 略 Matlab 169-汽车振动多自由度非线性悬挂系统和参数研究 可以交流、咨询、答疑 2、内容说明 略 第二章 汽车模型建立 2.1 汽车悬架系统概述 2.1.1 悬架系统的结构和功能 2.1.2 悬架分类 2.2 四分之一车辆模型 对于车辆动力学&#xff0c;一般都是研究其悬…

hackmyvm-Smol

信息收集 ┌──(root㉿kali)-[/home/kali] └─# arp-scan -I eth1 192.168.56.0/24 Interface: eth1, type: EN10MB, MAC: 00:0c:29:34:da:f5, IPv4: 192.168.56.103 WARNING: Cannot open MAC/Vendor file ieee-oui.txt: Permission denied WARNING: Cannot open MAC/Vendo…

深度学习项目--基于DenseNet网络的“乳腺癌图像识别”,准确率90%+,pytorch复现

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 前言 如果说最经典的神经网络&#xff0c;ResNet肯定是一个&#xff0c;从ResNet发布后&#xff0c;很多人做了修改&#xff0c;denseNet网络无疑是最成功的…

基于x11vnc的ubuntu远程桌面

1、安装VNC服务 sudo apt install x11vnc -y2、创建连接密码 sudo x11vnc -storepasswd3、安装lightdm服务 x11vnc 在 默认的 GDM3 中不起作用&#xff0c;因此需要使用 lightdm 桌面管理环境 sudo apt install lightdm -y切换至lightdm&#xff0c;上一步已经切换则跳过该…

Git 常用命令完全指南:从入门到高效协作

文章需要结构清晰&#xff0c;涵盖从入门到进阶的常用命令&#xff0c;结合实例和注意事项&#xff0c;帮助用户快速掌握Git的核心功能&#xff0c;并应用到实际项目中 一、仓库初始化与基础操作 1. 创建与克隆仓库 # 初始化本地仓库 git init# 克隆远程仓库&#xff08;SSH方…

【运维自动化-标准运维】如何实现一个最简单的流程编排

流程编排是标准运维最核心的功能&#xff0c;通过将不同功能的原子插件在画布上可视化的拖拽编排&#xff0c;可以实现各种不同场景的跨系统工作流。标准运维流程 根据实际运维操作场景梳理出来的操作步骤&#xff0c;通过不同的流转逻辑&#xff08;并行、分支、条件并行&…

【DeepSeek】HTML Api调用(支持V3和 R1,多轮对话、流式输出、对话保存、markdown格式支持)

文章目录 一、项目结构二、功能支持三、使用方法四、待改进五、参数优化 ☘️ 项目地址&#xff1a;https://github.com/CQUPTLei/DeepSeek_HTML/tree/master 对话截图&#xff1a; 一、项目结构 C:\USERS\14134\DESKTOP\DEEPSEEK │ .gitignore │ DeepSeek.html # 所…

烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;烽火HG680-KA&#xff0…

蓝桥杯备赛(基础语法4)

冒泡排序 冒泡排序的思想 冒泡排序的思想是每次将最大的一下一下运到最右边&#xff0c;然后将最右边这个确定下来。再来确定第二大的&#xff0c;再确定第三大的... 对于数组 a [ ] ,具体的来说&#xff0c;每次确定操作就是从左往右扫描&#xff0c;如果 a [ i ] > a [ …

【算法】力扣 713题:乘积小于 K 的子数组之深入思考

文章目录 前言题目&#xff1a;乘积小于 K 的子数组参考思路方法一&#xff1a;滑动窗口方法二&#xff1a;二分查找 参考题解方法一&#xff1a;滑动窗口解法方法二&#xff1a;二分查找解法 深入思考浮点精度&#xff1f;right - left 1&#xff1f;二分法&#xff1f;哈希优…

超声重建,3D重建 超声三维重建,三维可视化平台 UR 3D Reconstruction

1. 超声波3D重建技术的实现方法与算法 技术概述 3D超声重建是一种基于2D超声图像生成3D体积数据的技术&#xff0c;广泛应用于医学影像领域。通过重建和可视化三维结构&#xff0c;3D超声能够显著提高诊断精度和效率&#xff0c;同时减少医生的脑力负担。本技术文档将详细阐述…

Docker 部署 Graylog 日志管理系统

Docker 部署 Graylog 日志管理系统 前言一、准备工作二、Docker Compose 配置三、启动 Graylog 服务四、访问 Graylog Web 界面总结 前言 Graylog 是一个开源的日志管理平台&#xff0c;专为实时日志收集、分析和可视化设计。它支持强大的搜索功能&#xff0c;并且与 Elastics…

【图论】并查集的学习和使用

目录 并查集是什么&#xff1f; 举个例子 组成 父亲数组&#xff1a; find函数&#xff1a; union函数&#xff1a; 代码实现&#xff1a; fa[] 初始化code: find code&#xff1a; 递归实现: 非递归实现: union code : 画图模拟&#xff1a; 路径压缩&#xff1a…

FPGA-流水灯

Quartus中使用Verilog实现 根据之前所学内容&#xff0c;打开Quartus 软件&#xff0c;新建FPGA项目文件&#xff0c;建立好空项目过后&#xff0c;选择Verilog HDL File&#xff0c;因为我们要使用Verilog代码实现仿真。 详细操作可参考往期博客&#xff1a; FPGA 实验报告&a…

React19源码系列之createRoot的执行流程是怎么的?

2024年12月5日&#xff0c;react发布了react19版本。后面一段时间都将学习它的源码&#xff0c;并着手记录。 react官网&#xff1a;react19新特性 https://react.dev/blog/2024/12/05/react-19 在用vite创建react项目的使用&#xff0c;main.tsx主文件都会有以下代码。 //i…

全网首创/纯Qt/C++实现国标GB28181服务/实时视频/云台控制/预置位/录像回放和下载/事件订阅/语音对讲

一、前言说明 用纯Qt来实现这个GB28181的想法很久了&#xff0c;具体可以追溯到2014年&#xff0c;一晃十年都过去了&#xff0c;总算是整体的框架和逻辑都打通了&#xff0c;总归还是杂七杂八的事情多&#xff0c;无法静下心来研究具体的协议&#xff0c;最开始初步了解协议后…

Qt 实操记录:打造自己的“ QQ 音乐播放器”

目录 一.界面设计1.成品界面分析2.head界面实现3.body界面实现4.主界面设置(1).设置无标题栏与阴影效果(2).重写鼠标事件实现拖拽 二.自定义控件1.BtFrom界面设计2.推荐页面设计3.recBox页面设计4.recBoxItem页面设计(1).eventFilter介绍和使用(2).QJsonObject介绍和使用(3).向…

如何打造安全稳定的亚马逊采购测评自养号下单系统?

在当今的电商领域&#xff0c;亚马逊作为全球领先的在线购物平台&#xff0c;其商品种类繁多&#xff0c;用户基数庞大&#xff0c;成为了众多商家和消费者的首选。而对于一些需要进行商品测评或市场调研的用户来说&#xff0c;拥有一个稳定、安全的亚马逊账号体系显得尤为重要…

Python文字识别OCR

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

如何在 Github 上获得 1000 star?

作为程序员&#xff0c;Github 是第一个绕不开的网站。我们每天都在上面享受着开源带来的便利&#xff0c;我相信很多同学也想自己做一个开源项目&#xff0c;从而获得大家的关注。然而&#xff0c;理想很丰满&#xff0c;现实却是开发了很久的项目仍然无人问津。 最近&#x…