19_05_01校内训练[polygon]
题意
把一个边长为1的正n边形放到一个正m边形中,要求m边形完全覆盖n边形,可以有交点,并且中心重合。求正m边形的最小边长,至少精确到6位。要求logn计算。
思考
先考虑m|n的情况。
我们知道,正m边形的边长与可行区域(即可以完全覆盖的那些角度)形成单射,当且仅当所有可行区域都成为可数的点时,答案最优。(可以理解为再缩小一点就无解了)
这样不难证明,把正n边形的几条边刚好卡在正m边形上是最优的。如n=8,m=4:
这时正m边形的边长是容易计算的。相信大家都会初中数学。
这样再考虑一般情况。由于是中心重合,正n边形旋转2π/m度后仍然是能被覆盖的。
在所有可行的旋转过程中,将最外圈的点连起来,仍然形成一个正多边形,且边数为lcm(n,m)。
例如,n=4,m=6:
用紫线围出来的正12边形即为正方形得到的结果。
至于正确性,在于所有的可行区域都是单点。
这样一来,就可以直接转化为上一个问题。公式认真推即可。
代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long int ll; 4 const double pi=acos(-1); 5 ll n,m; 6 ll gcd(ll x,ll y) 7 { 8 return x%y==0?y:gcd(y,x%y); 9 } 10 ll lcm(ll x,ll y) 11 { 12 return x/gcd(x,y)*y; 13 } 14 double solve(ll n,ll m) 15 { 16 double len=1/(2*tan(pi/n)); 17 double th=(n/m)*pi/n; 18 return tan(th)*len*2; 19 } 20 int main() 21 { 22 ios::sync_with_stdio(false); 23 cin>>n>>m; 24 double len=1/(2*sin(pi/n)); 25 n=lcm(n,m); 26 double a=sin(pi/n)*len*2; 27 cout<<fixed<<setprecision(9)<<solve(n,m)*a<<endl; 28 return 0; 29 }
View Code
转载于:https://www.cnblogs.com/GreenDuck/p/10799543.html
19_05_01校内训练[polygon]相关推荐
- 19_05_01校内训练[划分]
题意 给出长度为n的序列,只有1,0,-1.要求将其划分为若干长度在[L,R]之间的连续序列,一个序列若和大于0,造成1的贡献:若小于0,造成-1的贡献:否则没有贡献.求最大的贡献. 时间复杂度要求n ...
- 校内训练赛题解第三篇
校内训练赛题解 人气估值 解题思路 脑力训练计划 (模拟 + 字符串) 解题思路 大暑赛期(贪心 + 思维) 人气估值 题目描述 你是某动画制作公司的企划部长.如今动画制作公司制作的东西,已经不仅仅局 ...
- fzyzojP3372 -- [校内训练20171124]博弈问题
对于每个点都要答案 还是异或 trie树合并石锤了 朴素枚举是O(n^2*17)的 怎么办呢? 我们发现合并的时候,一些部分的trie的子树还是不变的 改变的部分也就是合并的复杂度可以接受 鉴于大部分 ...
- 20170910校内训练
CCT 最近学校又发了n本五三题霸,BBS看到后十分高兴.但是,当他把五三拿到手后才发现,他已经刷过这些书了!他又认真地看了一会儿,发现新发的这些五三是2017版的,而他刷的是2016版的.现在他想找 ...
- 20170908校内训练
题意: 学过博弈论的同学都知道Nim游戏后手必胜的条件是异或和为0 给定一棵树 ,支持修改单点点权,询问链上异或和 预处理每个点到根的路径的异或和 由于异或的特殊性质,在求链x->y的异或和的时 ...
- 19_03_26校内训练[魔法卡片]
题意 有n张有序的卡片,每张卡片上恰有[1,m]中的每一个数,数字写在正面或反面.每次询问区间[l,r],你可以将卡片上下颠倒,问区间中数字在卡片上方的并的平方和最大是多少.q,n*m≤1,000,0 ...
- 平面图转对偶图19_03_21校内训练 [Everfeel]
对于每个平面图,都有唯一一个对偶图与之对应.若G'是平面图G的对偶图,则满足: G'中每一条边的两个节点对应着G中有公共边的面,包括最外部无限大的面. 直观地讲,红色标出来的图就是蓝色标出的图的对偶图 ...
- [3.30校内训练赛]
来自FallDream的博客,未经允许,请勿转载,谢谢. --------------------------------------------------- ditoly这次打好了虐爆我们的主意, ...
- 2017-3-23校内训练
学长日常出丧题虐人 100+90+64=254/300 T1.数据结构 题目大意:给定n个数,每次给出x和y,询问一个区间内多少数模x等y.(n,询问次数,数字大小<=40000) 思路:用差分 ...
最新文章
- 线性代数:05 实对称矩阵与二次型
- 调用webservice接口,数据不回滚问题
- Red Hat Linux、rhel 和 Fedora Core 以及 Centos 区别与联系
- NullPointerException
- python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...
- 跳一跳python_微信跳一跳python怎么刷分?跳一跳python怎么使用?
- 谷歌上线数据搜索引擎 Dataset Search
- win7下import pytorch报错AttributeError: function 'AddDllDirectory' not found
- java 1.5 代替for循环_J2EE 1.5 提供的另一种形式的for循环
- CentOS下搭建docker+.net core
- 1.Kubernetes 简介
- java实现kafka发送消息和接收消息(java无注解方式+springBoot注解方式)
- VPP buffer不足
- 官网下载Windos10正版镜像并安装
- Java+Servlet+Jsp(el, jstl)+MyBatis的CRUD练习小项目
- QT中的视频显示优化
- EI目录下载地址及保护密码
- html5悬浮圆圈背景动画特效,html5圆圈浮动背景动画特效
- 广州工作2个月!差人的公司可以call我
- OI回忆录第一章 逐梦之始
热门文章
- 【CodeForces - 507B】Amr and Pins(思维贪心,几何问题)
- 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
- 【HDU - 1254 】推箱子 (双bfs)
- 5.Underfitting and Overfitting
- 编程题【Math类】计算类
- linux实现自动互信,Linux 使用shell脚本实现自动SSH互信功能
- Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串:
- 三羊献瑞c语言编程入门,蓝桥杯-三羊献瑞,
- opencv 滤镜效果php,OpenCV实现马赛克和毛玻璃滤镜效果
- 《Python Cookbook 3rd》笔记(3.10):矩阵与线性代数运算