这两天做了一些简单的题目
写完了第二期的1.2
poj 3334
给你一个尖端联通之后的两个漏斗形状的区域,问你问你对应面积对应的水平高度是多少
做法很明显是二分
注意的是连通器的性质是液面高度相同 因此二分的上界是 两个高点的min值
因为自己各种sb的错误 比如数组名打错 变量打反 调了很久
POJ 1819
和之前做的一个放置正方形的题目很像
但是这题的条件是哪些圆删去后,不会影响序列的放置位置
那些在开头和中间位置的圆如果不能够使他后面的一个圆与之相切而确定确定其位置
那他就是没用的
对于那些最后的那些圆 如果 x + r 的右边界不是由它确定的 那他也是无效的
卡了题意 以为是和之前一样是不可视的个数
UVALive 3905
给你一些点的起始位置和速度 给你一个矩形框
问你矩形框中最多同时出现多少点
很明显要计算每个点的进入矩形时间和离开矩形时间,最后离散统计一下
但是很恶心的是 边界上的点是不计算在矩形框内的 直接用射线和矩形交会出现很恶心的情况
比如当射线和矩形的一边重合 射线的一端在矩形内部 射线经过顶点等情况 需要特殊讨论
虽然可以写 但是很麻烦
后来才知道是刘汝佳老师白书上的题 我们把XY隔离来看,就省去了求交点的麻烦,特殊情况也可以简单解决
这启示我不要太依赖板子,应先去寻求短而高精的解法,而不是直接套一般的板子
ZOJ 2589
给你平面上n个圆 问你这些圆将平面划分成了几个区域
学习了一个平面图的欧拉定理
V - E + F = 2
V代表图的顶点个数 E代表平面图边数 F是平面图面数即平面被划分成几个区域
值得注意的是 这里的平面图指的是联通的图 所有点之间要相互连通 两个圆内含 相离 就不是一张平面图
lsf告诉我所以可以推广
V - E + F = X + 1
X可以认为是连通区域的个数 两个相离的圆 连通区域就是2 点数为0 边数为0
这样用圆交 对每个圆处理一下 并查集维护联通关系就行了
POJ 2194
摞油桶 用下仿射变换旋转向量就行了
感觉很郁闷
很多简单的题 算法是对的 但是总是出各种各样的错误 感觉浪费了很多时间
在组队训练中也只看到问题很浅显的一部分
今后还是要注重练码力 学姿势 多想想问题
明天搞三角剖分