uva 10167 Birthday Cake

来源:互联网 发布:淘宝自然搜索排名 编辑:程序博客网 时间:2024/05/17 21:49

简单枚举,题意就是枚举一条直线,将点平分到直线两边,但都必须在蛋糕上。答案有多中。

#include<iostream>#include<stdio.h>#include<cmath>using namespace std;typedef struct zuobiao{    int x,y;} Point;Point p[110];void c(int t){    int a,b;    for(a=-500; a<=500; a++)        for(b=-500; b<=500; b++)        {            int left=0,right=0;            for(int i=0; i<2*t; i++)            {                int x=a*p[i].x+b*p[i].y;                if(x>0)left++;                else if(x<0)right++;                else break;                if(left==right&&left==t)                {                    cout<<a<<" "<<b<<endl;                    return;                }            }        }}int main(){    int t;    while(cin>>t,t)    {        t*=2;        int p_num=0;        for(int i=0; i<t; i++)            cin>>p[i].x>>p[i].y;        for(int i=0; i<t; i++)        {            if(p[i].x>=100||p[i].x<=-100||p[i].y<=-100||p[i].y>=100)                continue;            p[p_num++]=p[i];        }        t=p_num/2;        c(t);    }    return 0;}
还有一种随机数的方法。

#include<iostream>#include<stdio.h>#include<cstdlib>#include<ctime>#include<cmath>using namespace std;typedef struct zuobiao{    int x,y;} Point;Point p[110];void c(int t){    srand((unsigned)time(NULL));    while(1)    {        int a=-500+rand()%1001,b=-500+rand()%1001;        int left=0,right=0;        for(int i=0; i<2*t; i++)        {            int x=a*p[i].x+b*p[i].y;            if(x>0)left++;            else if(x<0)right++;            else break;            if(left==right&&left==t)            {                cout<<a<<" "<<b<<endl;                return;            }        }    }}int main(){    int t;    while(cin>>t,t)    {        t*=2;        int p_num=0;        for(int i=0; i<t; i++)            cin>>p[i].x>>p[i].y;        for(int i=0; i<t; i++)        {            if(p[i].x>=100||p[i].x<=-100||p[i].y<=-100||p[i].y>=100)                continue;            p[p_num++]=p[i];        }        t=p_num/2;        c(t);    }    return 0;}



原创粉丝点击