热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

newcoder假日团队赛7K-GameofLines

链接:https:ac.nowcoder.comacmcontest997K时间限制:CC++1秒,其他语言2秒空间限制:CC++32768K,其他语言65

链接:https://ac.nowcoder.com/acm/contest/997/K

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

Farmer John has challenged Bessie to the following game: FJ has a board with dots marked at N (2 ≤ N ≤ 200) distinct lattice points. Dot i has the integer coordinates Xi and Yi (-1,000 ≤ Xi ≤ 1,000; -1,000 ≤ Yi ≤ 1,000).
Bessie can score a point in the game by picking two of the dots and drawing a straight line between them; however, she is not allowed to draw a line if she has already drawn another line that is parallel to that line. Bessie would like to know her chances of winning, so she has asked you to help find the maximum score she can obtain.

输入描述:

* Line 1: A single integer: N
* Lines 2..N+1: Line i+1 describes lattice point i with two space-separated integers: Xi and Yi.

输出描述:

* Line 1: A single integer representing the maximal number of lines Bessie can draw, no two of which are parallel.
示例1

输入

4
-1 1
-2 0
0 0
1 1

输出

4

说明

Bessie can draw lines of the following four slopes: -1, 0, 1/3, and 1.



排个序再特判一下就出来了
 1 #include 
 2 #include 
 3   
 4 using namespace std;
 5   
 6 typedef long long ll;
 7 typedef char ch;
 8 typedef double db;
 9   
10 void quick_sort(double q[],int l,int r)
11 {
12     if(l >= r) return;
13  
14     int i=l-1,j=r+1;
15     double x=q[(l + r) >> 1];
16     while(i<j){
17         do i ++; while (q[i] < x);
18         do j --; while (q[j] > x);
19         if(i < j) swap(q[i] , q[j]);
20     }
21     quick_sort(q, l, j);
22     quick_sort(q, j + 1, r);
23 }
24  
25 int main()
26 {
27     double x[300] = {0};
28     double y[300] = {0};
29     double a[50000] = {0};
30     int marker = 0;
31     int n, score = 0;
32       
33     cin >> n;
34     for(int j = 0;j)
35     {
36         scanf("%lf %lf",&x[j],&y[j]);
37     }
38     int L = 0;
39     for(int j = 0;j1;j++)
40     {
41         for(int k = j+1;k)
42         {
43             if(x[j] == x[k])
44             {
45                 marker = 1;
46             }
47             else
48             {
49                 a[L++] = double(y[k]-y[j])/(x[k]-x[j]);
50             }
51         }
52     }
53         //cout<
54     quick_sort(a,0,L-1);
55          
56         /*for(int j = 0;j57         {
58             cout<59         }*/
60     if(n > 2)
61     {
62             for(int j = 0;j1 ;j++)
63         {
64             if(a[j]!=a[j+1]) score++;
65         }
66         score++;
67     }
68     if(marker)
69     {
70         score+=1;
71            // cout<<'!';
72     }
73     if(L == 0) score--;
74     cout<endl;
75     return 0;
76 }

 

  之前因为有个暴力+1

  所以当所有点在一条直线上且斜率不存在的时候会重复计数

  这个故事告诉我们不能随便暴力+

  错误代码(供自己反省)

 1 #include 
 2 #include 
 3 using namespace std;
 4 
 5 typedef long long ll;
 6 typedef char ch;
 7 typedef double db;
 8 
 9 int cmp(const void * a, const void * b) 
10 { 
11       return((*(double*)a-*(double*)b>0)?1:-1); 
12 }
13 
14 double x[10005] = {0};
15 double y[10005] = {0};
16 double l[10005] = {0}; 
17 
18 int main()
19 {
20     int marker = 0;
21     int n = 0 , score = 0;
22     
23     cin >> n;
24     for(int i = 0;i)
25     {
26         cin>>x[i]>>y[i];
27     }
28         int i = 0;
29         for(int j = 1;j<=n-1;j++)
30         {
31             for(int k = j+1;k)
32             {
33                 if(x[j] == x[k])
34                 {
35                     marker = 1;
36                 }
37                 else
38                 {
39                     l[i] = double(y[k]-y[j])/(x[k]-x[j]);
40                     i++;
41                 }
42             }
43         }
44         //cout<
45         qsort(l,i,sizeof(l[0]),cmp);
46         /*
47         for(int j = 0;j48         {
49             cout<50         }
51         */
52         if(n > 2)
53         {
54             for(int j = 0;j1 ;j++)
55             {
56                 if(l[j]!=l[j+1])score+=1;
57             }
58             score++;
59         }
60         if(marker)
61         {
62             score+=1;
63             //cout<<'!';
64         }
65         cout<endl;
66     return 0;
67 }
View Code

推荐阅读
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
author-avatar
学习小菜鸟
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有