思维

[I-Sky Garden_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforces.com/gym/103202/problem/I)

题意

有 \(n\;(1<=n<=500)\) 个同心圆,半径分别为 1,2,3 ... n

有 \(m\;(1<=m<=500)\) 条过原点的直线,把一个圆分为大小相同的 2 * m 部分

圆和直线都是路径,路径长为实际的长度,两两路径会有一个交点,求所有两两交点的最短路之和

思路

\(O(1),O(n),O(n^2),O(n^3)\) 都能写,给出一个 \(O(n^2)\) 的做法

特判!!!,当 m > 1 时两个直线会在圆心有交点,而 m = 1 时圆心没有交点

代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef std::pair<int, int> PII;
#define ALL(x) x.begin(),x.end()
#define pb push_back
#define fi first
#define se second
// #define double long double
const double PI = acos(-1.0);
inline ll _read() {
static ll ans;
static unsigned int c;
static bool p;
for (c = getchar(); c != '-' && (c < '0' || c > '9'); c = getchar());
if (c == '-') p = false, c = getchar(); else p = true;
for (ans = 0; c <= '9' && c >= '0'; c = getchar()) ans = ans * 10 + c - '0';
return p ? ans :-ans;
} ll n, m;
double ans;
int main() {
cin >> n >> m;
for (ll r = 1; r <= n; r++)
{
double tmp1 = 0;
ll cnt = n - r;
//外圈除自身和直径
for (ll i = 1; i < m; i++)
{
double a = min((double)r * 2, PI * i * r / m) + 1;
tmp1 += cnt * a + (cnt - 1) * cnt / 2;
}
tmp1 *= 2;
//外圈直径
ll a = 2 * r + 1;
tmp1 += cnt * a + (cnt - 1) * cnt / 2;
//外圈自身
a = 1;
tmp1 += cnt * a + (cnt - 1) * cnt / 2;
tmp1 *= 2 * m; //同圈除直径
double tmp2 = 0;
for (ll i = 1; i < m; i++)
tmp2 += 2 * m * min((double)r * 2, PI * i * r / m);
//同圈直径
tmp2 += m * 2 * r;
ans += tmp1 + tmp2;
}
if (m > 1)
ans += (n + 1) * n * m;
printf("%.10lf\n", ans);
return 0;
}

2020ICPC上海I - Sky Garden的更多相关文章

  1. ASE19团队项目beta阶段Backend组 scrum6 记录

    本次会议于12月12日,19:30在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Zhikai Chen, Lihao Ran, Xin Kang 请假人员:Hao Wang 每 ...

  2. ASE19团队项目 beta阶段 model组 scrum7 记录

    本次会议于12月10日,19时30分在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Jiyan He, Lei Chai, Linfeng Qi, Xueqing Wu, Kun ...

  3. ASE19团队项目 beta阶段 model组 scrum6 记录

    本次会议于12月9日,19时30分在微软北京西二号楼sky garden召开,持续20分钟. 与会人员:Jiyan He, Lei Chai, Linfeng Qi, Xueqing Wu, Kun ...

  4. ASE19团队项目 beta阶段 model组 scrum5 记录

    本次会议于12月6日,19时30分在微软北京西二号楼sky garden召开,持续20分钟. 与会人员:Jiyan He, Lei Chai, Linfeng Qi, Xueqing Wu, Kun ...

  5. ASE19团队项目 beta阶段 model组 scrum4 记录

    本次会议于12月5日,19时30分在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Lei Chai, Linfeng Qi, Xueqing Wu, Yutong Ling (Z ...

  6. ASE19团队项目 beta阶段 model组 scrum3 记录

    本次会议于12月4日,19时30分在微软北京西二号楼sky garden召开,持续20分钟. 与会人员:Jiyan He, Lei Chai, Linfeng Qi, Xueqing Wu, Yuto ...

  7. ASE19团队项目 beta阶段 model组 scrum2 记录

    本次会议于12月3日,19时整在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...

  8. ASE19团队项目 beta阶段 model组 scrum1 记录

    本次会议于12月2日,18时30分在微软北京西二号楼sky garden召开,持续25分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing ...

  9. ASE19团队项目beta阶段Backend组 scrum8 记录

    本次会议于12月17日,19:30在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Hao Wang, Lihao Ran, Xin Kang, Zhikai Chen 每个人的工 ...

  10. ASE19团队项目beta阶段Backend组 scrum7 记录

    本次会议于12月13日,19:30在微软北京西二号楼sky garden召开,持续10分钟. 与会人员:Hao Wang, Lihao Ran, Xin Kang 请假人员:Zhikai Chen 每 ...

随机推荐

  1. Visual Studio 2017(vs2017)绿色便携版-北桃特供

    原版的VisualStudio2017有几十G,安装起来特别慢,不少用户叫苦连天.该版本是精简过的vs2017,且简化了原来的安装程序,特别适用于教学.个人开发者.某些要求不高的企业. 该绿色便携版是 ...

  2. 新的学习历程-python3 基本运算

    1 print(5 / 2) # 2.5 2 print(5 // 3) #1 取整除 3 print(5 % 3) #2 取余数(取模) 4 print(5 ** 2) #25 5的2次方 5 pr ...

  3. CVE-2018-8174漏洞复现(IE浏览器远程代码执行漏洞)

    漏洞介绍:CVE-2018-8174这个漏洞是针对IE浏览器的一个远程代码执行漏洞,是Windows VBScript Engine 代码执行漏洞,由于VBScript脚本执行引擎(vbscript. ...

  4. leetcode 跳跃游戏系列

    55. 跳跃游戏 能跳一个范围,贪心 class Solution { public: bool canJump(vector<int>& nums) { int m = 0; / ...

  5. java 导入Excel数据校验判断哪行那列

    记录工作 需求是导入数据的时候需要判断哪一行是空行,或者哪一行超过限制字符,然后返回给前端做展示 @PostMapping("/importExcel") @ApiOperatio ...

  6. 杭电oj 偶数求和

    Problem Description 有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值 ...

  7. datax在win10中的安装

    datax安装需要的环境 JDK(1.8以上,推荐1.8) Python(推荐Python2.7.X) Apache Maven 3.x (Compile DataX) 这里只讲下python的安装和 ...

  8. nginx的优化及防盗链

    简介: Nginx是俄罗斯人编写的十分轻量级的HTTP服务器,Nginx,它的发音为"engine X",是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/S ...

  9. vue3使用echarts插件并实现点击下载图表功能

    接到一个新的需求,就是用vue3制作一幅世界地图,并实现点击下载按钮将图表转变为图片下载到本地. 使用插件: html2canvasnpm安装: npm install html2canvas组件引入 ...

  10. Linux 配置共享目录方法

    配置共享目录有三种方法: 第一种:使用Vmware自带的文件共享的功能,进入Vmware,点击虚拟机选项,然后点击"设置",再点击标签"选项"这一项,找到&qu ...