AOJ--0525 Osenbei

2023-10-13 03:32
文章标签 aoj 0525 osenbei

本文主要是介绍AOJ--0525 Osenbei,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

問題

IOI製菓では,創業以来の伝統の製法で煎餅(せんべい)を焼いている.この伝統の製法は,炭火で一定時間表側を焼き,表側が焼けると裏返して,炭火で一定時間裏側を焼くというものである.この伝統を守りつつ,煎餅を機械で焼いている.この機械は縦 R (1 ≤ R ≤ 10) 行, 横 C (1 ≤ C ≤ 10000) 列の長方形状に煎餅を並べて焼く.通常は自動運転で,表側が焼けたら一斉に煎餅を裏返し裏側を焼く.

ある日,煎餅を焼いていると,煎餅を裏返す直前に地震が起こり何枚かの煎餅が裏返ってしまった.幸いなことに炭火の状態は適切なままであったが,これ以上表側を焼くと創業以来の伝統で定められている焼き時間を超えてしまい,煎餅の表側が焼けすぎて商品として出荷できなくなる.そこで,急いで機械をマニュアル操作に変更し,まだ裏返っていない煎餅だけを裏返そうとした.この機械は,横の行を何行か同時に裏返したり縦の列を何列か同時に裏返したりすることはできるが,残念なことに,煎餅を1枚ごと裏返すことはできない.

裏返すのに時間がかかると,地震で裏返らなかった煎餅の表側が焼けすぎて商品として出荷できなくなるので,横の何行かを同時に1回裏返し,引き続き,縦の何列かを同時に1回裏返して,表側を焼きすぎずに両面を焼くことのできる煎餅,つまり,「出荷できる煎餅」の枚数をなるべく多くすることにした.横の行を1行も裏返さない,あるいは,縦の列を1列も裏返さない場合も考えることにする.出荷できる煎餅の枚数の最大値を出力するプログラムを書きなさい.

地震の直後に,煎餅が次の図のような状態になったとする.黒い丸が表側が焼ける状態を,白い丸が裏側が焼ける状態を表している.

1行目を裏返すと次の図のような状態になる.

さらに, 1列目と5列目を裏返すと次の図のような状態になる.この状態では,出荷できる煎餅は9枚である.

ヒント

R の上限 10 は C の上限 10000 に比べて小さいことに注意せよ.

入力

入力の1行目には2つの整数 R, C (1 ≤ R ≤ 10, 1 ≤ C ≤ 10 000) が空白を区切りとして書かれている.続く R 行は地震直後の煎餅の状態を表す. (i+1) 行目 (1 ≤ i ≤ R) には, C 個の整数 ai,1, ai,2, ……, ai,C が空白を区切りとして書かれており, ai,j は i 行 j 列 の煎餅の状態を表している. ai,j が 1 なら表側が焼けることを, 0 なら裏側が焼けることを表す.

出力

提出する出力ファイルは,出荷できる煎餅の最大枚数だけを含む1行からなる.

入出力の例

入力例1入力例2
2 5
0 1 0 1 0
1 0 0 0 1  
3 6
1 0 0 0 1 0
1 1 1 0 1 0
1 0 1 1 0 1   
 
出力例1出力例2
9 
15 

上記問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。

Notes on Submission

標準入出力を行うプログラムを作成して下さい.

上記形式で複数のデータセットが与えられます. C, R がともに 0 のとき入力の終わりを示します.

Sample Input

2 5
0 1 0 1 0
1 0 0 0 1
3 6
1 0 0 0 1 0
1 1 1 0 1 0
1 0 1 1 0 1  
0 0

Sample Output

9
15



以下是我的AC代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<bitset>
using namespace std;
bitset<10000> cookie[10];
bool now;
int main()
{int r,c;while(cin>>r>>c && r>0){int i,j;for(int i=0;i<r;i++){for(int j=0;j<c;j++){cin>>now;cookie[i][j]=now;}}int ans=0;for(int i=0;i<(1<<r);i++){for(int j=0;j<r;j++){if(i & (1<<j)){cookie[j].flip();}}int possible_ans=0;for(int j=0;j<c;j++){int up_cookie=0;for(int k=0;k<r;k++){if(cookie[k][j])up_cookie++;}possible_ans+=max(up_cookie,r-up_cookie); }ans=max(ans,possible_ans);for(int j=0;j<r;j++){if(i & (1<<j)){cookie[j].flip();}}}printf("%d\n",ans);}return 0;
}


这篇关于AOJ--0525 Osenbei的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200471

