首页 > 代码库 > 计算几何学习3

计算几何学习3

完成了题表中的前三部分

(由于二、三部分的内容比较少

 

一。

poj 2826

用两条木板来盛雨水 问能接到多少

线段交 分类讨论

1)只要有一条水平 就不能盛水

2)没有交点 不能盛水

3)有交点 但是交点水平上方 没有分别两个端点不能盛水

4)*有两个端点 但是上侧长的一根覆盖了另一条短的 不能盛水

如果都能满足 就利用交点 算一个三角形面积即可

**学习到最后输出浮点数可以 ans + eps 防止出现 - 0.000的情况 或者需要特判一发

 

poj 3347

给出一种放置正方形序列的方式(两条边与x轴呈45度夹角 一个顶点落在x轴上) 按顺序放置

并规定放置规则 落在x上的顶点尽量靠左 且不和前面任何一个正方形相交 问放完后 有多少正方形能从上面被看到

 

先乘 根号二 将坐标化为整数

之后其实就是线段覆盖问题 每个正方形有用的只有放置顶点 和 左右边界

每个正方形只会被边长比他大的覆盖

最后找有哪些未被完全覆盖即可

*初始化错了一发

 

二 。凸包(未包含旋转卡壳

验证了一发 凸包板子 和 极角序板子

除了模板题 剩下的题有

poj 1873

二进制枚举 加 凸包 (学习到四舍五入的方法= = (int) (x + 0.5)  int 正实数是去零的)

 

poj 1228

难在理解题意

原来有一些点组成一个凸多边形, 现在一些点消失了, 只知道剩余点,

问利用剩余的点能否唯一确定出那个凸多边形

 

怎样才能唯一确定?

凸包时首先要求的 两点可以确定出一条直线

但是由于一些点消失了 可能会在两外原来有点 从而使图形不唯一

因此 若凸包每条边上都至少有三个点 就可以确定了(再加点就不能保证凸了)

注意所有点共线的情况不行

 

三。面积

(这里就是多边形求面积 = = 用叉积吧)

学习到的有用的是网格图上pick公式

S = a + b / 2 - 1;

S是多边形面积

a是多边形内部网格点的数目

b是多边形边界网格点的数目

 

b可以用每条边的向量的gcd来求

poj 1265用到了这个

 

然后看了看白书上的相关内容

感觉比写的题要经典

 

明天准备开半平面交了

考虑到训练赛

预定是学习一下姿势 先写写模板题

nlogn的尽量看

计算几何学习3