题意

把一个边长为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]相关推荐

  1. 19_05_01校内训练[划分]

    题意 给出长度为n的序列,只有1,0,-1.要求将其划分为若干长度在[L,R]之间的连续序列,一个序列若和大于0,造成1的贡献:若小于0,造成-1的贡献:否则没有贡献.求最大的贡献. 时间复杂度要求n ...

  2. 校内训练赛题解第三篇

    校内训练赛题解 人气估值 解题思路 脑力训练计划 (模拟 + 字符串) 解题思路 大暑赛期(贪心 + 思维) 人气估值 题目描述 你是某动画制作公司的企划部长.如今动画制作公司制作的东西,已经不仅仅局 ...

  3. fzyzojP3372 -- [校内训练20171124]博弈问题

    对于每个点都要答案 还是异或 trie树合并石锤了 朴素枚举是O(n^2*17)的 怎么办呢? 我们发现合并的时候,一些部分的trie的子树还是不变的 改变的部分也就是合并的复杂度可以接受 鉴于大部分 ...

  4. 20170910校内训练

    CCT 最近学校又发了n本五三题霸,BBS看到后十分高兴.但是,当他把五三拿到手后才发现,他已经刷过这些书了!他又认真地看了一会儿,发现新发的这些五三是2017版的,而他刷的是2016版的.现在他想找 ...

  5. 20170908校内训练

    题意: 学过博弈论的同学都知道Nim游戏后手必胜的条件是异或和为0 给定一棵树 ,支持修改单点点权,询问链上异或和 预处理每个点到根的路径的异或和 由于异或的特殊性质,在求链x->y的异或和的时 ...

  6. 19_03_26校内训练[魔法卡片]

    题意 有n张有序的卡片,每张卡片上恰有[1,m]中的每一个数,数字写在正面或反面.每次询问区间[l,r],你可以将卡片上下颠倒,问区间中数字在卡片上方的并的平方和最大是多少.q,n*m≤1,000,0 ...

  7. 平面图转对偶图19_03_21校内训练 [Everfeel]

    对于每个平面图,都有唯一一个对偶图与之对应.若G'是平面图G的对偶图,则满足: G'中每一条边的两个节点对应着G中有公共边的面,包括最外部无限大的面. 直观地讲,红色标出来的图就是蓝色标出的图的对偶图 ...

  8. [3.30校内训练赛]

    来自FallDream的博客,未经允许,请勿转载,谢谢. --------------------------------------------------- ditoly这次打好了虐爆我们的主意, ...

  9. 2017-3-23校内训练

    学长日常出丧题虐人 100+90+64=254/300 T1.数据结构 题目大意:给定n个数,每次给出x和y,询问一个区间内多少数模x等y.(n,询问次数,数字大小<=40000) 思路:用差分 ...

最新文章

  1. 线性代数:05 实对称矩阵与二次型
  2. 调用webservice接口,数据不回滚问题
  3. Red Hat Linux、rhel 和 Fedora Core 以及 Centos 区别与联系
  4. NullPointerException
  5. python中静态方法可以访问对象变量_python 面向对象-实例变量、类变量、实例方法、类方法、静态方法...
  6. 跳一跳python_微信跳一跳python怎么刷分?跳一跳python怎么使用?
  7. 谷歌上线数据搜索引擎 Dataset Search
  8. win7下import pytorch报错AttributeError: function 'AddDllDirectory' not found
  9. java 1.5 代替for循环_J2EE 1.5 提供的另一种形式的for循环
  10. CentOS下搭建docker+.net core
  11. 1.Kubernetes 简介
  12. java实现kafka发送消息和接收消息(java无注解方式+springBoot注解方式)
  13. VPP buffer不足
  14. 官网下载Windos10正版镜像并安装
  15. Java+Servlet+Jsp(el, jstl)+MyBatis的CRUD练习小项目
  16. QT中的视频显示优化
  17. EI目录下载地址及保护密码
  18. html5悬浮圆圈背景动画特效,html5圆圈浮动背景动画特效
  19. 广州工作2个月!差人的公司可以call我
  20. OI回忆录第一章 逐梦之始

热门文章

  1. 【CodeForces - 507B】Amr and Pins(思维贪心,几何问题)
  2. 【牛客 - 289 I】这是一个沙雕题I (字符串问题,水题)
  3. 【HDU - 1254 】推箱子 (双bfs)
  4. 5.Underfitting and Overfitting
  5. 编程题【Math类】计算类
  6. linux实现自动互信,Linux 使用shell脚本实现自动SSH互信功能
  7. Oracle存储过程中使用游标来批量解析CLOB字段里面的xml字符串:
  8. 三羊献瑞c语言编程入门,蓝桥杯-三羊献瑞,
  9. opencv 滤镜效果php,OpenCV实现马赛克和毛玻璃滤镜效果
  10. 《Python Cookbook 3rd》笔记(3.10):矩阵与线性代数运算