相关文章

Aoj 2450 Do use segment tree【树链剖分】

树链剖分,个人因为姿势太丑就不发代码了。 维护四个域。 区间和,右端最大连续值,左端最大连续值,答案。 注意的是,2操作是一个有序的操作,因此需要求一个LCA,从某点更新到LCA,再从LCA更新到另一个点。当然也有不要LCA的方法,就是通过判断深度,不swap,直接旋转地找。 // whn6325689// Mr.Phoebe// http://blog.

Jetson AGX Orin基于BlueZl蓝牙协议栈AOJ红外蓝牙体温计开发(低功耗蓝牙ble)

一、准备工作 安装blueZ以及相关的蓝牙测试工具: sudo apt updatesudo apt install bluezsudo apt install bluez-hcidump 然后看下蓝牙设备是否识别到,已经是否处于开启状态: root@test-desktop:~# hciconfig -ahci0: Type: Primary Bus: USBBD Addr

AOJ-0189-Convenient Location 最短路【floyd算法】

AOJ 0189 Convenient Location 最短路 Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit  Status  Practice  Aizu 0189 Description 来春卒業するAさんは,就職を機に引越しをすること

AOJ 0033 Ball (枚举)

http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033 题意: 有一个形似央视大楼(Orz)的筒,从A口可以放球,放进去的球可通过挡板DE使其掉进B裤管或C裤管里,现有带1-10标号的球按给定顺序从A口放入,问是否有一种控制挡板的策略可以使B裤管和C裤管中的球从下往上标号递增。  输入: 第一行输入数据组数N。接下来

国赛集训-AOJ-分解篇

三个师妹之出题 Description 这一次,那几个师妹给sharp出了一个题目:给定一个正整数N,求1/X+1/Y= 1/N的所有正整数解.sharp哈哈笑了两声,很简单的题目嘛…但是他一听数据范围就傻眼了,N最大可能是999999999!!!聪明的你能帮帮可怜的sharp吗?好让他不那么丢脸. Input 第一行输入一个正整数M,下面有M行,每一行都是一个正整数N. Output 输出共

0525运维周内贺磊(python)

列表的创建 定义一个空列表 l = [ ] print(type(l))# 定义一个包含元素的列表 l2 = [1, 2e+8, 2j+9, True, "hello"] print(l2, type(l2))# 列表里面存储列表 l3 = [[0,0,0,0], [1,1,1,1],1, 2e+8, 2j+9, True, "hello"] print(l3, type(l3)

AOJ 901 snow halation 【DP】

面: 《snow halation》是μ’s的第二张单曲,其歌曲第二段伴奏结束后主唱穗乃果唱出“届けて”的同时,全场应援棒瞬间从白色转换成橙色。由于高度的整齐和效果的震撼,被称为“橙色的奇迹”,这也是“如果奇迹有颜色,那么一定是XX色”的最早来源。 现在,到了你来应援的时候了! 使用不同的应援形式有不同的效果(如里打、里跳、快挥、前挥、GT警报……),比如通常会GT警报后接着做里跳,这样能够

AOJ 840 下一个幸运数

题面: Description 数字的每一位只可能是4或者7的称为幸运数,比如说4,7,44,474,7474都是幸运数,而54,40,444467777都不是幸运数。而数字A的下一个幸运数,表示的是大于等于A的最小的幸运数。比如4的下一个幸运数是4,而5的下一个幸运数是7。现在给出一个区间[L, R],求出区间内每个数的下一个幸运数的和。 Input 一个整数t,表示测试数据的组数(1<

AOJ 807 最长子序列和

题面: Description 给一串整数a[1..n],求出其和最大的子序列,即找出1<=i<=j<=n(1<=n<=50000),使a[i]+a[i+1]+…+a[j]最大。 Input 多组输入,EOF结束,每组输入包含两行,第一行有一个数字n表示有n个数字,第二行有n个数字,每个数字的绝对值小于1000。 Output 对于每组输入,输出最大子序列和 Sample Input

AIZU ONLINE JUDGE (会津大学在线测评,简称AOJ)

AOJ 官网地址:http:judge.u-aizu.ac.jp 最近在看《挑战程序设计竞赛||算法和数据结构》一书,书中大量例题均收录在AOJ测评系统上面,为了更好的练习巩固知识,免费注册了账号。(Windows10 下面用Chrome浏览器注册失败后,转向win10自带浏览器Edge注册成功),有了账号就可以在上面挑(zhao)战(nve)啦、找了到冒泡排序练了一手,最后看到绿