题解 | #小红平分糖果#

来点F的笨比纯数学+容斥做法。

,甲选的两点为A、B,乙选的两点为C、D(A、B不分辨,C、D不分辨)。

先考虑两条线段端点不重合的情况:

先不考虑多边形的限制,只需满足AB与CD有交叉点,这一选法相当于在多边形上取4个点,再将4个点按 ACBD 或 CADB 的顺序排列,总方案数为

从中需要排除掉AB或CD其一在同一条边上的情况,这一选法相当于先取一条边,在上取3个点,将3个点按 ACB 或 CAD 的顺序排列,再在以外的边上取1个点,方案数为

还需要排除AB与CD均在同一条边上的情况,这一选法相当于先取一条边,在上取4个点,再将4个点按 ACBD 或 CABD 的顺序排列,方案数为

再考虑两条线段有一个端点重合的情况:

先固定两个重合的端点,考虑另外两个端点,这一选法相当于先取一条边,在上取1个点为A、C,再在以外的边上取2个不同点为B、D,方案数为

最终结果即为。以下给出Python实现,其他语言可能需要int128或处理逆元。

MOD = 10**9+7
n = int(input())
arr = list(map(int, input().split()))
s = sum(arr) % MOD
ans = s*(s-1)*(s-2)*(s-3)//12
ans -= sum(a*(a-1)*(a-2)//3 * (s-a) % MOD for a in arr)
ans -= sum(a*(a-1)*(a-2)*(a-3)//12 % MOD for a in arr)
ans += sum(a*(s-a)*(s-a-1) % MOD for a in arr)
print(ans % MOD)
全部评论
or2
点赞 回复 分享
发布于 2024-05-21 15:59 伊朗
Or2
点赞 回复 分享
发布于 2024-05-20 18:12 浙江
N1按ABCD和CADB排序吧
点赞 回复 分享
发布于 2024-05-20 17:26 山东
你好强大
点赞 回复 分享
发布于 2024-05-20 14:27 浙江
点赞 回复 分享
发布于 2024-05-19 22:25 江苏

相关推荐

点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
13
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务