前置知识

欧拉定理:在任何一个规则球面地图上,用 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;
}

多边形内部两两连线最多分出的区域数公式相关推荐

  1. 736-有两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周

    题目如下 两个圆环,半径分别是1和2,小圆在大圆内部绕大圆圆周一周,问小圆自身转了几周?如果在大圆的外部,小圆自身转几周呢? 答案如下 都是2周.因为路程都是一样的.都是绕大圆一圈.大圆的周长是小圆周 ...

  2. 一种具有两个乘波体分弹头的弹道导弹

    一种具有两个乘波体分弹头的弹道导弹 技术领域 本实用新型涉及一种具有两个乘波体分弹头的弹道导弹,尤其是具有乘波体分弹头的弹道导弹. 背景技术 现有常规弹道导弹的分弹头都是圆锥体,一种具有两个乘波体分弹 ...

  3. LISP道路中线_如何画两条样条线间中心线之三:CAD插件/Lisp编程法

    前面有介绍过两种CAD画两条样条线的中心线的方法,分别是用三维曲面提取中心线和画辅助取中心线,这两种方法.其实还有更简单的方法,就是用插件,感兴趣的可以自己找有相关功能的插件来使用. 这里提供一个. ...

  4. LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品

    LeetCode高频题:最长公共子序列,玩游戏A和游戏B,两兄弟加起来最多可以获得多少奖品? 提示:本题是系列LeetCode的150道高频题,你未来遇到的互联网大厂的笔试和面试考题,基本都是从这上面 ...

  5. R语言plotly可视化:plotly可视化分裂的分组小提琴图、每个小提琴图内部分为两组数据、每个分组占小提琴图的一半(Split violin plot in R with plotly)

    R语言plotly可视化:plotly可视化分裂的分组小提琴图.每个小提琴图内部分为两组数据.每个分组占小提琴图的一半(Split violin plot in R with plotly) 目录

  6. Seaborn使用violinplot函数可视化多分组小提琴图(violin plot)、每个小提琴图内部包含两个分组、使用inner函数设置在小提琴图中使用虚线显示分位数位置

    Seaborn使用violinplot函数可视化多分组小提琴图(violin plot).每个小提琴图内部包含两个分组.使用inner函数设置在小提琴图中使用虚线显示分位数位置(inner = 'qu ...

  7. R语言ggplot2可视化箱图、配置抖动数据点(jitter points)避免数据点互相覆盖、并使用线条(line)连接两个箱图中不同分组成对的数据点(jitter on Boxplots)

    R语言ggplot2可视化箱图.配置抖动数据点(jitter points)避免数据点互相覆盖.并使用线条(line)连接两个箱图中不同分组成对的数据点(Connecting Paired Point ...

  8. ArcGIS中,一个点集里的点两两连线,比如有4个点,就连6条线

    一.目标 一个点集里的点两两连线,比如有4个点,则连3+2+1=6条线:有38个点,则连37+36+35+···+3+2+1=703条线,其原始坐标数据及最终样式类似于以下这种: → 图一:原始数据及 ...

  9. Cover V2将启用两条产品线 本周开始进行V2 UI开发

    2月24日,DeFi保险协议Cover Protocol官方公布V2产品计划.根据该计划,Cover V2将启用两条产品线:1.点对点保险市场,与V1相同,任何人都可以成为做市商提供承保:2.保险货币 ...

最新文章

  1. SQL优化:使用explain
  2. go语言编程之字符串操作
  3. 按文件类型获取其图标
  4. 【机器学习】干货!机器学习中 5 种必知必会的回归算法!
  5. linux nginx 缓存服务器,如何开启Nginx缓存
  6. leetcode - 813. 最大平均值和的分组
  7. 前端都应懂的入门基础-github基础
  8. firebug的调试,console
  9. 【GD32F303开发之开发工具的安装与配置】
  10. 道路车辆 盲区监测(bsd)系统性能要求及试验方法_LKA、BSD国标出炉,狩猎和绞杀即将开始...
  11. 工具类ConfigTool封装Nacos Config 本地缓存(实战附代码实现)
  12. 电路串联和并联图解_电路的串联和并联有什么区别
  13. STM32——MPU6050六轴传感器
  14. 面试时如何更好的介绍自己的项目
  15. 2019投资总结,5月入市的小账户,收益25%
  16. 计算机专业对口大学,计算机专业对口升学有哪些大学
  17. 获取id查看详情信息
  18. 用CE找武林外传一级基址的方法
  19. [carla入门教程]-5 使用ROS与carla通信
  20. 盘点golang中的开发神器

热门文章

  1. 关于华为云盘无法登陆,显示“无法连接服务器”
  2. ipad扩展为Windows的第二屏幕【免费无线版】
  3. QTP对于支付宝控件无法录制的问题解决
  4. 怎么把100多个EXCEL文件合并成一个
  5. 联盛德 HLK-W806 (五): W801开发板上手报告
  6. Ubuntu20.04安装QGroundcontrol开发环境
  7. OAF AND r12
  8. 【京东校招笔试】保卫方案
  9. dji psdk开发(5)SDK互联互通功能MopChannel
  10. 图像处理方向就业前景(转我根据《浅谈图像处理方向的就业前景》和自己找工作的一些经验简单介绍一下图像处理方向就业前景, 希望能对后来者有所帮助! 1、请学好图像基本理论知识,笔试会遇到很多基础的题)