UVa 10213 How Many Pieces of Land ? (计算几何+大数)欧拉定理

题意:一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块?
析:这个题用的是欧拉公式,在平面图中,V-E+F=2,其中V是顶点数,E是边数,F是面数。对于这个题只要计算V和E就好。
我们从一个顶点开始枚举对角线,这条线左边有 i 个点,那么右边有 n-i-2 个点,那么两边的连线在这条对角线上形成 i * (n-i-2) 个交点,得到 i * (n-i-2) + 1条线段,然而每个交点,
重复计算了四次,每条线段被重复计算了二次,所以总数就是,
,V 加 n 的意思就是加上原来的 n 个顶点,E 加 2n的意思就是,
先加原来 n 个点相邻的边数,然后再加上这个椭圆被这个圆分成的n条边,最后就是在总面数再减去那一个“无限面”。这个公式不要用循环来算,要化简公式,最后结果还是挺简单的。
ans = n * (n-1) * (n-2) * (n-3)/24 + n * (n-3)/2 + n + 1。
代码如下:
import java.math.BigInteger;
import java.util.Scanner; public class Main { public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int T;
T = cin.nextInt();
for(int i = 0; i < T; ++i){
BigInteger n = cin.nextBigInteger();
BigInteger n1 = n.subtract(BigInteger.ONE);
BigInteger n2 = n1.subtract(BigInteger.ONE);
BigInteger n3 = n2.subtract(BigInteger.ONE); BigInteger a = n.multiply(n1).multiply(n2).multiply(n3).divide(BigInteger.valueOf(24));
BigInteger b = n.multiply(n3).divide(BigInteger.valueOf(2));
BigInteger ans = a.add(b).add(n).add(BigInteger.ONE);
System.out.println(ans);
}
} }
原文链接:http://www.cnblogs.com/dwtfukgv/p/5845746.html
UVa 10213 How Many Pieces of Land ? (计算几何+大数)欧拉定理的更多相关文章
- UVa 10213 How Many Pieces of Land ? (计算几何+大数)
题意:一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块? 析:这个题用的是欧拉公式,在平面图中,V-E+F=2,其中V是顶点数,E是边数,F是面数.对于这个题只要计算V和E就好. ...
- UVa 10213 - How Many Pieces of Land ?(欧拉公式)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 【分割圆】Uva 10213 - How Many Pieces of Land ?
一个椭圆上有N个点,将这n个点两两相连,问最多能将这个椭圆分成多少片. 理清思路,慢慢推. 首先我们要想到欧拉公式:V+E-F=2 其中V为图上的顶点数,E为边数,F为平面数. 计算时的可以枚举点,从 ...
- UVA - 10213 How Many Pieces of Land?(欧拉公式 + 高精度)
圆上有n个点,位置不确定.问这些点两两连接成的线段,最多可以把圆划分成多少块平面? 欧拉公式:V-E+F = 2,V是点数,E是边数,F是面数. 答案是F=C(n,4)+C(n,2)+1,看的别人推的 ...
- UVa 10213 (欧拉公式+Java大数) How Many Pieces of Land ?
题意: 一块圆形土地,在圆周上选n个点,然后两两连线,问把这块土地分成多少块? 分析: 首先紫书上的公式是错的,不过根据书上提供的思路很容易稍加修改得到正确答案! 然后推公式吧,这里用到平面图的欧拉公 ...
- UVa 1331 - Minimax Triangulation(区间DP + 计算几何)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- uva 11178 Morley's Theorem(计算几何-点和直线)
Problem D Morley's Theorem Input: Standard Input Output: Standard Output Morley's theorem states tha ...
- 【UVa】1606 Amphiphilic Carbon Molecules(计算几何)
题目 题目 分析 跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习 代码 #include <bits/stdc++.h> using namespace std; ; stru ...
- 紫书 例题 10-23 UVa 10213(欧拉公式+高精度)
用欧拉公式V-E+F=2 V是顶点数,E是边数,F是面数 具体推导见https://blog.csdn.net/QWsin/article/details/53635397 要用高精度 #includ ...
随机推荐
- babylon
https://github.com/babel/babel babylon - npm https://www.npmjs.com/package/babylon Babel is a compil ...
- vscode设置默认shell 快速到行
vscode设置默认shell - CSDN博客 https://blog.csdn.net/butterfly5211314/article/details/78944805 在文件 -> 首 ...
- 在pycharm中执行脚本没有报错但输出显示Redirection is not supported.
没有新式语法错误,但是输出显示Redirection is not supported.(不支持重定向) 在stockflow中找到是因为从IDE中运行脚本的原因,比如pycharm,所有IDE都提供 ...
- 《机器学习实战》学习笔记第七章 —— AdaBoost元算法
主要内容: 一.提升方法与AdaBoost算法的简介 二.AdaBoost算法 三.代码解释 一.提升方法与AdaBoost算法的简介 1.提升方法:从弱学习算法出发,反复学习,得到一系列弱分类器(又 ...
- 算法(Algorithms)第4版 练习 1.3.10
主要思路:和1.3.9相似,只不过运算表达式的生成方式不一样 用Dijkstra的双栈算法. 遇到数字则压入数字栈中(String). 遇到运算符则压入运算符栈中(String). 遇到右括号时,从数 ...
- hdmap相关
图片来源:https://vires.com/ 新闻摘抄: 对此,武汉光庭信息技术股份有限公司副总经理罗跃军告诉记者:“事实上,最初由自动驾驶车身控制系统协会所提出的地图精度要求很高,需要达到5cm甚 ...
- input标签添加上disable属性在移动端字体颜色不兼容的解决办法。
input[disabled],input:disabled,input.disabled{ color: #999; -webkit-text-fill-color:#999; -webkit-op ...
- 重新拾取:ASP.NET Core WebApi 使用Swagger支持授权认证
园子里已经有很多.NET Core 集成Swagger的文章,但对于使用授权的介绍蛮少的. public static class SwaggerServiceExtensions { public ...
- 一个关于前端页面的小标签<tbody>
我们有时候希望将表格的内容分为多个模块,这时候就可以使用<tbody>标签,它是<table>的字标签,是<tr>的父标签,可以使用它达到一种设置样式的结果.
- spring属性注入DI
spring setter方式注入: 注入对象属性: 前提: 在bean对应实体中有对应的setter方法. 基础代码: 在bean中有另一个bean属性的setter方法. package cn.i ...