#题解#牛客: 小心火烛的歪#枚举组合#位运算#dfs#

news/2025/11/13 21:33:47/文章来源:https://www.cnblogs.com/Ahui2667d/p/19219625

传送门

分析

1.这是一个枚举组合求最优的问题:集合大小q为7,可以用位运算来进行组合枚举

2.若点火方案f[i][j]==g[i][j]=1则,该方案一定不能用

3.令 g[i][j]+=f[i][j],若该方案可用且在枚举子集内,最终g中没有0则该子集符合条件

代码实现

#include<bits/stdc++.h>
using namespace std;
int n, m, q;
int  g[10][10], f[10][10][10], book[10];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int kk = 0;cin >> n >> m >> q;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++){char c;cin >> c;g[i][j] = c - '0';kk += g[i][j];}int no = 0;for (int k = 0; k < q; k++)for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++){char c;cin >> c;f[k][i][j] = c - '0';if (f[k][i][j] == g[i][j] and g[i][j] == 1){if (!book[k])no++;book[k] = 1;}}if (kk == n * m)//g本身已经符合无0条件{cout << 0;return 0;}if (no == q)//所有方案都不能用{cout << -1;return 0;}bool check = 0;//记录是否有解int ans = q;//记录最小方案数int N = (1 << q);int method = N - 1;//记录方案集for (int x = 0; x < N; x++)//枚举方案集{int tmp[10][10];memcpy(tmp, g, sizeof(tmp));for (int k = 0; k < q; k++)if (!book[k] and x >> k & 1 )//k可用且在方案集x中for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)tmp[i][j] += f[k][i][j];bool flag = 1;//记录x是否符合无0条件for (int i = 1; i <= n; i++){if (!flag) break;for (int j = 1; j <= m; j++)if (tmp[i][j] == 0){flag = 0;//有0则x不符合无0条件break;}}if (flag)//x是个解{check = 1;//有解int y = x;int cnt = 0;for (; y; y -= y & -y)//求x在二进制下有多少1,即这个集合的大小,即方案数cnt++;if (ans > cnt)//更新{ans = cnt;method = x;}}}if (check)//有解则输出{cout << ans << "\n";for (int k = 0; k < q; k++)if ( method >> k & 1 )cout << k + 1 << " ";}else//无解cout << -1;return 0;
}

Trick/错误总结

  1. 范围较小的枚举组合考虑位运算

  2. 看清输入格式 数与数之间有无空格 //md调了好久

  3. 不要在输入时break之类 //md我在干什么

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

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

相关文章

20251113周四日记

20251113周四日记今日: 1.早上回学校,开始看3b1b的深度学习课。写笔记。 2.中午和陈全去吃了萨莉亚,回来继续看课写笔记。 3.晚上和同门去吃饭,回来继续看Chapter7以及对diffusion模型的讲解。没事干了。 3Blue1Br…

2025.11.12 周作业 43(并非)速通

闲话 卡了好几道题了,怎么回事呢。 A. CF1796C 不难想到最优解应该是某个数 \(x\) 不断乘上 \(t\),即这个集合(大致)可以表示为: \[\{x, x \times t, x \times t^2, \dots, x \times t^k\} \]容易想到令 \(x=2\) …

2025 年 11 月螺丝打包机,五金打包机,称重打包机厂家最新推荐,权威测评排名与工业采购选择指南!

2在工业 4.0 浪潮下,螺丝、五金等零部件包装的效率与精度,直接影响企业生产流转速度与成本控制。传统包装模式面临人工依赖强、混料风险高、效率低下等痛点,而优质的打包设备成为制造业降本增效的关键抓手。温州工友…

深入解析:list的迭代器

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

通过元素定位其各种层级关系元素的工具

# element_relation_locator.py # 通过元素定位其各种层级关系元素的工具from appium.webdriver.common.appiumby import AppiumByclass ElementRelationLocator:"""元素关系定位器类,用于通过元素定位…

2025年11月五金打包机,称重打包机,半自动打包机厂家品牌推荐榜,彰显包装设备技术实力!

在当前制造业智能化转型的关键阶段,五金、紧固件等行业对包装设备的技术要求日益提升,高效、精准、稳定的打包设备成为企业提升生产效率、控制成本的核心支撑。在众多包装设备厂家中,温州工友自动包装设备有限公司凭…

