HDU1937 Finding Seats(dp求最小矩形)
2015-09-05 10:37
316 查看
题目描述:告诉你人数,求最小能容纳它们的矩形的面积
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <ctype.h> using namespace std; int dp[302][302]; int test(int i,int j,int k,int l) { return dp[i][j]-dp[i][l-1]-dp[k-1][j]+dp[k-1][l-1]; } int main() { int x,y,z; while(scanf("%d%d%d",&x,&y,&z),x) { int mmin=x*y; for(int i=1; getchar(),i<=x; i++) for(int j=1; j<=y; j++) dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+(getchar()=='.'); for(int i=1; i<=x; i++) if(dp[i][y]>=z) for(int j=y; dp[i][j]>=z; j--) for(int k=1; k<=x&&test(i,j,k,1)>=z; k++) for(int l=j-mmin/(i-k+1)+1>0?j-mmin/(i-k+1)+1:0; l<=j; l++) if(test(i,j,k,l)>=z) mmin=(i-k+1)*(j-l+1)<mmin?(i-k+1)*(j-l+1):mmin; else break; printf("%d\n",mmin); } return 0; }
相关文章推荐
- Palindrome - URAL - 1297(求回文串)
- 2015年-年终总结
- swift 代码笔记2
- CURL抓取网页内容并用正则提取。
- 二级c++——基本操作题小结
- 【codeforces 29A】Spit Problem
- 将你的Vim 打造成轻巧强大的IDE
- hdu1500 (排序+单调队列优化 )
- window 给链接加下划线或取消下划线
- Ajax-JS
- HDU 1150
- Unity3d通用工具类之生成文件的MD5
- POJ 2083 Fractal
- 基于SCN的查询(AS OF SCN)
- Unity3d通用工具类之生成文件的MD5
- c语言中static作用
- HDU 5202
- Android View.OnTouchListener 的子类,AutoScrollHelper,ZoomButtonsController,ListViewAutoScrollHelper
- IIS安装设置-Sql Sever2008安装设置-移动端设置等必读
- python题目——认识*与**,判断函数输出