[NWPU2018]国庆训练赛第一场 2018-10-01

先总结一下:这场比赛,大家基本上都在火车上,效率相对较低。G是在最后半小时内写过的,算是一个提醒吧。不到最后一刻不要放弃!
G - Dancing Stars on Me
求出这个多边形的重心,然后计算该点到每个顶点的距离是否相等。求重心就是把各个点坐标求平均值。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
using namespace std;
const int maxn=5000;
int t;
int x[maxn];
int y[maxn];
int main()
{
	scanf("%d",&t);
	for(int i=1;i<=t;i++)
		{
			int n; bool ys=1;
			if(n==2) {
					printf("NO\n");continue;}
			scanf("%d",&n); double xp=0; double yp=0;
			for(int j=1;j<=n;j++)
				{
					scanf("%d%d",&x[j],&y[j]);
					xp+=x[j]; yp+=y[j]; 	
				}
			 double xc=xp/n;
			 double yc=yp/n;  double r=(xc-x[1])*(xc-x[1])+(yc-y[1])*(yc-y[1]); // cout<<"r="<<r<<endl;
			 for(int j=2;j<=n;j++)
			 {
			 	double now=(xc-x[j])*(xc-x[j])+(yc-y[j])*(yc-y[j]);
			 	double c=now-r; if(c<0) c=0-c;
			 	if(c>0.1) ys=0;
			 	//printf("%lf %lf\n",now,r);
				 
			 }
			if(ys) printf("YES\n");
			else printf("NO\n");
		}
	return 0;
}

L - House Building
签到题,不多说了,直接放代码

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
const int maxn=60;
int hi[maxn][maxn];
int t;
int ans=0;
int main()
{
	scanf("%d",&t);
	for(int i=1;i<=t;i++)
	{
		int n; int m; scanf("%d%d",&n,&m); ans=0;
		memset(hi,0,sizeof(hi));
		for(int	j=2;j<=n+1;j++)
			for(int k=2;k<=m+1;k++)
			{
					scanf("%d",&hi[j][k]);
			}
		for(int	j=2;j<=n+1;j++)
			for(int k=2;k<=m+1;k++)
			{
					if(!hi[j][k]) continue;
					if(hi[j][k]>hi[j+1][k]) ans+=(hi[j][k]-hi[j+1][k]);
					if(hi[j][k]>hi[j-1][k]) ans+=(hi[j][k]-hi[j-1][k]);
					if(hi[j][k]>hi[j][k+1]) ans+=(hi[j][k]-hi[j][k+1]);
					if(hi[j][k]>hi[j][k-1]) ans+=(hi[j][k]-hi[j][k-1]);
					ans++;
			}
		printf("%d\n",ans);
	}
	return 0;
}
发布了38 篇原创文章 · 获赞 12 · 访问量 3964

猜你喜欢

转载自blog.csdn.net/int_lyy/article/details/82962250