CCF-201912-2-回收站選址

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
這道題沒有什麼思路可以,要注意的一點就是要用long long,代碼如下:

#include<iostream>
using namespace std;

int n;
int a=0,b=0,c=0,dd=0,e=0;//代表得分01234,dd主要是結構體用了d,當時就果斷把這裏改成dd,畢竟那個d下面if用的太多
int v;
int sum;

struct d
{
	long long int x;
	long long int y;
}d[10000];
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>d[i].x>>d[i].y;
	}
	for(int i=1;i<=n;i++)
	{
		v=0;sum=0;//v==4則代表爲回收址,sum代表評分
		for(int j=1;j<=n;j++)
		{
			if(i==j) continue;
			//四個if上下左右
			if(d[i].x+1==d[j].x&&d[i].y==d[j].y)
			{
				v++;
			}
			if(d[i].x-1==d[j].x&&d[i].y==d[j].y)
			{
				v++;
			}
			if(d[i].y+1==d[j].y&&d[i].x==d[j].x)
			{
				v++;
			}
			if(d[i].y-1==d[j].y&&d[i].x==d[j].x)
			{
				v++;
			}
			//四個if對角線
			if(d[i].x+1==d[j].x&&d[i].y+1==d[j].y)
			{
				sum++;
			}
			if(d[i].x-1==d[j].x&&d[i].y-1==d[j].y)
			{
				sum++;
			}
			if(d[i].y+1==d[j].y&&d[i].x-1==d[j].x)
			{
				sum++;
			}
			if(d[i].y-1==d[j].y&&d[i].x+1==d[j].x)
			{
				sum++;
			}
		}
		if(v==4)//v==4滿足選址,數量++
		{
			if(sum==0)a++;
			if(sum==1)b++;
			if(sum==2)c++;
			if(sum==3)dd++;
			if(sum==4)e++;
		}
	}
	//輸出
	cout<<a<<endl;
	cout<<b<<endl;
	cout<<c<<endl;
	cout<<dd<<endl;
	cout<<e<<endl;
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章