AOJ 0525

题意:

有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示)。一次可将同一行或同一列的煎饼全部翻转。现在需要把尽可能多的煎饼翻成正面朝上,问最多能使多少煎饼正面朝上?
输入:多组输入,每组第一行为二整数r, c (1 ≤ r ≤ 10, 1 ≤ c ≤ 10 000),剩下r行c列表示煎饼初始状态。r=c=0输入结束
输出:对于每组输入,输出最多能使多少煎饼正面朝上

这个是二维的穷举,因为列数比较多行数比较少,所以可对行做dfs穷举所有行的情况。这里用bitset保存每一行的情况,对于行的翻转,只需要用自带的flip函数。对于每一行都确定动作时,统计每一列翻时会出现的正面朝上的值以及不翻时的值,取较大数。此时,行动作确定时,列动作可以做到的最优值。因此穷举所有行情况即可求出实际最优值。

#include<iostream>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<vector>
#include<set>
#include<stack>
#include<bitset>
using namespace std;const int MAX_R=10;
const int MAX_C=10000;int R,C,ans;
bitset<MAX_C> a[MAX_R];void dfs(int k)
{if(k==R){int result=0;for(int i=0;i<C;i++){int sum=0;for(int j=0;j<R;j++){if(a[j][i])sum++;}result+=max(sum,R-sum);}ans=max(ans,result);return;}dfs(k+1);//without flippinga[k].flip();dfs(k+1);//with flipping
}int main()
{while(cin>>R>>C&&R&&C){for(int i=0;i<R;i++)for(int j=0;j<C;j++){bool tmp;cin>>tmp;a[i][j]=tmp;}ans=0;dfs(0);cout<<ans<<endl;}return 0;
}

转载于:https://www.cnblogs.com/demian/p/6555258.html

AOJ 0525 Osenbei【穷竭搜索】相关推荐

  1. 《挑战程序设计竞赛》学习笔记(二):穷竭搜索

    2.1 穷竭搜索 深度优先搜索 部分和问题 /*************************************************** User name: 寻雾启示wpf Note: ...

  2. 《挑战程序设计竞赛》--初级篇习题POJ部分【穷竭搜索+贪心】

    最近看了<挑战程序设计竞赛>初级篇,这里总结一下部分poj上的练习题,主要涉及方面为: 穷竭搜索 and 贪心算法 具体题目: 简单导航 一.穷竭搜索 二.贪心算法 一.穷竭搜索 穷竭搜索 ...

  3. Exhaustive Search - 穷竭搜索

    方法: 1. 递归函数 2. 栈 3. 队列 4. 深度优先搜索( DFS , Depth-First Search),又常称为回溯法 5. 广度优先搜索(BFS, Breadth-First Sea ...

  4. 第 2 章:初出茅庐【初级篇 - 2.1 穷竭搜索】

    目录 201. 部分和问题[爆搜] 202. 水洼计数 Lake Counting[连通块] 203. 迷宫的最短路径[bfs] 201. 部分和问题[爆搜] https://www.papamelo ...

  5. poj3050 穷竭搜索 挑战程序设计竞赛

    2018-1-31 一开始题目没有读懂,没有看到样例中的唯一的2... 这题用STL里的set求解极为方便,因为set里的元素是不相同的,最后只要输出它的size即可 #include<iost ...

  6. poj3187 穷竭搜索 挑战程序设计大赛

    2018-1-30 直接用dfs求解即可,一开始的时候提交TLE,后来优化一下就OK了! #include<iostream> #include<cstring> using ...

  7. AOJ 0525 Osenbei

    有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示).一次可将同一行或同一列的煎饼全部翻转.现在需要把尽可能多的煎饼翻成正面朝上,问最多能使多少煎饼正面朝上?    ...

  8. c语言中穷竭算法,hihocoder#1054 : 滑动解锁(深度优先搜索)

    描述 滑动解锁是智能手机一项常用的功能.你需要在3x3的点阵上,从任意一个点开始,反复移动到一个尚未经过的"相邻"的点.这些划过的点所组成的有向折线,如果与预设的折线在图案.方向上 ...

  9. 对于穷竭搜索算法优化的思考,以一群蚂蚁在竿子上爬行为例

    有个这么一个最短距离或者最长距离的问题.有n只蚂蚁以每秒钟1cm的速度在Lcm的竿子上爬行.当蚂蚁爬到竿子的端点时就会掉落.由于竿子太细,两只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去.对于每只 ...

最新文章

  1. asp.net 2.0防止同一用户同时登陆
  2. OpenCASCADE绘制测试线束:拓扑命令之拓扑和几何分析
  3. HDFS的Java客户端操作代码(HDFS删除文件或目录)
  4. win10下Rabbitmq的安装和配置
  5. x轴z轴代表的方向图片_游戏中到底是Z轴朝上还是Y轴朝上?
  6. 产品铭牌要求_AMPULM:电力变压器铭牌有哪些主要技术参数,你都知道吗?
  7. gitlab修改管理员密码流程
  8. 小米重磅新机Mimoji萌拍被指抄袭 官方怒回应:将追查到底!
  9. mysql8 win10_window10下安装多个MySQL8.0
  10. python数据结构剑指offer-重建二叉树
  11. python分析nginx日志_利用python分析nginx日志
  12. 力扣 13.罗马数字转整数
  13. 极简代码(三)—— 向量加法
  14. 2-9 prev + next选择器 “远亲不如近邻” 返回且只返回唯一-个元素。 而通过prev + next选择器就可以查找与“prev”元素紧邻的下一个“next”元素...
  15. 结构梁配筋最牛插件_结构设计最让人困惑的问题解析汇总
  16. oracle 排序性能优化,Oracle优化之: 利用索引的有序性减少排序
  17. 锐捷交换机VRRP配置
  18. iOS 各种证书的作用、有效期、过期的后果和解决办法
  19. Vertica中的projections
  20. c语言printf格式限定符,c – 1字节有符号数的printf格式

热门文章

  1. SQL SERVER 中 GO 的用法2
  2. Java中的Enum的使用与分析
  3. TabActivity中子Activity相互跳转,及某个Tab需弹出窗的解决方案
  4. easyui combox使用
  5. ExtJs常用数据源store
  6. [转]项目失败的经验
  7. JDK1.6版添加了新的ScriptEngine类,允许用户直接执行js代码。
  8. unity3d 简单动画
  9. You must install pydot and graphviz for plotmodel to work报错如何处理
  10. CentOS 7 firewalld使用简介