题解:P1393 Mivik 的标题

更差的阅读体验这也太深刻了。 我们考虑一个 dp。我们假设 \(f_i\) 表示考虑前 \(i\) 个字符,\([i - |S| + 1: i]\) 这一段存在一个 \(S\) 的匹配,并且前 \(i\) 个字符不存在别的位置有 \(S\) 匹配的方案数。 那么我…

appium包含文本定位的5种方法

# appium定位,以text包含部分文字定位示例# 方法1: 使用XPath的contains函数进行text部分匹配 from appium.webdriver.common.appiumby import AppiumBydef locate_element_by_partial_text(driver, partial_text):&q…

C++ const总结

1、const 修饰普通变量 C/C++中常量用于记录程序中不可更改的数据,在数据类型前加const,就得到了一个不可更改的常量。常量声明:const用于定义常量const int MAX = 100;//MAX的值在程序运行期间无法被修改,所以必须…

11.13 程序员的修炼之道:从小工到专家 第五章 弯曲或折断 - GENGAR

这五节内容围绕软件设计的解耦、灵活性、协作效率展开,提出了多项关键原则与模型。解耦是贯穿始终的核心,得墨忒耳法则明确了对象方法调用的边界,仅允许调用自身、参数、创建对象及直接持有组件的方法,减少模块间依…

20251112周三日记

20251112周三日记今日: 1.早上九点多起床,下去登一下ow卡死进不去了。上课时接到家里消息。准备交简历、连梯子看3b1b教程。 2.下午看完了deepia老师的diffusion介绍,下载了本书,学了会儿,太他妈复杂了全是数学推…

力扣 第 475 场周赛(A~C)

力扣 第 475 场周赛(A~C)$(".postTitle2").removeClass("postTitle2").addClass("singleposttitle");A:3740. 三个相等元素之间的最小距离 I见B。 B:3741. 三个相等元素之间的最小距离…

学习笔记:AC 自动机

最智慧的,不是避免所有失败,而是在失配时借力转向,让每一次跌倒都成为新模式的起点。—— 题记其实我两周前就学了 AC 自动机,本来不应该现在才写这个笔记的。但是当时对 AC 自动机的理解比较模糊,直到刚才听了风…

详细介绍:Web爬虫指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

搜维尔科技:具身人工智能中的 MANUS:从人类运动到机器人灵巧性

灵巧的机器人手正成为具身人工智能的基石。动作捕捉、仿真、强化学习和自监督基础模型的最新进展,使得机器人能够执行越来越接近人类的操作技能。 复制人手的精确性、适应性和触觉控制能力(人手由27块骨头、数十块肌…

重组蛋白技术基础概述

重组蛋白的基本概念 重组蛋白是通过基因重组技术在宿主系统中表达的外源蛋白。该技术将目标基因导入表达载体,转化至宿主细胞,利用细胞自身的转录翻译机制合成目标蛋白。与传统组织提取相比,重组技术可获得更高纯度…

升鲜宝分拣系统 具体实现(一)

升鲜宝分拣系统 具体实现(一)按商品分拣1.商品汇总(分页)2.客户汇总(分页)3.分拣一条商品4.撤消一条已分拣商品5.缺货一条订单商品记录6.一条订单商品记录的操作记录7.获取分拣的商品分类8.获取分拣的线路列表9.分…

2025-11-13

1.Problem - 1881E - Codeforces(1500)(dp) dp好题 #include <bits/stdc++.h> using namespace std; #define LL long long const LL mod = 998244353; const int N=2e5+10; int a[N], inf = 1e9, dp[N];voi…

字典树小记

普通字典树 没什么好讲的 0-1 Trie 非常有用,经常用于异或相关的题目 求一个集合中两两异或的最大值 枚举集合中的一个数 \(x\),按位贪心,如果这一位有一个与 \(x\) 不同的,那么字典树上走这一边,否则走 \(x\) 的…

搜维尔科技:Xsens Link为精准而生,为创意而设计,为动作捕捉性能树立了新的标准

行业领先的动作捕捉服 新一代Xsens Link专为追求精准、可靠和行动自由的专业人士打造,这款全新的eSuit配备17个一键式传感器,内置线缆,安装时间缩短50%。Link经过重新设计,可提供最精准、最稳定的运动数据,树立了…