uva 10167 Birthday Cake

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/HYNU_zhizuzhe/article/details/50166731

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=19398

题意:给出一些点的坐标,找一条过原点的直线把这些点平分(注意不能切到cherries)

#include<iostream>
#include<cstdio>
using namespace std;

#define f(x,y) (A*x+B*y)

struct Point{
	int x,y;
	Point() {}
}P[110];

int main()
{
	int n;
	while(scanf("%d",&n)!=EOF&&n)
	{
		int i,A,B,flag=0;
		for(i=0;i<2*n;i++) scanf("%d%d",&P[i].x,&P[i].y);
		for(A=-500;A<=500;A++) {
			for(B=-500;B<=500;B++){
				int cou=0;
				for(i=0;i<2*n;i++) {
					int t=f(P[i].x,P[i].y);
					if(t==0) {cou=1; break;}
					if(t>0) cou++;
					if(t<0) cou--;
				}
				if(cou==0) {flag=1; break;}
			}
			if(flag) break;
		}
		printf("%d %d\n",A,B);
	}
	return 0;
}
心得:没思路时,应静下心来手算几组数据并试着用模拟,暴力枚举,隐式图搜索等方法

猜你喜欢

转载自blog.csdn.net/HYNU_zhizuzhe/article/details/50166731
今日推荐