您的位置:首页 > 其它

uva 10167 Birthday Cake

2015-12-03 21:57 531 查看
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;
}心得:没思路时,应静下心来手算几组数据并试着用模拟,暴力枚举,隐式图搜索等方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: