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

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

传送门

分析

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.jsqmd.com/news/39693/

相关文章:

  • 2025 年 11 月螺丝打包机,五金打包机,称重打包机厂家最新推荐,权威测评排名与工业采购选择指南!
  • 2025 年 11 月螺丝打包机,五金打包机,称重打包机厂家最新推荐,权威测评排名与工业采购选择指南!
  • 深入解析:list的迭代器
  • 2025年11月五金打包机,称重打包机,半自动打包机厂家品牌推荐榜,彰显包装设备技术实力!
  • 题解:P1393 Mivik 的标题
  • appium包含文本定位的5种方法
  • 11.13 程序员的修炼之道:从小工到专家 第五章 弯曲或折断 - GENGAR
  • 20251112周三日记
  • 力扣 第 475 场周赛(A~C)
  • 学习笔记:AC 自动机
  • 详细介绍:Web爬虫指南
  • 搜维尔科技:具身人工智能中的 MANUS:从人类运动到机器人灵巧性
  • 重组蛋白技术基础概述
  • 升鲜宝分拣系统 具体实现(一)
  • 2025-11-13
  • 字典树小记
  • 搜维尔科技:Xsens Link为精准而生,为创意而设计,为动作捕捉性能树立了新的标准
  • 一个好题2
  • 实用指南:百分点科技发布中国首个AI原生GEO产品Generforce,助力品牌决胜AI搜索新时代
  • 考前复习
  • 2025 年 11 月粮库空调厂家最新推荐,聚焦资质、案例、售后的实力品牌深度解析!
  • 题解:P3813 [FJOI2017] 矩阵填数
  • 第三章博文
  • Spring BeanPostProcessor接口
  • 25.11.13随笔联考总结
  • 完整教程:Verilog和FPGA的自学笔记6——计数器(D触发器同步+异步方案)
  • LucaOne架构
  • 实用指南:Windows安装MongoDB保姆级教程(图文详解)
  • linux USB --- 监听 USB 角色
  • 温州工友自动包装设备有限公司:专注螺丝五金智能包装,助力企业降本增效