模拟赛10.10

#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
const int maxn=1e6;
long long q1[maxn],q2[maxn];
long long t1,t2;
long long n,m;
char ch;
long long wei_x1,wei_y1;
long long wei_x2,wei_y2;
long long wei_x3,wei_y3;
long long wei_x4,wei_y4;
long long ans;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
		{
			cin>>ch;
			if(ch=='*')
			{
				q1[++t1]=i;
				q2[++t2]=j;
			}
		}
	sort(q1+1,q1+t1+1);
	sort(q2+1,q2+t2+1);
	if(t1%2==1)
	{
		wei_x1=q1[t1/2+1];
		wei_y1=q2[t2/2+1];
		wei_x2=q1[t1/2+1];
		wei_y2=q2[t2/2+1];
		wei_x3=q1[t1/2+1];
		wei_y3=q2[t2/2+1];
		wei_x4=q1[t1/2+1];
		wei_y4=q2[t2/2+1];
	}
	else 
	{
		wei_x1=(q1[t1/2]+q1[t1/2+1])/2;
		wei_y1=(q2[t2/2]+q2[t2/2+1])/2;
		wei_x2=(q1[t1/2]+q1[t1/2+1])/2+1;
		wei_y2=(q2[t2/2]+q2[t2/2+1])/2+1;
		wei_x3=(q1[t1/2]+q1[t1/2+1])/2;
		wei_y3=(q2[t2/2]+q2[t2/2+1])/2+1;
		wei_x4=(q1[t1/2]+q1[t1/2+1])/2+1;
		wei_y4=(q2[t2/2]+q2[t2/2+1])/2;
	}
	 ans=0;
	long long ans1=0;
	for(int i=1;i<=t1;i++){ans=ans+abs(q1[i]-wei_x1)+abs(q2[i]-wei_y1);}
	for(int i=1;i<=t1;i++){ans1=ans1+abs(q1[i]-wei_x2)+abs(q2[i]-wei_y2);}ans=min(ans,ans1);ans1=0;
	for(int i=1;i<=t1;i++){ans1=ans1+abs(q1[i]-wei_x3)+abs(q2[i]-wei_y3);}ans=min(ans,ans1);ans1=0;
	for(int i=1;i<=t1;i++){ans1=ans1+abs(q1[i]-wei_x4)+abs(q2[i]-wei_y4);}
	ans=min(ans,ans1);
	cout<<ans<<endl;
} 

原文地址:https://www.cnblogs.com/bangdexuanyuan/p/13793401.html