计算几何
_Shmily
这个作者很懒,什么都没留下…
展开
-
2020 Multi-University Training Contest 3---- HDU--6798、Triangle Collision(计算几何)
题目链接 题面: 题意: 给一个等边三角形,初始时刻有一个点在其中,位置和速度矢量已知,这个球和三角形的边界发生完全弹性碰撞,且不记摩擦,求第k次碰撞发生的时间。k≤106 官方题解: 我们把空间看为一张这样的无限大的平面。 问题就变成了求小球做直线匀速运动,且与途中的边第k次相交是什么时候。 我们发现图中的边可以分为三组平行线。 我们把小球的速度和初始距离沿垂直于三组平行线的方向分解,那么可以在已知时间的情况下O(1)计算出这段时间内,小球与多少条边相交。分别计算三个方向分别相交了几次即可。由于题目原创 2020-08-25 09:19:33 · 103 阅读 · 0 评论 -
2020牛客暑期多校训练营(第三场)C、Operation Love(计算几何,叉积)
题目链接 题面: 题意: 题图给定的是右手,左手与右手完全对称。 每只手由20个点组成。 输入每次按照顺时针或者逆时针给定20个点,判断这些点组成的左右还是右手,其中给定的点是由题图的点旋转或者平移后保留6位小数得到,不会放大或者缩小。 题解: 选择(1,0),(1,6),(10,0)三个点叉积判断正负即可。 因为给定的点是处理后保留的六位小数,且每条边相差较大,eps设置大于1e-6,设置为1e-1即可。 代码: #include<iostream> #include<cstdio&g原创 2020-08-25 08:58:30 · 90 阅读 · 0 评论 -
2020 Multi-University Training Contest 1---- HDU--6762、Mow(半平面交、思维)
题目链接 题面: 题意: 给定一个凸多边形的草坪来割草,有两种方式: 人工割草,单位代价为A,可以随意在任何位置割草 半径为 r 的圆形割草机割草,单位代价为B,要求是割草机不能超过草坪的边界 求割草的最小花费。 题目保证 r 不等于给定凸包的内切圆半径。 题解: 如果人工割草更优,直接人工,面积是多边形面积; 否则的话,很显然只有多边形夹角那里割草机割不到的地方用人工,其他地方都用割草机。 如下图所示,我们将原多边形的每一条边向内部平移 r,构成一个半平面交。 红色:半平面交,也是割草机圆心的移动范围,原创 2020-08-25 08:57:48 · 201 阅读 · 0 评论 -
2020 Multi-University Training Contest 1---- HDU--6759、Leading Robots (可见直线、直线交)
题目链接 题面: 题意: 在一个水平数轴上有n个点,给定每个点的坐标和加速度,每个点的初始速度均为0,这些点同时开始向右运动,可向右延伸至无穷远。问有多少个点在某一时刻成为过最右边的点,若最右边的点是两点并列,那么他们都不算最右边的点。 题解: 我们写出每个点的 位移–时间 表达式,其中位移(x 轴)为纵轴,时间( t 轴)为横轴。 其中x=x0+12at2x=x_0+\frac{1}{2}at^2x=x0+21at2 我们发现,做出 n 个这样的图像(只保留 t 的非负半轴上的图像),最终从 x轴正原创 2020-08-25 08:55:36 · 125 阅读 · 0 评论 -
2020牛客暑期多校训练营(第四场)F、Finding the Order (计算几何)
题目链接 题面: 题意: 给定ac,ad,bc,bd 的长度,问是AB//CD ,还是AB//DC 题解: 根据 梯形对角线长度和一定大于两腰长度和。 #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #include<cmath> #include<string> #include<原创 2020-08-25 08:50:22 · 82 阅读 · 0 评论 -
2020牛客暑期多校训练营(第二场) K、Keyboard Free (计算几何,期望)
题目链接 题面: 题意: 给定三个同心圆,在这三个圆上分别选择一点,然后问这三点组成的三角形的面积的期望值。 官方题解: 题解: 就是说A点任意确定即可,然后我们可以等分一个半圆枚举B点,求出C点到AB距离的期望。 一开始是写出AB的表达式,然后再用距离公式求出期望,发现。。。积分积不动。 参考这张图。 A点是确定一点,B点是等分枚举点。 设当前B点的坐标为(r2 cosα,r2 sinα) 我们转换坐标系,其中x轴垂直于AB。 我们设D为最大圆上一点,坐标为(r3 cosβ,r3 sinβ),那么D原创 2020-08-25 08:43:35 · 257 阅读 · 3 评论 -
2020牛客暑期多校训练营(第二场) B、Boundary (暴力枚举)
题目链接 题面: 题意: 给定n个点,对于一个过原点的圆,求出最多能经过多少个点。 官方题解: 我的题解: 两维枚举 i,j ,对于一个固定的 i 来说,看看后面有多少个点是共圆的。 不在一条直线上的三点可以确定一个圆。 ( 0 , 0 ),p [ i ] , p [ j ] 即可确定一个圆,只需要记录这个圆的圆心即可(因为(0,0)点已经确定,一个圆心唯一确定一条半径) 剩下的就是板子啦。 代码: #include<iostream> #include<cstdio> #inc原创 2020-08-25 08:38:53 · 124 阅读 · 0 评论 -
P3194 [HNOI2008]水平可见直线 (直线交)
题目链接 题面: 题解: 我们先按照直线的斜率从小到大排序,斜率相同按照b从大到小排序。 现在考虑按照斜率排好序的三条直线 i - 1 ,i ,i +1 若 i 与 i + 1 的交点在 i 与 i - 1 交点的左侧,那么 i 不可见。 代码: #include<iostream> #include<cstdlib> #include<cstdio> #include<algorithm> #include<cstring> #include&原创 2020-08-25 08:03:02 · 85 阅读 · 0 评论