洛谷 P10456 The Pilots Brothers‘ refrigerator
[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription]
给定一个 4 × 4 4 \times 4 4×4 的网格,每个网格有 0 , 1 0,1 0,1 两种状态。求最少可以通过多少次操作使得整个网格全部变成 1 1 1。
每次操作你需要选定一个格点 ( i , j ) (i,j) (i,j),然后把第 i i i 行和第 j j j 列的所有元素都取反(即 0 0 0 变 1 1 1, 1 1 1 变成 0 0 0)。
[Analysis] \color{blue}{\texttt{[Analysis]}} [Analysis]
首先我们可以发现,对同一个格点进行两次操作是没有意义的,因为那等于没操作。
所以每个格点至多被操作一次。
一共才 16 16 16 个格点,把所有格点从 1 1 1 到 16 16 16 标号,我们完全可以用一个 16 16 16 位的二进制数表示是否对每个格点进行操作。
具体地,我们用二进制数 status \text{status} status 表示每个格点的操作与否。如果 status \text{status} status 的第 i i i 位为 1 1 1,那么代表我们对编号为 i i i 的格点进行操作;否则不进行。
status \text{status} status 可能的取值一共只有 2 16 2^{16} 216 种,枚举 status \text{status} status 即可。
得到 status \text{status} status 后,剩下的事情就完全类似于模拟了。
所以,总的思想类似于生成-测试法。
总的时间复杂度 O ( N 2 × 2 N ) O(N^{2} \times 2^{N}) O(N2×2N),其中 N N N 为格点数量。
Code \color{blue}{\text{Code}} Code
bool a[6][6];
int ans;int count_one(int x){int ret=0;for(int i=1;i<=16;i++)if (x&(1<<(i-1))) ret++;return ret;
}void implement(int x){int row=(x-1)/4+1,col=(x%4?x%4:4);for(int j=1;j<=4;j++) a[row][j]^=1;for(int i=1;i<=4;i++) a[i][col]^=1;a[row][col]^=1;
}bool check(){for(int i=1;i<=4;i++)for(int j=1;j<=4;j++)if (!a[i][j]) return false;return true;
}int main(){for(int i=1;i<=4;i++)for(int j=1;j<=4;j++){char c;cin>>c;if (c=='+') a[i][j]=false;else a[i][j]=true;}ans=(1<<16)-1;for(int i=0;i<(1<<16);i++){for(int j=1;j<=16;j++)if (i&(1<<(j-1))) implement(j); if (check()){if (count_one(i)<count_one(ans)) ans=i;}for(int j=1;j<=16;j++)if (i&(1<<(j-1))) implement(j);//复原 }printf("%d",count_one(ans));for(int i=1;i<=16;i++)if (ans&(1<<(i-1))){int row=(i-1)/4+1,col=(i%4?i%4:4);printf("\n%d %d",row,col);}return 0;
}
相关文章:
洛谷 P10456 The Pilots Brothers‘ refrigerator
[Problem Discription] \color{blue}{\texttt{[Problem Discription]}} [Problem Discription] 给定一个 4 4 4 \times 4 44 的网格,每个网格有 0 , 1 0,1 0,1 两种状态。求最少可以通过多少次操作使得整个网格全部变成 1 1 1。 每次操作你需要选定一个格点 …...
windows+vscode+arm-gcc+openocd+daplink开发arm单片机程序
windowsvscodearm-gccopenocddaplink开发arm单片机程序,脱离keil。目前发现的最佳解决方案是,使用vscodeembedded ide插件。 Embedded IDE官方教程文档...
Mysql梳理10——使用SQL99实现7中JOIN操作
10 使用SQL99实现7中JOIN操作 10.1 使用SQL99实现7中JOIN操作 本案例的数据库文件分享: 通过百度网盘分享的文件:atguigudb.sql 链接:https://pan.baidu.com/s/1iEAJIl0ne3Y07kHd8diMag?pwd2233 提取码:2233 # 正中图 SEL…...
24.9.27学习笔记
Xavier初始化,也称为Glorot初始化,是一种在训练深度神经网络时用于初始化网络权重的策略。它的核心思想是在网络的每一层保持前向传播和反向传播时的激活值和梯度的方差尽可能一致,以避免梯度消失或梯度爆炸的问题。这种方法特别适用于激活函…...
C++第3课——保留小数点、比较运算符、逻辑运算符、布尔类型以及if-else分支语句(含视频讲解)
文章目录 1、课程笔记2、课程视频 1、课程笔记 #include<iostream>//头文件 input output #include<cmath> //sqrt()所需的头文件 #include<iomanip>//setprecision(1)保留小数点位数所需的头文件 using namespace std; int main(){/*复习上节课内容1、…...
韩媒专访CertiK首席商务官:持续关注韩国市场,致力于解决Web3安全及合规问题
作为Web3.0头部安全公司,CertiK在KBW期间联合CertiK Ventures举办的活动引起了业界的广泛关注。CertiK一直以来与韩国地方政府保持着紧密合作关系,在合规领域提供强有力的支持。而近期重磅升级的CertiK Ventures可以更好地支持韩国本地的区块链项目。上述…...
计算机毕业设计之:宠物服务APP的设计与实现(源码+文档+讲解)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
小柴冲刺软考中级嵌入式系统设计师系列二、嵌入式系统硬件基础知识(3)嵌入式系统的存储体系
目录 感悟 一、存储系统的层次结构 存储器系统 二、内存管理单元 三、RAM和ROM的种类与选型 1、RAM RAM分类 2、ROM ROM分类 四、高速缓存Cache 五、其他存储设备 flechazohttps://www.zhihu.com/people/jiu_sheng 小柴冲刺软考中级嵌入式系统设计师系列总目录https…...
Unity android 接USBCamera
目录 一、前提 1. unity打包android后,链接USB摄像头,需要USB权限。 二、流程 1.Unity导出android工程,Player配置如图: 2.导出android工程 3.在android工程中找到AndroidManifest.xml加入usb权限相关 <?xml version&quo…...
演示:基于WPF的DrawingVisual开发的频谱图和律动图
一、目的:基于WPF的DrawingVisual开发的频谱图和律动图 二、效果演示 波形图 极坐标 律动图极坐标图 律动图柱状图 Dock布局组合效果 三、环境 VS2022,Net7,Win10,NVIDIA RTX A2000 四、主要功能 支持设置起始频率,终止频率,中心…...
【数据结构初阶】排序算法(中)快速排序专题
文章目录 1. 快排主框架2. 快排的不同实现2. 1 hoare版本2. 2 挖坑法2. 3 lomuto前后指针法2. 4 快排的非递归版本 3. 快排优化3. 1 快排性能的关键点分析:3. 1 三路划分3. 2 introsort自省排序 1. 快排主框架 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。 其…...
Redis缓存双写一致性笔记(上)
Redis缓存双写一致性是指在将数据同时写入缓存(如Redis)和数据库(如MySQL)时,确保两者中的数据保持一致性。在分布式系统中,缓存通常用于提高数据读取的速度和减轻数据库的压力。然而,当数据更新…...
PCB基础
一、简介 PCB:printed circuit board,印刷电路板 主要作用:传输信号、物理支撑、提供电源、散热 二、分类 2.1 按基材分类 陶瓷基板:包括氧化铝、氮化铝、碳化硅基板等,具有优异的导热性,适用于高温和高…...
PostgreSQL 17:新特性与性能优化深度解析
目录 引言核心新特性 块级别增量备份与恢复逻辑复制槽同步参数SQL/JSON的JSON_TABLE命令PL/pgSQL支持数组%TYPE和%ROWTYPE 性能优化 IO合并读取性能参数真空处理过程的内存管理改进写前日志(WAL)锁的改进 升级建议结语 引言 PostgreSQL 17版本于2024年…...
[Linux#58][HTTP] 自己构建服务器 | 实现网页分离 | 设计思路
目录 一. 最简单的HTTP服务器 二.服务器 2.0 Protocol.hpp httpServer.hpp 子进程的创建和退出 子进程退出的意义 父进程关闭连接套接字 httpServer.cc argc (argument count) argv (argument vector) 三.服务器和网页分离 思考与补充: 一. 最简单的HTT…...
7.MySQL内置函数
目录 日期函数时间函数字符串函数数学函数其他函数 日期函数 函数名称描述current_date()当前日期current_time()当前时间current_timesamp()当前时间戳date(datetime)返回datetime参数的日期部分date_add(date, interval d_value_tyep)在date中添加日期函数或时间。interval后…...
如何快速自定义一个Spring Boot Starter!!
目录 引言: 一. 我们先创建一个starter模块 二. 创建一个自动配置类 三. 测试启动 引言: 在我们项目中,可能经常用到别人的第三方依赖,又是引入依赖,又要自定义配置,非常繁琐,当我们另一个项…...
【音视频】ffmpeg其他常用过滤器filter实现(6-4)
最近一直在研究ffmpeg的过滤器使用,发现挺有意思的,这里列举几个个人感觉比较有用的过滤器filter,如下是代码实现,同样适用于命令行操作: 1、视频模糊:通过boxblur可以将画面进行模糊处理,第1个…...
云栖3天,云原生+ AI 多场联动,新产品、新体验、新探索
云栖3天,云原生 AI 20场主题分享,三展互动,为开发者带来全新视听盛宴 2024.9.19-9.21 云栖大会 即将上演“云原生AI”的全球盛会 展现最新的云计算技术发展与 AI技术融合之下的 “新探索” 一起来云栖小镇 见证3天的云原生AI 前沿探索…...
jackson对于对象序列化的时候默认空值和手动传入的null的不同处理
Jackson 在序列化对象时如何处理默认的空值和手动传入的 null,其实归结于它的序列化机制和注解配置。默认情况下,Jackson 不区分 手动设置的 null 和 对象中字段的默认空值,但可以通过配置来改变其行为。具体细节如下: 1. 默认行为…...
内容创作团队如何借助Taotoken聚合API管理多个模型的调用成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 内容创作团队如何借助Taotoken聚合API管理多个模型的调用成本 对于内容创作团队而言,大模型已成为提升写作效率、优化内…...
科技早报晚报|2026年5月15日:本地大表分析、零 ETL 远程搜索与去中心化监控,今晚更值得跟进的 3 个技术机会
科技早报晚报|2026年5月15日:本地大表分析、零 ETL 远程搜索与去中心化监控,今晚更值得跟进的 3 个技术机会 一句话导读:上午那篇我已经写了空间感知、设备实验室和视频代理,今晚这轮我刻意换到另一条更贴近真实工程预…...
nRF52840开发板移植CircuitPython实战:从编译到蓝牙应用
1. 项目概述与核心价值 如果你手头有一块基于 Nordic nRF52840 芯片的开发板,比如官方的 nRF52840-DK 或者 Particle 的 Argon/Xenon,并且厌倦了在 C 语言和复杂的 SDK 中挣扎,想用 Python 的简洁语法快速实现一个蓝牙传感器节点或者物联网设…...
别再乱用`define了!SV宏定义实战避坑指南(从`ifdef到字符串拼接)
别再乱用define了!SV宏定义实战避坑指南(从ifdef到字符串拼接) 在SystemVerilog开发中,宏定义(define)是提高代码复用性和灵活性的利器,但同时也是隐藏最深的"代码地雷"之一。许多开发…...
FCOS训练自己的数据?从Labelme标注到VOC格式转换,这份避坑指南请收好
FCOS训练自定义数据集:从Labelme标注到VOC格式的完整避坑指南 当你已经用Labelme完成了图像标注,却卡在数据格式转换这一步时,这篇文章将成为你的救星。FCOS作为一款优秀的全卷积目标检测模型,对输入数据格式有着严格的要求&#…...
taotoken的用量看板如何帮助我们优化ai提示词设计
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 taotoken的用量看板如何帮助我们优化AI提示词设计 效果展示类,结合一个内容生成项目的实际经验,说明如何通…...
DeepSeek Saga模式性能压测实录(TPS从1.2K飙升至8.6K):异步事件总线+快照版本向量的组合拳揭秘
更多请点击: https://intelliparadigm.com 第一章:DeepSeek Saga模式性能压测实录(TPS从1.2K飙升至8.6K):异步事件总线快照版本向量的组合拳揭秘 在真实生产级负载下,DeepSeek R1模型启用Saga模式后&#…...
河南AI设计课程指南:机构推荐与避坑秘籍
一、AI 设计热潮下的河南求学路在数字化时代的浪潮中,AI 设计正以前所未有的速度席卷各个行业,成为了创新与效率的新代名词。从广告设计、影视制作到电商运营、交互设计,AI 设计不仅能够大幅提升设计效率,还能通过数据分析和算法模…...
如何快速掌握音频频谱分析:Spek开源工具完整指南
如何快速掌握音频频谱分析:Spek开源工具完整指南 【免费下载链接】spek Acoustic spectrum analyser 项目地址: https://gitcode.com/gh_mirrors/sp/spek 想要深入了解音频文件的内部结构吗?Spek音频频谱分析器是你的理想选择!这款免费…...
英雄联盟智能助手:从青铜到王者的全方位游戏体验升级指南
英雄联盟智能助手:从青铜到王者的全方位游戏体验升级指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 想要在英雄联盟中获得竞争…...
