画直线

  题目大意:给定一些点集,要你找两点之间的连线不平行的有多少条

  数据量比较少,直接暴力枚举,然后放到set查找即可

 #include <iostream>
#include <functional>
#include <algorithm>
#include <set> using namespace std; static struct _p_set
{
long double x, y;
}points[];
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 = ; i < point_sum; i++)
scanf("%lf%lf", &points[i].x, &points[i].y);
for (int i = ; i < point_sum; i++)
{
for (int j = i + ; j < point_sum; j++)
{
if ((points[i].x - points[j].x) != )
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;
}

  

  在讨论版那里还找到了一种很新奇的做法,可以无视除数是0和精度的问题

 #include <iostream>
#include <functional>
#include <algorithm>
#include <set> using namespace std; static struct _p_set
{
int x, y;
}points[];
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 = ; i < point_sum; i++)
scanf("%d%d", &points[i].x, &points[i].y);
for (int i = ; i < point_sum; i++)
{
for (int j = i + ; 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 == )
return a;
return gcd(b, a%b);
}

  

  其实时间差不多

Enum:Game of Lines(POJ 3668)的更多相关文章

  1. POJ 3668 Game of Lines (暴力,判重)

    题意:给定 n 个点,每个点都可以和另一个点相连,问你共有多少种不同斜率的直线. 析:那就直接暴力好了,反正数也不大,用set判重就好,注意斜率不存在的情况. 代码如下: #include <c ...

  2. Divide and conquer:Telephone Lines(POJ 3662)

    电话线 题目大意:一堆电话线要你接,现在有N个接口,总线已经在1端,要你想办法接到N端去,电话公司发好心免费送你几段不用拉网线,剩下的费用等于剩余最长电话线的长度,要你求出最小的费用. 这一看又是一个 ...

  3. Intersecting Lines - POJ 1269(判断平面上两条直线的关系)

    分析:有三种关系,共线,平行,还有相交,共线和平行都可以使用叉积来进行判断(其实和斜率一样),相交需要解方程....在纸上比划比划就出来了....   代码如下: ================== ...

  4. Intersecting Lines POJ 1269

    题目大意:给出两条直线,每个直线上的两点,求这两条直线的位置关系:共线,平行,或相交,相交输出交点. 题目思路:主要在于求交点 F0(X)=a0x+b0y+c0==0; F1(X)=a1x+b1y+c ...

  5. Telephone Lines POJ - 3662 (二分+spfa)

    Farmer John wants to set up a telephone line at his farm. Unfortunately, the phone company is uncoop ...

  6. 判断线段之间的关系(D - Intersecting Lines POJ - 1269 )

    题目链接:https://vjudge.net/contest/276358#problem/D 题目大意:每一次给你两条直线,然后问你这两条直线的关系(平行,共线,相交(输出交点)). 具体思路:先 ...

  7. Enum:EXTENDED LIGHTS OUT(POJ 1222)

    亮灯 题目大意:有一个5*6的灯组,按一盏灯会让其他上下左右4栈和他自己灯变为原来相反的状态,要怎么按才会把所有的灯都按灭? 3279翻版题目,不多说,另外这一题还可以用其他方法,比如DFS,BFS, ...

  8. Enum:Backward Digit Sums(POJ 3187)

    反过来推 题目大意:就是农夫和这只牛又杠上了(怎么老是牛啊,能换点花样吗),给出一行数(从1到N),按杨辉三角的形式叠加到最后,可以得到一个数,现在反过来问你,如果我给你这个数,你找出一开始的序列(可 ...

  9. POJ 3668 枚举?

    枚举两点,算一下斜率 sort一遍 判个重 输出解 25行 搞定- //By SiriusRen #include <cmath> #include <cstdio> #inc ...

随机推荐

  1. iOS: 如何正确的绘制1像素的线

    iOS 绘制1像素的线 一.Point Vs Pixel iOS中当我们使用Quartz,UIKit,CoreAnimation等框架时,所有的坐标系统采用Point来衡量.系统在实际渲染到设置时会帮 ...

  2. Latex 数学符号表

  3. jquery 隐藏表单元素

    1.html <label for="lbl" >电压等级:</label> <input class="easyui-combobox&q ...

  4. MySQL也有潜规则 – Select 语句不加 Order By 如何排序?

    今天遇到一个问题,有一个 Select 语句没有加 "Order By",返回的数据是不确定的. 这种问题碰到不止几次了.追根寻底, Select 语句如果不加 "Ord ...

  5. 【转】php 下载保存文件保存到本地的两种实现方法

    来源:http://www.jb51.net/article/40485.htm 第一种: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?php function d ...

  6. 备份Oracle数据库的脚本

    @echo off goto bakoracle :bakoracle echo. echo ★☆★  自动备份Oracle数据库   ★☆★ echo. set backpath=E:\Oracle ...

  7. iOS开发——网络篇——文件下载(NSMutableData、NSFileHandle、NSOutputStream)和上传、压缩和解压(三方框架ZipArchive),请求头和请求体格式,断点续传Range

    一.小文件下载 NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/resources/images/minion ...

  8. OSGi——面向服务架构规范简述

    OSGi——面向服务架构规范简述 去年我们组要开发一个新的产品,在讨论产品架构路线的时候,美国的架构师向大家征集了架构设计思想(我推荐了SCSF),有一位工程师向他推荐了OSGi.以前我还没有听过OS ...

  9. iOS设计中的“代理”

    “代理”--在iOS的开发设计中是一个非常重要的概念,同时又是十分基础的知识.所以,掌握“代理”势在必行! 以下,结合一个具体的例子,详细认识“代理”: 1, 图例解释: ①:定义两个文本输入框UIT ...

  10. MATLAB命令大全

    一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件. !dir& 可以在dos状态下查看.2.who 可以查看当前工作空间变量名, whos ...