NOIP2018 模拟测试 day2 神犇大战

版权声明:欢迎转载欢迎评论! https://blog.csdn.net/rabbit_ZAR/article/details/83018674

题目:
神犇大战

轰地一声,applepi和sideman的大战开始了。
为了躲避手持凳子的applepi,sideman使出瞬移绝技在机房里到处乱窜。
不幸的是,applepi也有一双神眼,能够统计sideman在乱窜中会在哪些地方出现,以及出现的次数。
于是他就可以抄起板凳往次数最多的那个位置砸去,毕竟这样砸中的几率比较高嘛。
但是由于高一的新同学也在机房的某些位置,applepi不能砸向高一同学所在的位置。

思路:
排个序,然后遍历一遍,再遍历一遍高一同学的位置判断下。
暴力复杂度O(n^2)可过的。

代码:

#include<bits/stdc++.h>
using namespace std;

struct Pair{
	int x,y,z;
	Pair(int z=0){}
	Pair(int xx,int yy,int z=0) {
		x=xx,y=yy;
	}
	bool operator <(const Pair& oth) const {
		return z>oth.z||(z==oth.z&&(x+y<oth.x+oth.y||(x+y==oth.x+oth.y&&x<oth.x)));
	}
};

#define maxn 1000
#define read(x) scanf("%d",&x);

int n,m;
Pair a[maxn+5];
Pair b[maxn+5];
int cnt;
bool c[maxn+5];

int main() {
	read(n);read(m);
	for(int i=1;i<=n;i++) {
		int x,y;
		read(x);read(y);
		a[i]=Pair(x,y);
	}
	sort(a+1,a+n+1);
	b[0].x=-1;
	for(int i=1;i<=n;i++) {
		if(a[i].x==b[cnt].x&&a[i].y==b[cnt].y) b[cnt].z++;
		else b[++cnt]=a[i],b[cnt].z=1;
	}
	sort(b+1,b+cnt+1);
	for(int i=1;i<=m;i++) {
		read(a[i].x);read(a[i].y);
		for(int j=1;j<=cnt;j++) {
			if(a[i].x==b[j].x&&a[i].y==b[j].y) {
				c[j]=1;
			}
		}
	}
	for(int i=1;i<=cnt;i++) {
		if(!c[i]) {
			printf("%d %d",b[i].x,b[i].y);
			break;
		}
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/rabbit_ZAR/article/details/83018674
今日推荐