• 【分割圆】Uva 10213


    一个椭圆上有N个点,将这n个点两两相连,问最多能将这个椭圆分成多少片。

    理清思路,慢慢推。

    首先我们要想到欧拉公式:V+E-F=2

    其中V为图上的顶点数,E为边数,F为平面数。

    计算时的可以枚举点,从一个固定点出发的对角线(注意是对角,不包括与相邻点的连线),它的左边有i个点,那么右边就有n-2-i个点。左边与右边的点两两相连,能在这一条对角线上相交i*(n-2-i)各点。

    一个固定点能与其他非相邻点连接n-3条对角线,那么一个固定点的连线就会生成sigema(i=1,n-3)(i*(n-2-i))个交点;

    那么一个椭圆上一共有n各点,总共相交形成n * sigema(i=1,n-3)(i*(n-2-i)) 个交点;

    注意这些交点必然会有重复点,一个交点会被计算几次呢?一个交点会影响两条对角线,一条对角线会涉及两个椭圆上的点,那么一个交点相当于算了4次。

    再加上在椭圆上的点,那么V=(n * sigema(i=1,n-3)(i*(n-2-i)))/4 + n;

    同理可以计算出E,一条对角线上有x个交点,那么这条对角线就会被分成x+1段,

    一个固定点能与其他非相邻点连接n-3条对角线,那么一个固定点的连线就会生成sigema(i=1,n-3)(i*(n-2-i)+1)段线段;

    一个椭圆上一共有n各点,总共会形成n * sigema(i=1,n-3)(i*(n-2-i)+1) 条线段;

    每条线段当然也会被重复计算,一条线段在两个点的连线上,那么一条线段就相当于算了2次。

    再加上在椭圆上相邻点的连线,那么E=(n * sigema(i=1,n-3)(i*(n-2-i))+1)/2 + n;

    减掉外面的无限面,最后算出F-1=2+E-V;

    注意V,E的计算要化简成公式,循环求解的人是愚蠢的。。。。

    然后提醒一下涉及到求和求幂的要考虑是否会有精度问题,这题需要大数哦~

  • 相关阅读:
    (转)灵活运用 SQL SERVER FOR XML PATH
    Docker
    Springboot
    Redis
    Centos7.6在线安装mysql8.0.16
    Centos7.6安装jdk1.8
    Dubbo
    相关性检验
    逻辑回归和决策树上的一些区别
    postgresql 学习手册(客户端)
  • 原文地址:https://www.cnblogs.com/LLGemini/p/4677299.html
Copyright © 2020-2023  润新知