Enum:Game of Lines(POJ 3668)
2016-01-25 22:35
477 查看
![](http://images2015.cnblogs.com/blog/798615/201601/798615-20160131143152755-109076778.gif)
画直线
题目大意:给定一些点集,要你找两点之间的连线不平行的有多少条
数据量比较少,直接暴力枚举,然后放到set查找即可
#include <iostream> #include <functional> #include <algorithm> #include <set> using namespace std; static struct _p_set { long double x, y; }points[201]; set<long double>lines; int gcd(const int, const int); int main(void) { int point_sum, cut; long double tmp; //pair<int,int>tmp; while (~scanf("%d", &point_sum)) { lines.clear(); for (int i = 0; i < point_sum; i++) scanf("%lf%lf", &points[i].x, &points[i].y); for (int i = 0; i < point_sum; i++) { for (int j = i + 1; j < point_sum; j++) { if ((points[i].x - points[j].x) != 0) tmp = (points[i].y - points[j].y) / (points[i].x - points[j].x); else tmp = (long double)INT_MAX; lines.insert(tmp); } } printf("%d\n", lines.size()); } return EXIT_SUCCESS; }
![](http://images2015.cnblogs.com/blog/798615/201601/798615-20160131143533239-1417110853.jpg)
在讨论版那里还找到了一种很新奇的做法,可以无视除数是0和精度的问题
#include <iostream> #include <functional> #include <algorithm> #include <set> using namespace std; static struct _p_set { int x, y; }points[201]; set<pair<int,int>>lines; int gcd(const int, const int); int main(void) { int point_sum, cut; pair<int,int>tmp; while (~scanf("%d", &point_sum)) { lines.clear(); for (int i = 0; i < point_sum; i++) scanf("%d%d", &points[i].x, &points[i].y); for (int i = 0; i < point_sum; i++) { for (int j = i + 1; j < point_sum; j++) { cut = gcd(points[i].y - points[j].y, points[i].x - points[j].x); tmp.first = (points[i].y - points[j].y) / cut; tmp.second = (points[i].x - points[j].x) / cut; lines.insert(tmp); } } printf("%d\n", lines.size()); } return EXIT_SUCCESS; } int gcd(const int a, const int b) { if (b == 0) return a; return gcd(b, a%b); }
![](http://images2015.cnblogs.com/blog/798615/201601/798615-20160131143832052-1638550383.jpg)
其实时间差不多
相关文章推荐
- [iOS]ARC和MRC下混编
- MySQL中哈希表
- [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析
- NOJ——1643阶乘除法
- 【推荐系统算法】DPMF(Dependent Probabilistic Matrix Factorization).上篇
- 微信公众号的一些事
- 从头认识java-18.4 java多线程原子性操作里面的坑
- 85. Maximal Rectangle
- python打印等腰三角形
- js的原型和对象
- XSD- XML Schema Definition模式定义
- nginx-optimize.conf优化配置注释
- 【CTSC2014】【BZOJ3555】企鹅QQ
- 认识OAuth签名使用的HMACSHA1哈希算法
- Springmvc与mybatis整合,log4j输出sql语句
- 针对Spring模块进行单元测试
- MSDN值得学习的地方
- HDU 2612 Find a way
- UIView没有暴露出来的CALayer功能
- Spark Streaming:缓存与持久化机制