Uva OJ 10167 birthday cake
来源:互联网 发布:ios10.2.1网络验证失败 编辑:程序博客网 时间:2024/06/17 16:03
直接枚举法
蛋糕的半径为100,所以 a*x+b*y=0 中 -100<=x,y<=100
所以 就只用枚举 for(int i=-100;i<100;i++) for(int j=-100;j<=100;j++) 用此两层循环枚举a、b
然后判断此a、b确定的直线两侧是否都有n个樱桃;
此时必须分三种情况:
1、直线上侧;
2、直线下侧;
3、直线上;(之前就是没考虑这种情况,导致wa)
当落在直线上时,直线两侧就不可能都有n个樱桃,必须排除此情况!
我的代码:
#include<iostream>
#include<stdio.h>
using namespace std;
typedef struct
{
int x,y;
}point;
int Is_yice(point point1,int a,int b)
{
if((point1.x * a + b * point1.y) <0) return 0;
if((point1.x * a + b * point1.y)==0) return -1;
if((point1.x * a + b * point1.y)>0) return 1;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF) {
if(n==0) break;
n=2*n;
point point[100];
int num1=0,num2=0;
for(int i=0;i<n;i++)
{
scanf("%d%d",&point[i].x,&point[i].y);
}
int ok;
for(int i=-100;i<=100;i++)
{
for(int j=-100;j<=100;j++)
{
ok=0;
num1=num2=0;
for(int k=0;k<n;k++)
{
int c=Is_yice(point[k],i,j);
if(c==1) num1++;
else if(c==0) num2++;
else break;
}
if(num1==n/2 && num2==n/2)
{
printf("%d %d\n",i,j);
ok=1;break;
}
}
if(ok==1) break;
}
}
return 0;
}
- Uva OJ 10167 birthday cake
- UVa 10167 - Birthday Cake
- UVa:10167-birthday cake
- UVA 10167 Birthday Cake
- uva 10167 - Birthday Cake
- UVa 10167 Birthday Cake
- uva 10167 - Birthday Cake
- UVa 10167 Birthday Cake
- uva 10167 - Birthday Cake
- UVa 10167 - Birthday Cake
- uva-10167 - Birthday Cake
- UVA 10167 - Birthday Cake
- uva 10167 Birthday Cake
- UVa 10167Birthday Cake
- uva 10167 Birthday Cake
- uva 10167 Birthday Cake
- UVA 10167 Birthday Cake
- uva 10167--birthday cake
- cisco 设置密码的时候,要注意空格
- 关于Flash的鼠标跟随
- Lua文件函数调用
- oracle update 多表关联
- Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 错误解决
- Uva OJ 10167 birthday cake
- cortex-A8上3G模块的支持
- ODI11g调用DBLink时报ORA-28267: Invalid NameSpace Value错误
- UTF-8转GB2312
- JavasSript中类的实现
- 配置django连接SQL Server 2005
- core文件设置
- spring中的装配集合
- 数据一致性: 时间戳策略