码迷,mamicode.com
首页 > 其他好文 > 详细

训练日志2

时间:2017-08-13 20:10:41      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:log   证明   计算几何   复杂度   http   原来   日志   开始   极限   

这几天主要是在打比赛 计算几何写了一些推公式的题

UVALive 4413

相当于按比例 构造出一种小三角形 想求原来的大三角形

这道题用到了 梅涅劳斯定理 链接

简单来说就是一条过三角形三边所在直线的直线 有 AD * BE * CF = BD * CE * AF

证明也比较简单

应用到这题就是由三条直线和三个小三角形得到三个方程 解出来对应比例就可以了

 

POJ 2208

给你四面体六条边 求体积

欧拉四面体公式 链接

写的时候也并没有用公式 直接建系 也是可以算的

 

UVA 11524

给你一个未知三角形的内切圆以及它将三角形各边分成的比例 求三角形面积

= =就很气 刚开始的时候求角度算精度出了问题 卡了好久也没成功

后来换了一种做法 假如一边边长为1 则其他边可由比例推出来是多少 

记该情况下半周长为 p 而实际半周长为 k * p

由面积比例关系可以得到 k * p * R = k * k * S

S为当前假设的三角形的面积 是sqrt(p * (p - a) * (p - b) * (p - c)) (这里的abc是假设的边长)

可得k = p * R/ S

所以真正的面积是 (p * R) ^ 2 / S

精度确实比较好了。。。

 

UVALive4714

和上题类似 感觉更简单了 注意寻找等量关系就行 这里用的是大圆和小圆的圆心距

 

剩下的还有百度之星初赛Round A的 1002

题意大概是 给你n个约束关系 有 x = y , x != y两种

现在把n个约束关系按照顺序划分成k组 每组只有最后一个关系不成立 前面的都成立

问分的组数和每组约束关系的数量 n <= 10 ^5

 

刚开始很naive 以为 x = y非法时 只有 x != y 其实和加入的集合也有关系了

我们很容易想到并查集维护相等的关系 至于不等关系 在潘学姐的提示下想到启发式

我开了两个set一个存储并查集的集合元素 另一个存储与当前集合有冲突的元素有哪些

在 x != y 时可以直接用并查集判是否成立

在 x = y时 我们遍历较小的集合中的元素 看是否在大集合的冲突集合中出现过

合并时把较小的set插到大的里面去 冲突集合也同样合并

总体复杂度nlog^2n 实际上跑得飞快

 

最近的感受就是自己代码力欠缺

打百度之星的时候 水题总是敲错 敲的时候很犹豫 敲完也很方 就很难受

在计算几何的精度方面还是模棱两可

拿今天训练的A来说

先是读错题意 以为A B都在圆内 误导了潘学姐和自己 一下子神话了这道题

之后自己发现很简单 开始敲之后 感觉考虑的很全面 手出几组感觉可以 交上去确实WA

就很难受 在WA了几发之后才A

原因是eps设置的太小 改成1e-6才过

其实题目中给出的坐标的范围是有意义的

我后来才是在极限大的数据下发现了 比较的数字比较大 小数后几位可能不准确 才调大了eps

以后的题目在写完时 应该试着出一些比较大的简单数据 看是不是够精度(如果可以出的话

debug时确定算法正确性的情况下 也应该考虑一下用到eps的数字的大小 是比较大还是比较小

 

接下来想看看圆的反演 和 一些不确定算法和极值的 题目吧

 

训练日志2

标签:log   证明   计算几何   复杂度   http   原来   日志   开始   极限   

原文地址:http://www.cnblogs.com/drzdk/p/7354439.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!