zoukankan      html  css  js  c++  java
  • 训练日志2

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

    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的数字的大小 是比较大还是比较小

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

     

  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/drzdk/p/7354439.html
Copyright © 2011-2022 走看看