【dfs】棋盘变幻

棋盘变幻

题目大意:

有一些棋子(黑/白),可以将某一列的棋子颜色反转,要黑棋尽可能小

原题:

题目描述

小G在一个n*m的棋盘上随意放上了一些黑色的棋子,然后又在剩下所有没有放棋子的格子里放上了白色的棋子。现在小G想知道他是否能通过以下两种变换将整个棋盘上的棋子全部变成白色。
  变幻1:选择一列,将这一列的棋子全部反色,即黑变白,白变黑。
  变幻2:选择一行,将这一行的棋子全部反色。
  如果能将整个棋盘上的棋子全部变成白色,则输出最少需要的变幻次数。否则输出经过若干次变幻后,棋盘上最少的黑子个数。

输入

第一行两个正整数n,m,含义见题面。
接下里n行,每行m个字符,‘0’表示白子,‘1’表示黑子。

输出

一行一个整数ans,含义见题面。

输入样例

3 4
0111
0111
1000

输出样例

3

说明

对于30%的数据,1 ≤ n ,m ≤ 9。
对于60%的数据,1 ≤ n ,m ≤ 15。
对于100%的数据,1 ≤ n ≤ 16,1 ≤ m ≤ 20。

解题思路:

用dfs枚举每一行翻不翻,然后枚举每一列需不需要翻,然后取最优的就可以了

