HDU2830-Matrix Swapping II
来源:互联网 发布:sheme数据库方案 编辑:程序博客网 时间:2024/04/30 10:44
Matrix Swapping II
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1896 Accepted Submission(s): 1269
Problem Description
Given an N * M matrix with each entry equal to 0 or 1. We can find some rectangles in the matrix whose entries are all 1, and we define the maximum area of such rectangle as this matrix’s goodness.
We can swap any two columns any times, and we are to make the goodness of the matrix as large as possible.
We can swap any two columns any times, and we are to make the goodness of the matrix as large as possible.
Input
There are several test cases in the input. The first line of each test case contains two integers N and M (1 ≤ N,M ≤ 1000). Then N lines follow, each contains M numbers (0 or 1), indicating the N * M matrix
Output
Output one line for each test case, indicating the maximum possible goodness.
Sample Input
3 41011100100013 4101010010001
Sample Output
42Note: Huge Input, scanf() is recommended.
Source
2009 Multi-University Training Contest 2 - Host by TJU
题意:给你一个矩阵,里面的数字只有0和1两种,其中,列可以任意移动。问如何移动可以使某个子矩阵中元素全部是1,求出这个最大子矩阵的面积。
解题思路:枚举所有的尾行,然后对于每个尾行,记录到这行为止每列连续的1的个数,因为可以将列任意移动,肯定要尽量将高度大的放在一起,所以可以将高度从大到小排序,然后有h[i]>=h[i+1],即如果将1,2…i个矩形连在一起,它的高应该是h[i],所以面积显然是h[i] * i。
#include <iostream>#include <cstdio>#include <string>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <vector>#include <set>#include <map>using namespace std;#define LL long longchar ch[1005][1005];int x[1005];int xx[1005];bool cmp(int a,int b){ return a>b;}int main(){ int n,m; while(~scanf("%d %d",&n,&m)) { int ans=0; memset(x,0,sizeof x); for(int i=1;i<=n;i++) { scanf("%s",ch[i]+1); for(int j=1;j<=m;j++) { if(ch[i][j]=='1') x[j]++; else x[j]=0; xx[j]=x[j]; } sort(xx+1,xx+1+m,cmp); for(int j=1;j<=m;j++) ans=max(ans,xx[j]*j); } printf("%d\n",ans); } return 0;}
0 0
- HDU2830--Matrix Swapping II
- HDU2830-Matrix Swapping II
- Matrix Swapping II hdu2830
- hdu2830 Matrix Swapping II--DP
- hdu2830 Matrix Swapping II 【dp】
- hdu2830 Matrix Swapping II(DP)
- Matrix Swapping II
- Matrix Swapping II
- Matrix Swapping II
- Matrix Swapping II
- 2830 Matrix Swapping II
- hdu 2830 Matrix Swapping II
- HDU 2830 Matrix Swapping II
- hdu 2830 Matrix Swapping II
- hdu 2830 Matrix Swapping II
- hdu 2830 Matrix Swapping II
- hdu 2830 Matrix Swapping II
- HDU 2830 Matrix Swapping II
- openwrt单个ipk编译过程
- Ugui 实现简易版的Joystick
- 索引失效 场景
- 【PAT】1050. String Subtraction
- ARM之内存
- HDU2830-Matrix Swapping II
- 用pycharm玩spark | windows平台
- 蓝桥杯 算法训练 最短路(最短路模板)
- openwrt打包过程
- [ZJOI2007] 仓库建设
- LinuxC删除目录
- 微信开发三之关注/取消关注事件
- 数数
- LeetCode 448. Find All Numbers Disappeared in an Array(Java)