题意:给出几个点的位置,问一条直线最多能连过几个点。

只要枚举每两个点组成的直线,然后找直线上的点数,更新最大值即可。

我这样做过于暴力,2.7s让人心惊肉跳。。。应该还能继续剪枝的,同一直线找过之后就可以剪掉了。

代码:

  1. /*
  2. * Author: illuz <iilluzen@gmail.com>
  3. * Blog: http://blog.csdn.net/hcbbt
  4. * File: uva270.cpp
  5. * Lauguage: C/C++
  6. * Create Date: 2013-08-25 10:54:55
  7. * Descripton: UVA 270 Lining Up, greed, enumeration, brute force
  8. */
  9. #include <cstdio>
  10. #include <cstdlib>
  11. #include <cstring>
  12. #include <cmath>
  13. #include <iostream>
  14. #include <list>
  15. #include <vector>
  16. #include <map>
  17. #include <set>
  18. #include <deque>
  19. #include <queue>
  20. #include <stack>
  21. #include <utility>
  22. #include <algorithm>
  23. using namespace std;
  24. #define rep(i, n) for (int i = 0; i < (n); i++)
  25. #define repu(i, a, b) for (int i = (a); i < (b); i++)
  26. #define repf(i, a, b) for (int i = (a); i <= (b); i++)
  27. #define repd(i, a, b) for (int i = (a); i >= (b); i--)
  28. #define swap(a, b) {int t = a; a = b; b = t;}
  29. #define mc(a) memset(a, 0, sizeof(a))
  30. #define ms(a, i) memset(a, i, sizeof(a))
  31. #define sqr(x) ((x) * (x))
  32. #define FI(i, x) for (typeof((x).begin()) i = (x).begin(); i != (x).end(); i++)
  33. typedef long long LL;
  34. typedef unsigned long long ULL;
  35.  
  36. /****** TEMPLATE ENDS ******/
  37.  
  38. const int MAXN = 710;
  39. int cas, n;
  40. char str[100];
  41. pair<int, int> p[MAXN];
  42.  
  43. int main() {
  44. scanf("%d\n", &cas);
  45. rep(c, cas) {
  46. n = 0;
  47. while (gets(str) && strlen(str)) {
  48. // puts(str);
  49. sscanf(str, "%d%d", &p[n].first, &p[n].second);
  50. n++;
  51. }
  52. int Max = 1, sum;
  53. rep(i, n) repu(j, i + 1, n) {
  54. sum = 2;
  55. int tx = p[i].first - p[j].first, ty = p[i].second - p[j].second;
  56. rep(k, n) {
  57. if (k == i || k == j) continue;
  58. if ((p[k].first - p[i].first) * ty == (p[k].second - p[i].second) * tx)
  59. sum++;
  60. }
  61. if (sum > Max)
  62. Max = sum;
  63. }
  64. if (c) printf("\n");
  65. printf("%d\n", Max);
  66. }
  67. return 0;
  68. }

UVA 270 Lining Up 共线点 暴力的更多相关文章

  1. UVA 270 Lining Up (几何 判断共线点)

     Lining Up  ``How am I ever going to solve this problem?" said the pilot. Indeed, the pilot was ...

  2. UVA.129 Krypton Factor (搜索+暴力)

    UVA.129 Krypton Factor (搜索+暴力) 题意分析 搜索的策略是:优先找长串,若长串不合法,则回溯,继续找到合法串,直到找到所求合法串的编号,输出即可. 注意的地方就是合法串的判断 ...

  3. UVA.10986 Fractions Again (经典暴力)

    UVA.10986 Fractions Again (经典暴力) 题意分析 同样只枚举1个,根据条件算出另外一个. 代码总览 #include <iostream> #include &l ...

  4. UVa 270 & POJ 1118 - Lining Up

    题目大意:给一些点,找出一条直线使尽可能多的点在这条直线上,求这条直线上点的个数. 以每一个点为原点进行枚举,求其它点的斜率,斜率相同则说明在一条直线上.对斜率排序,找出斜率连续相等的最大长度. #i ...

  5. uva 10825 - Anagram and Multiplication(暴力)

    题目链接:uva 10825 - Anagram and Multiplication 题目大意:给出m和n,要求找一个m位的n进制数,要求说该数乘以2~m中的随意一个数的结果是原先数各个位上数值的一 ...

  6. UVa 11210 Chinese Mahjong (暴力,递归寻找)

    题意:这个题意.有点麻烦,就是说给定13张牌,让你求能“听”的牌.(具体的见原题) 原题链接: https://uva.onlinejudge.org/index.php?option=com_onl ...

  7. UVa 11059 最大乘积 java 暴力破解

    题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...

  8. UVa 817 According to Bartjens (暴力,DFS)

    题意:给出一个数字组成的字符串,然后在字符串内添加三种运算符号 * + - ,要求输出所有添加运算符并运算后结果等于2000的式子. 所有数字不能有前导0, 且式子必须是合法的. 析:这个题很明显的暴 ...

  9. UVA 10976 分数拆分【暴力】

    题目链接:https://vjudge.net/contest/210334#problem/C 题目大意: It is easy to see that for every fraction in ...

随机推荐

  1. CD key 生成

    题目描述如下: 某欧软件需要实现简易的CD-KEY算法,输入3个正整数,以空格隔开,根据者3个正整数生成的cd-key字符串.输出格式:xxxx-xxxx-xxxx-xxyy. 包含16个字符,以短划 ...

  2. HOOK API(二)—— HOOK自己程序的 MessageBox

    HOOK API(二) —— HOOK自己程序的 MessageBox 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己程 ...

  3. Problem E: Product

    Problem E: ProductTime Limit: 1 Sec Memory Limit: 128 MBSubmit: 18 Solved: 14[Submit][Status][Web Bo ...

  4. poj 3243 Clever Y 高次方程

    1 Accepted 8508K 579MS C++ 2237B/** hash的强大,,还是高次方程,不过要求n不一定是素数 **/ #include <iostream> #inclu ...

  5. java从c struct传来的字节数组中取值

    public int getInt(byte[] array,int index) { return (array[index]  & 0xff)  | (array[index + 1] & ...

  6. LintCode-两数之和

    题目描述: 给一个整数数组,找到两个数使得他们的和等于一个给定的数target. 你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标.注意这里下标的范围是1到n,不是以 ...

  7. 帝国cms语句调用

    帝国cms系统,灵动标签,有着非常强大的数据调用功能.这里为广大菜鸟站长普及一下. 我们来看这段代码. [e:loop={,,}] <li>·<a target="_bla ...

  8. Python正则表达式一: 基本使用方法

    学习python的正则表达式,主要有两个方面学习: 第一,学习如何写正则表达式,主要是掌握其语法规范.正则表达式的语法规范是通用的,对各种开发语言都是一致的. 第二,学习如何使用正则表达式,也就是掌握 ...

  9. ajax 中文乱码

     ajax 中文乱码  Firefox 正常,IE 有问题是 解决办法 data:{"name":name,"number":number,"card ...

  10. 汇编语言学习——第二章 寄存器(CPU工作原理)

    1.一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 区别: 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个 ...