1002 祭祀广场

原创 2013年12月05日 16:04:09

描述

古老的滕格森部落,生活在一片稀疏的树林之中,他们信仰伟大的长天昊大神。

一天晚上,部落的首领猛格做了一个梦里,在梦里得到了长天昊神的神谕,要求他的部落建立一个大型的广场,用来举行对长天昊大神的祭拜仪式。其实,对于那时候的人来说,祭拜仪式之后常常会举行集体歌舞、狂欢活动,属于那个时代的群众娱乐项目。

腾格森部落生活的地方是一片乐土,环境优美,植物茂盛,动物成群,猛兽也不多。虽然那时的人寿命并不长,但由于他们不实行计划生育,所以人口众多。为了表示对长天昊大神的敬畏,同时也为了活动场地能容纳尽可能多的人,部落首领猛格想把广场建得越大越好。

根据神谕,广场必须是正方形。但建设广场的那片区域,有一些古树、清泉和神迹,不能被破坏。但腾格森部落的绘图术比较落后,他们把矩形区域分成一格一格,地图上可用来建设广场的地方标0,有古树和神迹的地方标1,整个地图就是一个1、0矩阵。

猛格把确定建设广场地址的任务交给了你,希望你能告诉他,广场到底能建多大。

输入
输入包含多组测试数据,每组测试数据的第一行是两个正整数M、N(1<=M<=3000,1<=N<=3000),表示建设广场的矩形区域的长和宽。然后接下来是M×N的0、1矩阵。输入数据以0 0结束。

输出
对应每组测试数据,仅输出一行,即广场的最大边长。

样例输入

3 4
0 1 0 0
0 0 0 0
1 0 0 1
5 5
0 0 0 1 0
0 0 0 0 0
1 1 0 0 0
0 0 0 0 0
1 0 0 0 1
0 0

样例输出

2
3


思路:此题是一道经典的动态规划题,可以定义一个二维数组来保存原始数据,然后使用

A[i][j] += min(A[i][j - 1], A[i - 1][j], A[i - 1][j - 1]); 即可



#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int a[3000][3000];
int min(int a,int b ,int c)
{
	if(a<b)
		return (a<c)?a:c;
	else
		return (b<c)?b:c;
}
int main()
{
	int m,n;
	int num;
	ifstream cin("aaa.txt");
	while(cin>>m>>n&&m!=0&&n!=0)
	{
		for(int i=0;i<m;i++)
			for(int j=0;j<n;j++)
			{
				cin>>num;
				if(num)//如果不能修建
				{
					a[i][j]=0;
				}
				else
					a[i][j]=1;//可以修建
			}
			//边界保持原来的状态
			for (int i=1;i<m;i++)
				for (int j=1;j<m;j++)
				{
					if (a[i][j]!=0)
					{
						a[i][j]+=min(a[i-1][j],a[i][j-1],a[i-1][j-1]);
					}
				}
				int biggest=a[0][0];
				for (int i=0;i<m;i++)
					for(int j=0;j<n;j++)
					{
						if(a[i][j]>biggest)
							biggest=a[i][j];
					}
				cout<<biggest<<endl;
	}
	
	system("pause");
	return 0;
}


1002 祭祀广场

描述 古老的滕格森部落,生活在一片稀疏的树林之中,他们信仰伟大的长天昊大神。一天晚上,部落的首领猛格做了一个梦里,在梦里得到了长天昊神的神谕,要求他的部落建立一个大型的广场,用来举行对长天昊大神的祭拜...

北航1002-祭祀广场

#include using namespace std; int RetRes(int ,int ,int ); int **p=NULL; int main(int argc,char* a...

Discuz插件 网上祭祀祭拜扫墓 1.2

  • 2016年09月29日 15:22
  • 572KB
  • 下载

bzoj1143 祭祀 最大匹配

根据题意,如果有两个点A和B,A能到达B或者B能到达A,那么两者就只能选一个。因此,首先做一遍Floyd得到任意两个点对之间能否到达,然后连边。由于最大独立子集=n-最大匹配数,所以跑一遍最大匹配就可...

创建孟获的远古祭祀技能触发器

//判断施放技能施放是远古祭祀。远古祭祀技能id为'A0AB' function Trig_StartC_Conditions takes nothing returns boolean if(no...
  • xiaozaq
  • xiaozaq
  • 2017年06月21日 17:16
  • 90

[BZOJ1143]CTSC2008祭祀|最长反链|floyd|二分图匹配

据说这只有第一问才会这么水。。这东西好像叫做最长反链。。我的理解就是先一遍floyd找出每个点能到的所有点(好像这东西叫传递闭包?),然后对于一对可达的点A,B只能选取一个,这就是匹配了,拆点二分图,...

bzoj1143[CTSC2008] 祭祀river

最长反链..(匈牙利

【BZOJ1143】【CTSC2008】祭祀river 传递闭包、最大点独立集(网络流写的)

题意:那个图不要看,给的没错,是有向无环图(拓扑) 题解: 对于每两点,都有一个关系————>如果传递闭包后a能到b,那么两者只能选一个。 完事了。 代码: #include #includ...
  • Vmurder
  • Vmurder
  • 2015年01月28日 07:41
  • 1579

《跨界杂谈》商业模式(一)祭祀->赌徒->首领->国家

2015-03-10 雷震子 雷震子 雷震子   笔者能阅读到的人类历史中,最早最成功的商业模式要数国家的诞生了。国家为何与商业模式挂钩呢?因为国家的收入...

我校CSDN高校俱乐部“微爱校园·舞动青春”小型广场晚会及舞会圆满成功!

为响应我校团委号召,积极健康的大学生活,烟台南山学院CSDN高校俱乐部与我校管理科学与工程学院文艺部、材料与冶金工程学院文艺部以及文艺青年协会等七个学生组织共同在我校第三生活区广场举办“微爱校园·舞动...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1002 祭祀广场
举报原因:
原因补充:

(最多只允许输入30个字)