uva 10167 Birthday Cake 枚举
来源:互联网 发布:加入淘宝充值平台赚钱 编辑:程序博客网 时间:2024/05/22 09:07
题目大意:
一块蛋糕上有若干个樱桃,求出一条直线,平分蛋糕上的樱桃。
分析:
题目中写出A和B的范围知识-500到500之间的整数,樱桃的坐标是整数,范围也比较小,可以直接暴力枚举A和B。然后依次判断每个点在线段的上面还是下面,方法直接把点代到直线方程就可以,若大于0,说明在直线上面。当等于0时点在直线上,直接break。
还有就是当A和B其中一个等于0时,只需要判断一次就可以了,因为无论另外一个数是多少,结果都是代表x轴或y轴的直线。也是因为这一点,没有必要加上 if(i==0&&j==0) continue这个判断。
#include<iostream>#include<cstdio>#include<queue>#include<cstring>#include<string>#include<cstring>#include<math.h>#include<algorithm>#include<assert.h>#include<stdlib.h>#include<stack>#include<vector>#include<map>#include<set>#define pi acos(-1.0)typedef long long LL;using namespace std;int main(){ int n; int x[110]; int y[110]; int xx,yy; while(scanf("%d",&n)&&n!=0) { int flag=0; for(int i=0;i<n+n;i++) { scanf("%d%d",&x[i],&y[i]); } for(int i=-500;i<=500;i++) { for(int j=-500;j<=500;j++) { int down=0,up=0; for(int s=0;s<n+n;s++) { if(i*x[s]+j*y[s]==0) break; if(i*x[s]+j*y[s]<0) down++; else up++; if(down>n||up>n) break; } if(down==up&&down==n) /* 这个地方注意一下,要判断down是否等于n 因为前面循环break的时候,可能是down和up 正好相等,但点还没有枚举完。 */ { xx=i; yy=j; flag=1; break; } } if(flag) break; } printf("%d %d\n",xx,yy); } return 0;}
0 0
- 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 -birthday cake(暴力枚举)
- 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
- Java对象序列化(Object Serialization)
- 【笨木头Lua专栏】基础补充05:迭代器番外篇
- 判断元素重复
- 使用jni技术进行android应用签名信息核查及敏感信息保护
- Permutation Sequence
- uva 10167 Birthday Cake 枚举
- Machine Learning Foundations(机器学习基石) By Hsuan-Tien Lin (林轩田) week1 笔记
- Leetcode--Valid Number
- 关于信号与系统
- 单词博弈C++版本
- 机器学习之线性回归模型
- 通信常识:波特率、数据传输速率与带宽的相互关系
- 弱菜,何去何从
- mysql学习