uva10167--枚举

来源:互联网 发布:团团 共青团 知乎 编辑:程序博客网 时间:2024/06/04 18:14

题意:

对于给出的坐标,用一条横线ax+by=0,将坐标面分成部分,每部分占有一半的坐标。

思路:

对于每次枚举出来的a和b,用零点存在定理,分别判断两部分的点的个数,直到符合要求。顺便说一下,对于一组数据的解并不是唯一的。

#include<iostream>using namespace std;struct {int x,y;}p[1000];int main(){int n;while(scanf("%d",&n)&&n){for(int i=0;i<2*n;i++)cin>>p[i].x>>p[i].y;int a,b,flag=1;for(a=-500;a<=500&&flag;a++)for(b=-500;b<=500&&flag;b++){int l=0,r=0;for(int i=0;i<2*n;i++){if(a*p[i].x+b*p[i].y<0) l++; if(a*p[i].x+b*p[i].y>0) r++;}if(l==r&&l==n) {flag=0;cout<<a<<" "<<b<<endl;break;}}}return 0;}


原创粉丝点击