代码

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int n,m,l,num,sum,ans,minn,a[25][25];
char x;
void dfs(int dep,int c)
{if (dep>n){l=c;num=0;for (int j=1;j<=m;++j){sum=0;for (int i=1;i<=n;++i)sum+=a[i][j];if (n-sum<sum) sum=n-sum,l++;//要翻num+=sum;//累加}minn=min(minn,num);if (!num) ans=min(ans,l);//记录return;}for (int j=1;j<=m;++j)a[dep][j]=(a[dep][j]+1)%2;//所有都翻一遍dfs(dep+1,c+1);//翻for (int j=1;j<=m;++j)a[dep][j]=(a[dep][j]+1)%2;//返回来dfs(dep+1,c);//不翻
}
int main()
{scanf("%d %d",&n,&m);for (int i=1;i<=n;++i){getchar();for (int j=1;j<=m;++j){x=getchar();a[i][j]=x-48;//记录}}ans=2147483647;minn=2147483647;dfs(1,0);if (!minn) printf("%d",ans);else printf("%d",minn);
}

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

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

相关文章

组合数学与数论函数专题

组合数学专题 专题简介 本专题包含了一些组合数学中常见的套路和方法,如拉格朗日插值,动态规划,容斥原理,狄利克雷卷积,线性筛,杜教筛 等等. 目录 2018 四川省赛GRISAIA (数论分块)HDU 6428 Calculate (狄利克雷卷积,线性筛)BZOJ4559 成绩比较 (动态规划,拉格朗日插值)BZOJ…

关于Visual Studio 2019的前期详情

近日&#xff0c;来自微软公司的 John Montgomery 正式宣布&#xff0c;Visual Studio 2019已进入开发阶段。Montgomery 表示&#xff0c;之所以选择在这个时间点公开这个消息&#xff0c;是因为微软准备在 GitHub 上公开可见的项目&#xff08;包括 .NET 和 Roslyn&#xff09…

nssl1522-简单数数题【dp】

正题 题目大意 nnn个数的一个集合&#xff0c;求一个有多少个子集使得这个子集的所有子集的权值和的和是mmm的倍数 解题思路 考虑dp&#xff0c;选中集合中每一个数的贡献次数是2∣S∣−12^{|S|-1}2∣S∣−1&#xff0c;设fi,j,kf_{i,j,k}fi,j,k​表示选到第iii&#xff0c;现…

蛋糕店

蛋糕店 题目大意&#xff1a; 有n个人&#xff0c;让他们排队&#xff0c;每个人都有一个愤怒值&#xff0c;总值为每个人的愤怒值乘上&#xff08;他在队列中的位置-1&#xff09;加在一起 原题&#xff1a; 题目描述 最近小G新开了一家蛋糕店。开业第一天&#xff0c;一…

开源的,跨平台的.NET机器学习框架ML.NET

微软在Build 2018大会上推出的一款面向.NET开发人员的开源&#xff0c;跨平台机器学习框架ML.NET。 ML.NET将允许.NET开发人员开发他们自己的模型&#xff0c;并将自定义ML集成到他们的应用程序中&#xff0c;而无需事先掌握开发或调整机器学习模型的专业知识。在采用通用机器学…

nssl1519-背包签到题【数论】

正题 题目链接:http://10.156.31.134/contestnew.aspx?cid189 题目大意 nnn种物品&#xff0c;每种aia_iai​个。放进kkk个有序盒子求方案数&#xff08;可以不放完&#xff09; 解题思路 不放完其实就是k1k1k1个盒子&#xff0c;插板法求CkaiaiC_{ka_i}^{a_i}Ckai​ai​​&…

【dfs】相似度

相似度 题目大意&#xff1a; 有两个图&#xff0c;问他们的相似度是多少&#xff08;相似度为连接两个点的相样线的条数&#xff09; 原题&#xff1a; 题目描述 小G通过摆放一些城市和道路构成了一个世界地图。趁着小G出去玩的时候&#xff0c;大G把小G的世界地图上的城…

虚树-树上动态规划的利器

虚树 问题引入 在一类树上动态规划问题中,题目给出的询问往往包含树上的很多各节点,并保证总的点数规模小于某个值. 如果我们直接在整颗树上进行dpdp的话,时间复杂度与询问的次数有关,这显然是不可接受的,如果我们可以找到一种动态规划的方法,使其时间复杂度与询问中点的实际…

牛客练习赛69D-火柴排队【dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7329/D 题目大意 nnn个数的序列&#xff0c;排序后让随机kkk个数加上ddd&#xff0c;求依旧满足单调上升的期望概率 解题思路 对于一个位置加上ddd后会让到后面一段范围内都得加上ddd。我们预处理一个lil_ili​表示如果ii…

微软推出Visual Studio Kubernetes工具包预览版

微软表示&#xff0c;利用 Visual Studio Kubernetes 这个工具&#xff0c;使用者可以直接在该环境中&#xff0c;构建 Kubernetes 容器应用程序项目&#xff0c;或者让现有的 .NET 网页应用程序也兼容 Kubernetes。除了公有云基础架构环境要支持 Kubernetes&#xff0c;微软现…

伸展树模板

伸展树模板 #include <iostream> #include <cstdio>#define pr(x) std::cout << #x << " : " << x << std::endlclass SplayTree{ public:struct Node{int val;int size;int tag;Node *father;Node *son[2];Node(int val,Node *…

【DP】Sam数

Sam数 题目大意&#xff1a; 问位数为n&#xff0c;且每一位的数字与相邻数字的差值小于等于2的数有多少个 原题&#xff1a; 题目描述 小G最近发现了一种非常有趣的数&#xff0c;他将这种数称之为Sam数。Sam数具有以下特征&#xff1a;相邻两位的数字之差不超过2。小G还…

基于docker 如何部署surging分布式微服务引擎

1、前言转眼间surging 开源已经有1年了&#xff0c;经过1年的打磨&#xff0c;surging已从最初在window 部署的分布式微服务框架&#xff0c;到现在的可以在docker部署利用rancher 进行服务编排的分布式微服务引擎&#xff0c;再把业务进行剥离&#xff0c; 通过配置路径就能驱…

P4213-[模板]杜教筛(Sum)

正题 题目链接:https://www.luogu.com.cn/problem/P4213 题目大意 给出nnn&#xff0c;求∑i1nφ(i)\sum_{i1}^n\varphi(i)i1∑n​φ(i) 和 ∑i1nμ(i)\sum_{i1}^n\mu(i)i1∑n​μ(i) 解题思路 考虑如何将φ\varphiφ卷起来&#xff0c;我们可以乘上一个函数I(I(x)1)I(I(x)1…

线段树专题-等差子序列 BZOJ-2124

线段树专题-等差子序列 感谢 感谢孙耀峰的线段树PPT,使我获益匪浅. 题目来源 BZOJ−2124BZOJ-2124BZOJ−2124 题意 给出长度为nnn的1−n1-n1−n的排列AAA 问是否存在一组1≤p1≤p2≤...≤pl≤n,l≥31 \le p_1 \le p_2 \le ... \le p_l \le n,l \ge 31≤p1​≤p2​≤...≤p…

【模拟】小游戏

小游戏 题目大意&#xff1a; 有n个数形成一个环&#xff0c;从第S个开始&#xff0c;先往后数N个数然后把这个数取出来&#xff0c;再往前数K个数把这个数取出来&#xff0c;问取的数字依次是什么 原题&#xff1a; 题目描述 【题目背景】 yk同学是一个灰常灰常有爱的同…

P4051-[JSOI2007]字符加密【SA】

正题 题目链接:https://www.luogu.com.cn/problem/P4051 题目大意 给一个字符串&#xff0c;求它当每个环状字符串&#xff08;比如ABCABCABC的就是ABC,CAB,BCAABC,CAB,BCAABC,CAB,BCA&#xff09;排序后所有串的末尾连起来当字符串。 解题思路 这个其实就是每个串的后缀加上…

DevOps 实践:千里之行

在上一篇 DevOps 渊源&#xff1a;角色消融 中我们分析了在作坊式团队中的责任重叠&#xff0c;也回顾了 DBA 角色的消融。那么&#xff0c;如今我们讲的 DevOps 又是什么角色的消融呢&#xff1f; 我想你已经猜到了&#xff0c;接下来要消融的角色就是运维人员了。那这次又是什…

线段树专题-黑白棋盘 BZOJ-1453

线段树专题-黑白棋盘 题目来源 BZOJ−1453BZOJ-1453BZOJ−1453 题意 QQQ次操作每次操作给出(x,y)(x,y)(x,y),将(x,y)(x,y)(x,y)个格子颜色取反每次操作后,输出棋盘上黑白联通块的个数n≤100,Q≤104n \le 100,Q \le 10^4n≤100,Q≤104 题解 显然不能直接套并查集,因为直接套…

约数个数

约数个数 题目大意&#xff1a; 求a到b之间每个数的约数的个数之和 原题&#xff1a; 题目描述 定义f(x)为x的约数个数&#xff0c;x为正整数。 f(a)f(a1)……f(b)&#xff0c;即a,b之间每个数的约数的总和。 输入 一行两个正整数a、b&#xff0c;以一个空格隔开。 输出…