【py交易】算法竞赛入门经典5.4.4 多少块土地 python
来源:互联网 发布:db2分页查询sql详解 编辑:程序博客网 时间:2024/06/12 01:02
分析:
1.题目不是太懂,看了一下网上的一些文章,其实跟题目讲的基本一样,所以还是不太懂。画个图比划比划就好多了
2.简单多面体的欧拉公式,记住就ok, V-E+F = 2 (Vertex,Edge,Face)
其中,这个Face是包含了椭圆面外的无限大平面,所以最后F = 2-V+E-1 = E-V+1,求出边数和定点数即可得出答案
3.最优方案:不会让任何3条线交于一点,这个提示很重要。严格的说,应该是在椭圆平面内不会3条线相交,不包含椭圆边界,不然跟题目就矛盾了(钻牛角尖)
4.有图有杰宝:
举个例子(不举)。。。椭圆边上有5个点,ABCDDE,n=5
假设以AC为对角线,对角线左边点的个数为 i,也就是B点;
则对角线右边的点个数为 (n-2-i),也就是D和E,其中减2就是AC两个点
此时,左边的B和右边的DE两两相连(注意:左边和右边本圈子内的不连,所以同位于右边的DE不连起来):
所以有线段BE、BD,在对角线AC上产生的新交点为k1,k2,数目为i(n-2-i)个(2);
在对角线上产线的新线段为AK1,K1K2,K2C,数目为i(n-2-i)+1条(3)
然后,以BE作为对角线,则左边为A点,右边为C、D点,然后重复上述步骤,发现在对角线BE上的新交点为S1,S2,新的线段为BS1,S1S2,S2E
此时可以注意到,K1和S1其实是重合的,所以这个点被算了两次(AC和BE个一次);然后,以CA(K1’,K2’)和EB(S1’,S2’)的为对角线的时候,这个点会又被算两次,所以在对角线上的一个点被算了4次,需要除以4!!!至于为什么不是6次8次呢,因为第3条分析说了:不会有3条线交于一个点,所以最多两条,然后4个点,thats it!
至于在对角线上产生的线段,在以AC为对角线的时候K1K2被算了一次,在以CA为对角线的时候,又算了一次(K2’K1),所以需要除以2
5.这个杰宝中的i=1,但是,i的取值可以是0,也就是说,左边至少是0个,而右边呢?是(n-2-i)个,右边也至少是0个,所以有不等式:
n-2-i >=0
得 i<=n-2
所以i的取值是 [0,n-2]
对应i的每个取值,得到的新顶点数为:
Vnew = i(n-2-i)/4
新线段数为:
Enew = (i(n-2-i)+1)/2
5.第四条写的是产线的“新线段“和“新顶点”的数目,而对应椭圆上的n个顶点,都需要遍历0到n-2的次数,然后加上本边界上的顶点数n和边数n,所以总顶点数和总边数就如第一个杰宝里的求和公式了
6.分析完毕
7.Talk is cheap ,show me the code(actually the algorithm partilcally matters lin this case )
# coding=utf-8"多少块土地"n = input("")eSum = 0vSum = 0fSum = 0for i in range(0,n-2+1,1): eSum += i*(n-2-i) + 1 vSum += i*(n-2-i)eSum = n + (n*eSum)/2vSum = n + (n*vSum)/4fSum = eSum - vSum + 1# print eSum# print vSumprint fSum
- 【py交易】算法竞赛入门经典5.4.4 多少块土地 python
- 算法竞赛入门经典 5.4.4多少块土地
- 【py交易】算法竞赛入门经典6.1.2 铁轨python
- 算法竞赛入门经典:第五章 基础题目选解 5.12多少块土地
- 【py交易】算法竞赛入门经典5.4.2 因子和阶乘 Python
- 【py交易】算法竞赛入门经典5.4.3果园里的树 Python
- 【py交易】算法竞赛入门经典6.1.1卡片游戏 python
- 【py交易】算法竞赛入门经典6.3.1 小球下落 python
- 多少块土地
- 多少块土地
- 多少块土地
- 算法竞赛入门经典 5.2.1有多少位进位
- 算法竞赛入门经典
- 算法竞赛入门经典
- 算法竞赛入门经典 例题 9-4
- 《算法竞赛入门经典》 习题 2-4
- 多少块土地(刘汝佳的小白5.4.4)详解
- 算法竞赛入门经典(1,2章的python实现)
- Elasticsearch 简介
- MFC使用笔记
- Windows和Linux环境之间文件系统挂载方法
- 【每日一课】1、什么是java?
- 数组中只出现一次的两个数字
- 【py交易】算法竞赛入门经典5.4.4 多少块土地 python
- Servlet 编写Filter过滤器
- ASCII码排序
- 在swift中debug的环境下使用log输出
- Android音频系统之AudioTrack(二)
- Android音频系统之AudioTrack(二)
- 如何搭建nexus私服-maven
- POJ 3126Prime Path (BFS)
- 【分享】iTOP4412开发板-Bluetooth移植文档