连线游戏Game of Lines
以后,如果不是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
-1 1
-2 0
0 0
1 1
Sample Output
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相关推荐
- Unity 使用LineRenderer做画线游戏
前段时间公司要求做一款画线游戏,经历了许多坑之后,最终确定使用LineRenderer来做,然后又是一系列的坑,好在最后还是做出来了,给大家分享下代码: using System.Collection ...
- [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏
1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 2264 Solved: 1017 [Sub ...
- bzoj 1610: [Usaco2008 Feb]Line连线游戏
1610: [Usaco2008 Feb]Line连线游戏 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 2235 Solved: 997 [Subm ...
- Flow Free solver[连线游戏求解器]
Fast automated solver for Flow Free puzzles written in C. 用C语言编写的连线游戏的快速自动求解器. GIF of the final pro ...
- SVG波浪线(SVG wavy lines)
SVG波浪线(SVG wavy lines) 示例 HTML CSS JS 更多有趣示例 尽在知屋安砖社区 示例 HTML <svg version="1.1" xmlns= ...
- 【BZOJ】1610: [Usaco2008 Feb]Line连线游戏(几何)
http://www.lydsy.com/JudgeOnline/problem.php?id=1610 两种做法,一种计算几何,一种解析几何,但是计算几何的复杂度远远搞出解析集合(虽然精度最高) 计 ...
- 【游戏开发实战】TapTap物理画线游戏,教你使用Unity实现2D物理画线功能,看到我为你画的彩虹了吗
文章目录 一.前言 二.思考 三.验证我们的思考 1.创建物体挂组件 2.设置组件参数 3.运行测试 4.结论 四.撸起袖子写代码 1.Line.cs 2.LinesDrawer.cs 五.场景 六. ...
- TapTap物理画线游戏,使用Unity实现2D物理画线功能
实现效果如下: 本工程已上传到GitHub,感兴趣的同学可自行下载学习. GitHub地址:https://github.com/linxinfa/UnityPhysicsDrawLine 物理画线的 ...
- 【模考3】笨笨连线游戏
[题目描述] 一天,妈妈在黑板上画了一个大大的圆,然后又在圆弧上标上1,2,3,...,,2N个数.然后让笨笨任意选取一对数(两个不同的数)上连一条直线.然后再任意选取一对数,再边一条直线,但这条直线 ...
最新文章
- css :hover
- 「BZOJ1055」[HAOI2008] 玩具取名 - 区间动规 - 记忆化搜索
- 学习HTML5之塔克大战(详细记录)
- 多元化和专一化的关系
- 暴力优化解法+哈希解法——2016年第七届蓝桥杯省赛b组第八题 四平方和
- iOS相同字符串保存地址唯一
- TIOBE 6 月编程语言排行榜:Perl 成为 Python 过分炒作的牺牲品?
- 汉诺塔问题(递归之路)
- 过去一年对我帮助最大的三本书
- Robin广场舞案例实践分析之深入思考
- html5微信录音文件,微信H5录音实现
- 音视频 SDP 添加码率
- 2021-09-14
- 视频点播RTMP推流直播流媒体服务二次开发集成接口
- python中的numpy库有什么优缺点_python中关于numpy库的介绍
- 多模态 —— Learnable pooling with Context Gating for video classification
- 一个发现问题解决问题的思路
- arduino-esp32:基于TFT-eSPI库实现触摸显示屏
- win10音频服务器未修复,大神教你处理win10系统没声音音量图标红叉“音频服务未运行”的修复步骤...
- 第十届先进成图大赛计算机,【学科竞赛】2017年---第十届全国大学生“高教杯”先进成图技术与产品信息建模创新大赛...