Zack_zhublog砸克猪的blog

AT_joisc2012_constellation 星座

Zack_zhu·2023-11-01 09:54·10 次阅读

AT_joisc2012_constellation 星座

题目传送门
更好看的题面
非常巧妙的凸包。

题目分析#

这道题的本质就是将所有点划分为两个生成树,求可能的方案数。

part 1 求凸包的答案#

我们可以考虑先求一个整体的凸包,如下图:
图1:凸包
其中红色的点为星座 A,蓝色的点为星座 B,黑色的点不确定。
先考虑凸包上的点,对于凸包上的点,当存在红蓝红蓝两组相间的情况时一定无解,因为他们无法通过内部连接,也无法通过凸包上连接。如下所示:

外部无法连接。

内部同样无法连接。
而其他情况都是有解的。(可以自行画一下)
然后我们来考虑怎么求答案,发现只有没相间和有一个相间的情况,开始分类讨论:

  1. 当没有相间时,对于凸包上的被夹在确定星座中间不确定星座的点,设他们的个数为 d,我们发现他们的贡献是 d×(d+1)2
    配个图各位可以自己推以下:
  2. 当有一个相间时,对于凸包上被夹在确定的不同的星座中间的点,设他们的个数为 d,我们发现他们的贡献是 d+1。这里不能创造交叉的情况,所以贡献是这个。
    同样配个图感受以下:

part 2 求内部答案#

凸包上的情况讨论完后,我们就可以来讨论内部的情况了。
先说结论:无论怎么安排,内部都不会有影响。
其实感性理解就是我们总可以给内部的点留出一线生机连到凸包上。
理想的证明就是可以随便找一个点作为中心,然后将凸包上的点连上它,就可以划分出多个三角形。
如果凸包上的点星座不同不用讨论,在上面求凸包时讨论过了,有解,如果三角形三个点星座相同肯定符合情况有解,如果三角形凸包上的点和内部的点不同再讨论一下。
如果内部有点可以再将一个三角形划分为三个三角形,有点就重复再划分,如果里面没有点了,可以发现是可以分开的,有解,如果三个点颜色相同就同上直接结束。
我的评价是:不如画图感性理解。
给个图大家画着玩玩吧。

于是我们就可以发现对于每一个不确定的点把答案乘 2 就行。
注意只有一种星座的要减一。

code#

代码

posted @   zackzhm  阅读(10)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
https://cdn.luogu.com.cn/upload/image_hosting/l762uy1z.png
点击右上角即可分享
微信分享提示
目录