求咕分
  • 板块灌水区
  • 楼主Luban
  • 当前回复30
  • 已保存回复30
  • 发布时间2020/5/24 20:47
  • 上次更新2023/11/7 01:46:53
查看原帖
求咕分
113600
Luban楼主2020/5/24 20:47

这个烂代码能得多少

(考场有文件的QAQ)

#include<bits/stdc++.h>
using namespace std;
const int N=2020;
int n,m,r;
char mapp[N][N];
bool vis[N][N];
int ans[N*N],col[N*N];
const int x[8]={1,-1,0,0,1,1,-1,-1};
const int y[8]={0,0,1,-1,1,-1,1,-1};
void dfs(int i,int j)
{
	int k=0;
	while(k<8)
	{
		int xx=i+x[k],yy=j+y[k];
		if (xx>=1&&xx<=n&&yy>=1&&yy<=m&&!vis[xx][yy]&&mapp[xx][yy]=='*')
		{
			r++;
			vis[xx][yy]=1;
			dfs(xx,yy);
		}
		k++;
	}
	return;
}
int main()
{
	int i=1,j,tot=0,q=-1;
	scanf("%d%d\n",&n,&m);
	while(i<=n)
	{
		j=1;
		while(j<=m)
		{
			scanf("%c ",&mapp[i][j]);
			j++;
		}
		i++;
	}
	i=1;
	while(i<=n)
	{
		j=1;
		while(j<=m)
		{
			if (!vis[i][j]&&mapp[i][j]=='*')
			{
				r=1;
				vis[i][j]=1;
				dfs(i,j);
				tot++;
				ans[tot]=r;
			}
			j++;
		}
		i++;
	}
	i=1;
	int a=0,b=-1;
	while(i<=tot)
	{
		col[ans[i]]++;
		q=max(q,ans[i]);
		i++;
	}
	i=1;
	while(i<=q)
	{
		if (col[i]) a++;
		b=max(b,col[i]*i);
		i++;
	}
	cout<<a<<" "<<b<<endl;
	return 0;
}
                          

pj组T2 code

2020/5/24 20:47
加载中...