• 计算几何学习12 + 组队训练


    学习了极角排序的一些套路

    UVA11696

    给你一些圆和一些点,保证点不在圆内,两点相连通当且仅当两点联结的线段不与任何一个圆相交,问联通块个数

    跟之前那道UVA很类似 其实更加简单

    枚举每个点 把其他所有点和圆对他极角排序 用set维护圆到当前点的切线的最短距离 因为点不在圆内 所以直接判断距离就行了

    poj 2280

    给你一些A类点 B类点 寻找一条直线 使得线上的点和直线左侧的A类点 直线右侧的B类点数目之和最大

    首先可以知道直线一定从 给定两点的连线中产生

    所以考虑枚举点 让其他点对他极角排序

    一种巧妙的做法是 把B类点都映射到关于枚举点的对称点 相当于只统计直线上和左侧的点的数目

    这样枚举每边,寻找夹角为pi内的点的数目 是单调的

    UVALive 4064

    给你一些点 问你锐角三角形的数目

    锐角三角形不好统计 但是直角和钝角三角形好统计

    所以C(n,3) 减去两个的数目即可

    统计和上题类似

    统计pi/2 pi的角的个数

    UVA11704

    平面上一些A类点B类点

    问存不存在一条直线 使得两侧的A和B类点数目相同

    还是和上面类似 更简单了 看是不是2倍关系就行

    其他的题:

    codeforces div1 421B

    给你一个排列 定义_sum = sum of |p[i] - i|

    你可以平移这个序列 (每次把最后拿到最前) 问最小_sum

    刚开始可以统计出答案 记录 p[i] <= i的数目R 和其余的数目L

    每次平移相当于答案减去L加上R 最后元素的贡献单独考虑

    预处理出每个点的变化时刻 会对L,R产生影响

    多校4 1005

    相当于你每次可以从集合里加一个数 (这个数有依赖关系) 问你大于等于K的最小答案是多少

    模意义下的最短路, 考虑其中的一个元素a,假如tmp可以达到,那么tmp + k * a都可以达到

    我们相当于求出所有可行的tmp去更新答案 这样的tmp只有a个

    对于这道题就是把a设为2*min(g[1][2], g[2][3]) 因为我们可以来回走这条边来刷距离

    相当于 4 * a个点的最短路 假如当前到达2点的距离为dis 可以用 ((k - dis - 1) / a + 1) * a + dis 更新答案

    感觉自己最近的状态很有问题 很多代码都会出bug 出一些不该出的问题

    必须要杜绝这种失误 调整状态 明天看看扫描线

  • 相关阅读:
    Redis之String
    代码质量管理工具——SonarQube
    XML文件(2)--使用DOM4J示例
    XML文件(1)--使用DOM示例
    Maven之构件
    使用JS,获取URL中指定参数的值
    jQuery导入Eclipse后报错解决方法
    关于MySQL存储过程中遇到的一个错误
    学习MySQL之数据类型(四)
    jmeter直连数据库【转】
  • 原文地址:https://www.cnblogs.com/drzdk/p/7291237.html
Copyright © 2020-2023  润新知