多边形内部两两连线最多分出的区域数公式
前置知识
欧拉定理:在任何一个规则球面地图上,用 R R R记区域个 数, V V V记顶点个数 , E E E记边界个数 ,则 R + V − E = 2 R+ V- E= 2 R+V−E=2。
Solution
R = E − V + 2 R=E-V+2 R=E−V+2
已经存在 n n n个点 n n n
任意四个点可以有一个交点 C n 4 C_n^4 Cn4
V = n + C n 4 V=n+C_n^4 V=n+Cn4
每两个点有一条边 C n 2 C_n^2 Cn2
一条线段会被一个交点分成两段,所以 x x x条直线的交点会多分出来 x x x条线段,利用 V V V可以算出 E E E
每四个点的交点就会在原来2条线断的基础上又增加两个线段 2 C n 4 2C_n^4 2Cn4
E = C n 2 + 2 C n 4 E=C_n^2+2C_n^4 E=Cn2+2Cn4
R = E − V + 2 = C n 2 − C n 4 − n + 2 R=E-V+2=C_n^2-C_n^4-n+2 R=E−V+2=Cn2−Cn4−n+2
多边形外面的区域不算需要 − 1 -1 −1
a n s = R − 1 = E − V + 2 = C n 2 − C n 4 − n + 1 ans=R-1=E-V+2=C_n^2-C_n^4-n+1 ans=R−1=E−V+2=Cn2−Cn4−n+1
#include <bits/stdc++.h>
#define fi first
#define se second
#define mp make_pairusing namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const double eps = 1e-8;
const int NINF = 0xc0c0c0c0;
const int INF = 0x3f3f3f3f;
const ll mod = 1e9 + 7;
const ll N = 1e6 + 5;ll qpow(ll x,ll y){ll ans=1;x%=mod;while(y>0){if(y&1) ans=ans*x%mod;x=x*x%mod;y>>=1;}return ans;
}ll C(ll x,ll y){ll ans=1;for(ll i=x;i>x-y;i--){ans=ans*i%mod;}ll res=1;for(ll i=1;i<=y;i++){res=res*i%mod;}return ans*qpow(res,mod-2)%mod;
}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);ll n;cin>>n;cout<<((C(n,2)+C(n,4)-n+1)%mod+mod)%mod<<'\n';return 0;
}
多边形内部两两连线最多分出的区域数公式相关推荐
- 736-有两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周
题目如下 两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢? 答案如下 都是2周.因为路程都是一样的.都是绕大圆一圈.大圆的周长是小圆周 ...
- 一种具有两个乘波体分弹头的弹道导弹
一种具有两个乘波体分弹头的弹道导弹 技术领域 本实用新型涉及一种具有两个乘波体分弹头的弹道导弹,尤其是具有乘波体分弹头的弹道导弹. 背景技术 现有常规弹道导弹的分弹头都是圆锥体,一种具有两个乘波体分弹 ...
- LISP道路中线_如何画两条样条线间中心线之三:CAD插件/Lisp编程法
前面有介绍过两种CAD画两条样条线的中心线的方法,分别是用三维曲面提取中心线和画辅助取中心线,这两种方法.其实还有更简单的方法,就是用插件,感兴趣的可以自己找有相关功能的插件来使用. 这里提供一个. ...
- LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品
LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品? 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面 ...
- R语言plotly可视化:plotly可视化分裂的分组小提琴图、每个小提琴图内部分为两组数据、每个分组占小提琴图的一半(Split violin plot in R with plotly)
R语言plotly可视化:plotly可视化分裂的分组小提琴图.每个小提琴图内部分为两组数据.每个分组占小提琴图的一半(Split violin plot in R with plotly) 目录
- Seaborn使用violinplot函数可视化多分组小提琴图(violin plot)、每个小提琴图内部包含两个分组、使用inner函数设置在小提琴图中使用虚线显示分位数位置
Seaborn使用violinplot函数可视化多分组小提琴图(violin plot).每个小提琴图内部包含两个分组.使用inner函数设置在小提琴图中使用虚线显示分位数位置(inner = 'qu ...
- R语言ggplot2可视化箱图、配置抖动数据点(jitter points)避免数据点互相覆盖、并使用线条(line)连接两个箱图中不同分组成对的数据点(jitter on Boxplots)
R语言ggplot2可视化箱图.配置抖动数据点(jitter points)避免数据点互相覆盖.并使用线条(line)连接两个箱图中不同分组成对的数据点(Connecting Paired Point ...
- ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线
一.目标 一个点集里的点两两连线,比如有4个点,则连3+2+1=6条线:有38个点,则连37+36+35+···+3+2+1=703条线,其原始坐标数据及最终样式类似于以下这种: → 图一:原始数据及 ...
- Cover V2将启用两条产品线 本周开始进行V2 UI开发
2月24日,DeFi保险协议Cover Protocol官方公布V2产品计划.根据该计划,Cover V2将启用两条产品线:1.点对点保险市场,与V1相同,任何人都可以成为做市商提供承保:2.保险货币 ...
最新文章
- SQL优化:使用explain
- go语言编程之字符串操作
- 按文件类型获取其图标
- 【机器学习】干货!机器学习中 5 种必知必会的回归算法!
- linux nginx 缓存服务器,如何开启Nginx缓存
- leetcode - 813. 最大平均值和的分组
- 前端都应懂的入门基础-github基础
- firebug的调试,console
- 【GD32F303开发之开发工具的安装与配置】
- 道路车辆 盲区监测(bsd)系统性能要求及试验方法_LKA、BSD国标出炉,狩猎和绞杀即将开始...
- 工具类ConfigTool封装Nacos Config 本地缓存(实战附代码实现)
- 电路串联和并联图解_电路的串联和并联有什么区别
- STM32——MPU6050六轴传感器
- 面试时如何更好的介绍自己的项目
- 2019投资总结,5月入市的小账户,收益25%
- 计算机专业对口大学,计算机专业对口升学有哪些大学
- 获取id查看详情信息
- 用CE找武林外传一级基址的方法
- [carla入门教程]-5 使用ROS与carla通信
- 盘点golang中的开发神器
热门文章
- 关于华为云盘无法登陆,显示“无法连接服务器”
- ipad扩展为Windows的第二屏幕【免费无线版】
- QTP对于支付宝控件无法录制的问题解决
- 怎么把100多个EXCEL文件合并成一个
- 联盛德 HLK-W806 (五): W801开发板上手报告
- Ubuntu20.04安装QGroundcontrol开发环境
- OAF AND r12
- 【京东校招笔试】保卫方案
- dji psdk开发(5)SDK互联互通功能MopChannel
- 图像处理方向就业前景(转我根据《浅谈图像处理方向的就业前景》和自己找工作的一些经验简单介绍一下图像处理方向就业前景, 希望能对后来者有所帮助! 1、请学好图像基本理论知识,笔试会遇到很多基础的题)