以后,如果不是A+B问题,我尽量每题都写,聚沙成塔

1610: [Usaco2008 Feb]Line连线游戏

Time Limit: 5 Sec   Memory Limit: 64 MB
Submit: 2080   Solved: 928
[ Submit][ Status][ Discuss]

Description

Farmer John最近发明了一个游戏,来考验自命不凡的贝茜。游戏开始的时 候,FJ会给贝茜一块画着N (2 <= N <= 200)个不重合的点的木板,其中第i个点 的横、纵坐标分别为X_i和Y_i (-1,000 <= X_i <=1,000; -1,000 <= Y_i <= 1,000)。 贝茜可以选两个点画一条过它们的直线,当且仅当平面上不存在与画出直线 平行的直线。游戏结束时贝茜的得分,就是她画出的直线的总条数。为了在游戏 中胜出,贝茜找到了你,希望你帮她计算一下最大可能得分。

Input

* 第1行: 输入1个正整数:N

* 第2..N+1行: 第i+1行用2个用空格隔开的整数X_i、Y_i,描述了点i的坐标

Output

第1行: 输出1个整数,表示贝茜的最大得分,即她能画出的互不平行的直线数

Sample Input

4
-1 1
-2 0
0 0
1 1

Sample Output

* 第1行: 输出1个整数,表示贝茜的最大得分,即她能画出的互不平行的直线数

HINT

4 输出说明: 贝茜能画出以下4种斜率的直线:-1,0,1/3以及1。

斜率水题,直接上代码

var
n,i,j,y,x,ans,tot:longint;
flag,bl:boolean;
k:array[-1..20001]of double;
a,b:array[-1..201]of longint;
procedure qsort(l,r:longint);
var i,j:longint; mid,x:double;
begini:=l;j:=r;mid:=k[(i+j)shr 1];repeatwhile k[i]<mid do inc(i);while k[j]>mid do dec(j);if i<=j thenbeginx:=k[i];k[i]:=k[j];k[j]:=x;inc(i);dec(j);end;until i>j;if i<r then qsort(i,r);if j>l then qsort(l,j);
end;
beginreadln(n);for i:=1 to n dobeginreadln(a[i],b[i]);end;for i:=1 to n dofor j:=i+1 to n dobeginif a[i]=a[j] then//横坐标相同,即x轴平行,这点要判断一下,否则除数将为0beginflag:=true;endelse if b[i]=b[j] then//纵坐标相同,这个可要可不要beginbl:=true;endelsebegininc(tot);x:=a[i]-a[j];y:=b[i]-b[j];k[tot]:=y/x;end;end;qsort(1,tot);//判断种类问题,一般用到快排ans:=1;//因为n条斜率,最多有n条不同,最少有1条不同,又只能判断n-1次,因此将ans的初值定为1for i:=2 to tot dobeginif k[i]-k[i-1]<>0 thenbegin//writeln(k[i]:0:2);inc(ans);end;end;if flag then inc(ans);if bl then inc(ans);writeln(ans);
end.

总结:

1、斜率等坐标问题,必须考虑除数为0的情况。

2、判断是否重复(种类问题)可用类似桶排序的方法,但对于此题,会使桶排序的数组下标为实数,因此选用快排

连线游戏Game of Lines相关推荐

  1. Unity 使用LineRenderer做画线游戏

    前段时间公司要求做一款画线游戏,经历了许多坑之后,最终确定使用LineRenderer来做,然后又是一系列的坑,好在最后还是做出来了,给大家分享下代码: using System.Collection ...

  2. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏

    1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 2264  Solved: 1017 [Sub ...

  3. bzoj 1610: [Usaco2008 Feb]Line连线游戏

    1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 2235  Solved: 997 [Subm ...

  4. Flow Free solver[连线游戏求解器]

    Fast automated solver for Flow Free puzzles written in C.  用C语言编写的连线游戏的快速自动求解器. GIF of the final pro ...

  5. SVG波浪线(SVG wavy lines)

    SVG波浪线(SVG wavy lines) 示例 HTML CSS JS 更多有趣示例 尽在知屋安砖社区 示例 HTML <svg version="1.1" xmlns= ...

  6. 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏(几何)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1610 两种做法,一种计算几何,一种解析几何,但是计算几何的复杂度远远搞出解析集合(虽然精度最高) 计 ...

  7. 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗

    文章目录 一.前言 二.思考 三.验证我们的思考 1.创建物体挂组件 2.设置组件参数 3.运行测试 4.结论 四.撸起袖子写代码 1.Line.cs 2.LinesDrawer.cs 五.场景 六. ...

  8. TapTap物理画线游戏,使用Unity实现2D物理画线功能

    实现效果如下: 本工程已上传到GitHub,感兴趣的同学可自行下载学习. GitHub地址:https://github.com/linxinfa/UnityPhysicsDrawLine 物理画线的 ...

  9. 【模考3】笨笨连线游戏

    [题目描述] 一天,妈妈在黑板上画了一个大大的圆,然后又在圆弧上标上1,2,3,...,,2N个数.然后让笨笨任意选取一对数(两个不同的数)上连一条直线.然后再任意选取一对数,再边一条直线,但这条直线 ...

最新文章

  1. css :hover
  2. 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索
  3. 学习HTML5之塔克大战(详细记录)
  4. 多元化和专一化的关系
  5. 暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和
  6. iOS相同字符串保存地址唯一
  7. TIOBE 6 月编程语言排行榜:Perl 成为 Python 过分炒作的牺牲品?
  8. 汉诺塔问题(递归之路)
  9. 过去一年对我帮助最大的三本书
  10. Robin广场舞案例实践分析之深入思考
  11. html5微信录音文件,微信H5录音实现
  12. 音视频 SDP 添加码率
  13. 2021-09-14
  14. 视频点播RTMP推流直播流媒体服务二次开发集成接口
  15. python中的numpy库有什么优缺点_python中关于numpy库的介绍
  16. 多模态 —— Learnable pooling with Context Gating for video classification
  17. 一个发现问题解决问题的思路
  18. arduino-esp32:基于TFT-eSPI库实现触摸显示屏
  19. win10音频服务器未修复,大神教你处理win10系统没声音音量图标红叉“音频服务未运行”的修复步骤...
  20. 第十届先进成图大赛计算机,【学科竞赛】2017年---第十届全国大学生“高教杯”先进成图技术与产品信息建模创新大赛...

热门文章

  1. 为什么下载小电影时,进度经常会卡在99%?
  2. html小米官网轮播图js,小米官网轮播图js+css3+html实现
  3. Android笔记之SeekBar的使用及问题
  4. 【WinSCP】强大的可视化远程文件传输 、管理工具 (支持多种协议,支持电脑与手机)
  5. 三百六十行对比(旧社会)
  6. 中国珍珠养殖产业发展现状分析,淡水养殖仍然占据主导地位「图」
  7. 国际会议英语口语100句
  8. submit() 吃异常
  9. 2018-2019(1)教学随笔
  10. python 实现 PDF 页面横向纵向旋转