AOJ 0525 Osenbei
有一个烤饼器可以烤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相关推荐
- AOJ 0525 Osenbei【穷竭搜索】
AOJ 0525 题意: 有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示).一次可将同一行或同一列的煎饼全部翻转.现在需要把尽可能多的煎饼翻成正面朝上,问最多能 ...
- Aizu 0525 Osenbei(状压+贪心)
题意:翻煎饼,只能横着翻或者竖着翻.问最多有多少朝上? 行只有10,所以枚举一下2^10的状态,每列取0或1中最大的一个. 在枚举外面把饼翻好,枚举里面指针指一下就好.(位运算或bitset乱搞 #i ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- AOJ 1312 Where's Wally 题解《挑战程序设计竞赛》
为什么80%的码农都做不了架构师?>>> 本文由码农场 同步,最新版本请查看原文:http://www.hankcs.com/program/algorithm/aoj-131 ...
- AOJ0525 Osenbei【DFS+状态组合】
おせんべい 問題 IOI製菓では,創業以来の伝統の製法で煎餅(せんべい)を焼いている.この伝統の製法は,炭火で一定時間表側を焼き,表側が焼けると裏返して,炭火で一定時間裏側を焼くというものである.この ...
- AOJ 351 rmq或 基础线段树 求解
题目链接:AOJ 351 RMQ: #include<cstdio> #include<cstring> #include<algorithm> #include& ...
- 【Linux_选择题】(D26 0525)
[Linux_选择题](D26 0525) 1.在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为(D) A 1 B 9 C 10 D 11 2.在系统内存中 ...
- AOJ——分治递归之Exhaustive Search穷尽搜索
AOJ的分治递归的第一题: Exhaustive Search Write a program which reads a sequence A of n elements and an intege ...
- 0525 项目回顾7.0
一.sprint总结 当谈到团队,我开始真的不知道团队是怎么样的,怎么样进行工作的,要该怎么出力团队的关系,有时候会涉及到个人问题,是不是该考虑进来,但是很多时候是不能的,每一个人作为团队的一份子,有 ...
最新文章
- 强烈推荐8个值得下载的神仙软件,每一个都让人惊喜
- photoshop给绘制的形状使用渐变工具
- 关于电脑的基础单词笔记
- MySql5.7.12设置log-bin
- OpenJDK与JDK的区别分析
- 7建站php_2019最受欢迎的企业网站CMS建站系统排行榜
- 计算机录入技术五笔输入法教案,五笔输入法教案
- 图片底色去除vue+canvas(简易版)
- 网络游戏广告植入案例
- uCOS事件相关函数代码理解
- 03.Redis— —持久化
- 深入了解JVM之类文件结构(三)
- 首师大附中集训第十一天:OI炼金术
- 借助这个宝藏神器,我成为全栈了
- 【Keychron K3】一款兼容Mac系统的矮轴机械键盘 | 推荐
- [WCN685X] WCN6856 WiFi 6E设置Open连接失败问题分析及解决方案
- 洛谷 1498 南蛮图腾
- 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(1)- Boot简介
- 获取页面离开onbeforeunload与onunload事件的返回值
- 基于SSM盟校网交流服务平台
热门文章
- Python 语言程序设计(3-2)time 库的使用
- 事业编考试计算机专业部分,事业单位考试计算机专业知识汇总-单选题.pdf
- 人脸检测(六)--haar分类器代码理解
- mysql数据库视图_MySQL数据库8(二十)视图
- 泛微oa主表赋值明细表_OA系统学习--三
- 数字用户线(Digital Subscriber Line,DSL)
- CentOS安装lynis安全漏洞扫描工具
- 【数据库原理实验(openGauss)】认识DBMS系统
- java 垃圾回收入门
- 实战!手把手教你如何编写一个Linux驱动并写一个支持物联网的LED演示demo