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

测试数据:

输入:2 50 1 0 1 01 0 0 0 1 输出:9输入:
3 6
1 0 0 0 1 0
1 1 1 0 1 0
1 0 1 1 0 1输出:15 思路:先对行进行翻转,若有r行,一共要2^r次,对于行翻转后的每一种情况,在进行列的翻转,列不需要真的翻转,只需要统计一下每一列是正面朝上的煎饼多还是反面朝上的煎饼多,取总和。对于这2^r个总和,取最大的那个即可。代码:
#include<iostream>
#include<bitset>
#include<algorithm>
using namespace std;
bitset<10000>cookie[10];
int main() {int r, c;while (cin >> r >> c&&r) {int result = 0;for (int i = 0;i < r;i++)for (int j = 0;j < c;j++) {bool what;cin >> what;cookie[i][j] = what;}int permute = 1 << r;int k;for ( k = 0;k < permute;k++) {//行的变换总共有2^r个,k取遍各种情况for (int j = 0;j < r;j++) {//每一种情况对应着这r行的一次变化(每一行翻转或者不翻转)if (k & (1 << j))//对于每一个k,(1<<j)与i的二进制对应位上若都为1,这一行翻转(1<<j取值为1,10,100,1000,....)cookie[j].flip();          //举个例子,若k=11,对应着(1<<j)为1和10时都进行翻转,也就是此次循环只有第一第二行进行翻转,其余行不变
            }//对于每次行翻转后的情况,考虑每一列的翻转使得朝上煎饼数最多int possible_num=0;for (int j = 0;j < c;j++) {int up_number=0;for (int i = 0;i < r;i++) {if (cookie[i][j])up_number++;}possible_num += max(up_number,r-up_number);}result =max(result,possible_num);for (int j = 0;j < r;j++) {if (k & (1 << j))cookie[j].flip();}}cout << result << endl;}return 0;
}

转载于:https://www.cnblogs.com/ZefengYao/p/5826242.html

AOJ 0525 Osenbei相关推荐

  1. AOJ 0525 Osenbei【穷竭搜索】

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

  2. Aizu 0525 Osenbei(状压+贪心)

    题意:翻煎饼,只能横着翻或者竖着翻.问最多有多少朝上? 行只有10,所以枚举一下2^10的状态,每列取0或1中最大的一个. 在枚举外面把饼翻好,枚举里面指针指一下就好.(位运算或bitset乱搞 #i ...

  3. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  4. AOJ 1312 Where's Wally 题解《挑战程序设计竞赛》

    为什么80%的码农都做不了架构师?>>>    本文由码农场 同步,最新版本请查看原文:http://www.hankcs.com/program/algorithm/aoj-131 ...

  5. AOJ0525 Osenbei【DFS+状态组合】

    おせんべい 問題 IOI製菓では,創業以来の伝統の製法で煎餅(せんべい)を焼いている.この伝統の製法は,炭火で一定時間表側を焼き,表側が焼けると裏返して,炭火で一定時間裏側を焼くというものである.この ...

  6. AOJ 351 rmq或 基础线段树 求解

    题目链接:AOJ 351 RMQ: #include<cstdio> #include<cstring> #include<algorithm> #include& ...

  7. 【Linux_选择题】(D26 0525)

    [Linux_选择题](D26 0525) 1.在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为(D)   A 1   B 9   C 10   D 11 2.在系统内存中 ...

  8. AOJ——分治递归之Exhaustive Search穷尽搜索

    AOJ的分治递归的第一题: Exhaustive Search Write a program which reads a sequence A of n elements and an intege ...

  9. 0525 项目回顾7.0

    一.sprint总结 当谈到团队,我开始真的不知道团队是怎么样的,怎么样进行工作的,要该怎么出力团队的关系,有时候会涉及到个人问题,是不是该考虑进来,但是很多时候是不能的,每一个人作为团队的一份子,有 ...

最新文章

  1. 强烈推荐8个值得下载的神仙软件,每一个都让人惊喜
  2. photoshop给绘制的形状使用渐变工具
  3. 关于电脑的基础单词笔记
  4. MySql5.7.12设置log-bin
  5. OpenJDK与JDK的区别分析
  6. 7建站php_2019最受欢迎的企业网站CMS建站系统排行榜
  7. 计算机录入技术五笔输入法教案,五笔输入法教案
  8. 图片底色去除vue+canvas(简易版)
  9. 网络游戏广告植入案例
  10. uCOS事件相关函数代码理解
  11. 03.Redis— —持久化
  12. 深入了解JVM之类文件结构(三)
  13. 首师大附中集训第十一天:OI炼金术
  14. 借助这个宝藏神器,我成为全栈了
  15. 【Keychron K3】一款兼容Mac系统的矮轴机械键盘 | 推荐
  16. [WCN685X] WCN6856 WiFi 6E设置Open连接失败问题分析及解决方案
  17. 洛谷 1498 南蛮图腾
  18. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(1)- Boot简介
  19. 获取页面离开onbeforeunload与onunload事件的返回值
  20. 基于SSM盟校网交流服务平台

热门文章

  1. Python 语言程序设计(3-2)time 库的使用
  2. 事业编考试计算机专业部分,事业单位考试计算机专业知识汇总-单选题.pdf
  3. 人脸检测(六)--haar分类器代码理解
  4. mysql数据库视图_MySQL数据库8(二十)视图
  5. 泛微oa主表赋值明细表_OA系统学习--三
  6. 数字用户线(Digital Subscriber Line,DSL)
  7. CentOS安装lynis安全漏洞扫描工具
  8. 【数据库原理实验(openGauss)】认识DBMS系统
  9. java 垃圾回收入门
  10. 实战!手把手教你如何编写一个Linux驱动并写一个支持物联网的LED演示demo