模拟赛 土豪聪要请客
来源:互联网 发布:淘宝外卖会员卡怎么用 编辑:程序博客网 时间:2024/06/08 16:18
题目描述
众所周知,聪哥(ndsf)是个土豪,不过你们不知道的是他的MZ和他的RMB一样滴多……
某天土豪聪又赚了10^10000e的RMB,他比较开心,于是准备请客。他在自己在XX星上的别墅里面大摆酒席,想要邀请尽可能多的MZ来参加他的宴会。他将会同MZ一起坐在一个巨大的长方形桌子上。这个桌子能坐下的人数等于他的边长。聪哥要求他的桌子能够放进他的别墅,并且桌子的边必须与别墅的边界平行。给定别墅的平面图,请你求出聪哥最多可以请多少个MZ。
输入格式
第一行n,m。表示别墅的长宽
下面n行,每行M个字符,表示一个方块是空的(‘ ’)或是被占用了(‘X’)。
聪哥只要他的桌子放在别墅里,并且桌子不能占用任何一个已经占用了的方块。
输出格式
一个数,表示聪哥最多可以请几个Maze。
样例输入1
2 2
..
..
样例输出1
7
样例输入2
4 4
X.XX
X..X
..X.
..XX
样例输出2
9
对于60%的数据,n,m<=100
对于100%的数据,n,m<=400
题解
一题怎么做都可以的动归,我是这样写的。s是每个点向上能到达的最长距离。
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<cmath>#include<algorithm>using namespace std;int n,m,a[405][405],s[405][405];char ch[405]; int ans,f[405][405];void init(){scanf("%d%d",&n,&m);int i,j;for(j=1;j<=m;j++) a[0][j]=1;for(i=1;i<=n;i++) {scanf("%s",ch+1); for(j=1;j<=m;j++) {if(ch[j]=='.') a[i][j]=1; else a[i][j]=0; if(a[i][j]==0) s[i][j]=0; else s[i][j]=s[i-1][j]+1; } }}void dp(){int i,j,k,maxs;for(i=1;i<=n;i++)for(j=1;j<=m;j++) {if(a[i][j]==0) continue; maxs=s[i][j]; f[i][j]=2*s[i][j]+1; for(k=j;k>=1;k--) {if(a[i][k]==0) break; maxs=min(s[i][k],maxs);if(f[i][j]<((j-k+1)+maxs)*2-1) f[i][j]=((j-k+1)+maxs)*2-1;ans=max(f[i][j],ans); } }printf("%d\n",ans);}int main(){freopen("stol.in","r",stdin);freopen("stol.out","w",stdout);init(); dp();return 0;}
0 0
- 模拟赛 土豪聪要请客
- 请客
- NYOJ 647 奋斗小蜗牛在请客【模拟】
- xb 请客。
- 小宁哥请客
- 请客语录
- 土豪银行
- 1105土豪
- 新年,老板请客!
- My treat 我请客
- 国家请客吃什么
- 智力题-1:谁请客?
- pipi保研成功请客
- 请客800网并购酷码酷卡网
- 研究一下请客,吃饭的学问
- 今天同学请客k歌
- ERP-经典论述(家中请客)
- 打扫干净屋子再请客
- [LeetCode] Letter Combinations of a Phone Number
- GDB调试fork+exec创建的子进程的方法
- 算法分析-汉诺塔问题(一)
- Unity调用DLL
- redis安装
- 模拟赛 土豪聪要请客
- 利用递归将整数转化为二进制
- APP-FND-00676: 弹性域例程 FDFGDC 无法读取为此说明性弹性域指定的默认引用字段
- https证书是网购站点的必备利器
- CAsyncSocket及CSocket的区别和用法
- 转载_网络基本功(九):细说TCP重传
- Standford《Machine Learning》 编程练习2
- 第九周项目1利用循环求和(一)
- 其他栏计划