zoukankan      html  css  js  c++  java
  • 6674. 【2020.05.30省选模拟】凸包的价值

    题目

    平面上有若干个点,选出个点集,要求这个点集是一个凸包(凸包上没有三点共线)。
    这个点集的价值为(xa^{x}b^{y}c^{z}),其中(x)为凸包的顶点数,(y)为凸包内或凸包边界上的点数,(z)为不在凸包内的点数。
    题目保证(b=a+c)
    求所有满足条件的点集的价值和。
    (nleq 2000)


    正解

    比赛看到后直接认为这是个毒瘤题,所以没有思考。

    看到(b=a+c)这个奇妙的东西,应该去想想这个价值的组合意义是什么。
    (xa^xb^yc^z=xsum_{i=0}^ya^{x+i}c^{z+y-i}=xsum_{i=0}^ya^{x+i}c^{n-x-i})
    大力思考一下,这个东西等价于什么呢?
    是个正常人都想不到这个相当于选一个点集,这个点集中每个点的贡献为(a),不在点集内的点的贡献为(c),然后贡献乘上这个点集作出的凸包的边数。
    更加形象:一个点有(b)种状态,其中(a)种状态为(1)(c)种状态为(0),贡献为所有选(1)的点作出的凸包的边数和。

    既然贡献为边数和,那么可以考虑分别计算每条边的贡献。
    对于一条边,如果它在凸包上,那么它的一边全部选(0),另一边至少选一个(1)
    对边进行极角排序,维护一下它左手向和右手向的点分别有多少个,然后计算。
    注意仔细考虑一下三点共线的情况。


    总结

    这题没有写代码……

    在看到奇怪的式子时,总是要去想想它的组合意义,然后套一些可以恰好计算那么多次的算法。

  • 相关阅读:
    数据结构总结(UPDATING......)
    课件例题4.11,4.12
    Luogu P1525 关押罪犯
    Luogu P1540 机器翻译
    Luogu P1313 计算系数
    Luogu P1311 选择客栈
    Luogu P1519 穿越栅栏 Overfencing
    Luogu P2863 [USACO06JAN]牛的舞会The Cow Prom
    Tarjan学习笔记
    Luogu P3393 逃离僵尸岛
  • 原文地址:https://www.cnblogs.com/jz-597/p/13039743.html
Copyright © 2011-2022 走看看