AOJ--0525 Osenbei
来源:互联网 发布:仿链家网站源码 编辑:程序博客网 时间:2024/06/02 02:27
問題
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行からなる.
入出力の例
2 50 1 0 1 01 0 0 0 1
3 61 0 0 0 1 01 1 1 0 1 01 0 1 1 0 1
9
15
上記問題文と自動審判に使われるデータは、情報オリンピック日本委員会が作成し公開している問題文と採点用テストデータです。
Notes on Submission
標準入出力を行うプログラムを作成して下さい.
上記形式で複数のデータセットが与えられます. C, R がともに 0 のとき入力の終わりを示します.
Sample Input
2 50 1 0 1 01 0 0 0 13 61 0 0 0 1 01 1 1 0 1 01 0 1 1 0 1 0 0
Sample Output
915
以下是我的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
- AOJ--0525 Osenbei
- Osenbei Aoj 0525
- AOJ 0525 Osenbei (dfs)
- [挑战程序设计竞赛] AOJ 0525 - Osenbei
- [搜索or枚举]AOJ 0525 Osenbei
- AOJ-0525 Osenbei-翻煎饼(穷竭搜索,BFS,BITSET)
- Aizu 0525 Osenbei【枚举+dfs】
- Aizu 0525(Osenbei 穷竭搜索)
- Osenbei Aizu
- AOJ 0525 爆搜
- AOJ
- Aoj
- Osenbei 翻馅饼
- dfs 简单穷竭搜索。AOJ 0525
- ACM Osenbei(挑战程序设计竞赛)
- AOJ0525——Osenbei(DFS)
- AOJ0525:Osenbei(DFS + Bitset)
- The nodes should be added to the underlying vendor clusterware before adding them to the CRS cluster
- 60.View the Exhibit and examine the structure of CUSTOMERS table.
- cmd查看电脑SHA1码
- 企业链表模型——业务实体和底层链表算法分离
- infQ——不受限于内存的队列
- AOJ--0525 Osenbei
- 抓包获得东北大学的课程表,考试成绩,啥的东西
- Java线程池《ThreadPoolExecutor中策略的选择与工作队列的选择》
- Linux之内核模块编程
- Grid Infrastructure 启动的五大问题 (文档 ID 1526147.1)
- Linux进程间通信
- android开发框架(三)数据持久化(2)-SharedPreferences
- ant -- 解决运行时报“Unable to locate tools.jar”的问题
- 5.3.2 开源Android-PullToRefresh下拉刷新源码分析