尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

#题解#牛客: 小心火烛的歪#枚举组合#位运算#dfs#
📅 发布时间:2026/6/19 3:13:35

传送门

分析

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我在干什么

相关新闻

  • 2025.11.12 周作业 43(并非)速通
  • 2025 年 11 月螺丝打包机,五金打包机,称重打包机厂家最新推荐,权威测评排名与工业采购选择指南!
  • C++ const总结

最新新闻

  • 深孔钻头选购,如何选择永昌工具这样的好品牌 - 工业品网
  • 2026年免费快速:PPT转PDF并压缩全攻略(小程序+公众号) - 时时资讯
  • LLM与RNN混合架构在代码理解中的应用与优化
  • 河北福亚斯保温建材口碑怎么样?深度评测与推荐 - mypinpai
  • 2026年好用的PTFE管道品牌,推荐哪家? - mypinpai
  • 邢台黄金回收门店实地探访全记录 - 余生黄金回收

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号