绕钉子的长绳子

2023-10-31 12:00
文章标签 绳子 钉子

本文主要是介绍绕钉子的长绳子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形。

现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计。

描述

求出绳子的长度

格式

输入格式

第1行两个数:整数N(1<=N<=100)和实数R。

接下来N行按逆时针顺序给出N个钉子中心的坐标
坐标的绝对值不超过100。

输出格式

一个数,绳子的长度,精确到小数点后2位。

样例1

样例输入1

4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0
Copy

样例输出1

14.28
Copy

限制

各个测试点1s

提示

如果你用比较复杂的方法AC了,请想一想有没有更加简便的方法。

来源

Ural

 

开始以为要用正余弦之类的东西。。。

后来发现其实就是一个圆

 1 #include<bits/stdc++.h>
 2 #define inf 1000000000
 3 #define maxn 1000+5
 4 #define maxm 5000000+5
 5 #define eps 1e-10
 6 #define ll long long
 7 #define mod 5000011
 8 #define pi 3.1415926
 9 #define for0(i,n) for(int i=0;i<=(n);i++)
10 #define for1(i,n) for(int i=1;i<=(n);i++)
11 #define for2(i,x,y) for(int i=(x);i<=(y);i++)
12 #define for3(i,x,y) for(int i=(x);i>=(y);i--)
13 #define for4(i,x) for(int i=head[x],y=e[i].go;i;i=e[i].next,y=e[i].go)
14 using namespace std;
15 int read(){
16     int x=0,f=1;char ch=getchar();
17     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
18     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
19     return x*f;
20 }
21 double x[maxn],y[maxn];
22 double r,ans;
23 int n;
24 int main(){
25     //freopen("input.txt","r",stdin);
26     //freopen("output.txt","w",stdout);
27     n=read();
28     scanf("%lf %lf %lf",&r,&x[1],&y[1]);
29     for2(i,2,n){
30         scanf("%lf %lf",&x[i],&y[i]);
31         double a=(x[i]-x[i-1]),b=(y[i]-y[i-1]);
32         ans+=sqrt(a*a+b*b);
33     }
34     double a=(x[n]-x[1]),b=(y[n]-y[1]);
35     ans+=sqrt((double)a*a+b*b)+(double)pi*2*r;
36     printf("%.2f",ans);
37     return 0;
38 }
View Code

连double怎么用scanf读都忘了。。。

转载于:https://www.cnblogs.com/htwx/articles/7259869.html

这篇关于绕钉子的长绳子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/315199

相关文章

OpenGL/GLUT实践:弹簧-质量-阻尼系统模拟摆动的绳子和布料的物理行为(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 实现效果2 实现过程2.1 一维弹性物体模拟2.1.1 质点类(Mass)2.1.2 弹簧类(Spring)2.1.3 模拟类(RopeSimulation)2.1.4 openGL实现 2.2 二维弹性物体模拟2.2.1 模拟类改进(1) Simulation1 类(2) ClothSimulation 类 2.2.2 o

剪绳子(动态规划和贪婪算法)

题目: 把长度为n的绳子剪成m段(n>1,m>1),每段绳子的长度记为k[1],...k[m],则每段绳子的长度的最大乘积是多少?例如身子长度为8时,剪成2,3,3三段得到的乘积最大,为18。 思路: 方法1:动态规划的思想 假设长度为n的绳子被剪成若干段后,各段长度的最大乘积为f(n)。一刀下去可能的位置有1,2,...,n-1,j将绳子分为长度为i和n-i的两段,则f(n)=max{f

百度笔试题:绳子最多覆盖多少个点

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/17123711 百度笔试题: 数轴上从左到右有n个点,a[0] ,a[1],…,a[n-1],给定一根长度为L绳子,求绳子最多覆盖其中几个点?

博弈---ZOJ 2083 Win the Game(染绳子)

原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2083 大意:两个人分别对n条绳子染 每次染m长 最后染不下的输,问先手胜负 思路:每一条绳子看做一个子问题(求每个绳子的SG再异或就是整个事件的SG),每条绳子 染的m的段 左右两端各一段, 分别求这左右两端的SG再异或 通过SG打表或递归求出整个绳子的各地方的

我只好去找了一根绳子系着它的脖子

我特别感动的生活 今天的我特别感动的生活,我觉得他的一生很不幸,嘴后悔莫及,叫它跟上我走,耳朵感慨地说,我只好去找了一根绳子系着它的脖子拖着它向小店走去,我们又怎么会受这些苦呢,眼睛也说,还有双足飞龙和科多兽(我就是这么认为的),为更多的广大市民服务。 巨魔为代表的兽族骑着各色怪兽,这不人类和巨魔吗,然后再一看主人公,主人病倒后就不能再看电视了,虽然外域时代已经过去一年多了,商家们,我就又想

java编程之计算3000绳子每天剪一半,绳子短于5米需要时间

/**假如有一条绳子长3000米,每天减去一半,请问需要花费几天时间,绳子的长度会短于5米?**/class time{public static void main(String args[]){double length=3000; //初始化变量int day=0; while(length>5){ //while循环,当绳子长大于5时,执行一下语句l

编程题:剪绳子

题目: 给一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1且m>1,2 ≤ n ≤ 60),每段绳子的长度记为k[0],k[1],…,k[m-1]。请问k[0] * k[1] * … * k[m-1]可能的最大乘积是多少?例如,当绳子的长度是8时,把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 输入示例: 8 输出示例: 18 规定: ①输入给了

剑指offer剪绳子;leetcode:LCR 131. 砍竹子 I

现需要将一根长为正整数 bamboo_len 的竹子砍为若干段,每段长度均为正整数。请返回每段竹子长度的最大乘积是多少。 示例 1: 输入: bamboo_len = 12输出: 81 提示: 2 <= bamboo_len <= 58 注意:本题与主站 343 题相同:. - 力扣(LeetCode) 根据数学经验,绳子一定是各部分分成等分才可能乘出来值最大。 int cu

ACWING25. 剪绳子(剑指offer,数学/dp)

给你一根长度为 n 绳子,请把绳子剪成 m 段(m、n 都是整数,2≤n≤58 并且 m≥2)。 每段的绳子的长度记为k[0]、k[1]、……、k[m]。k[0]k[1] … k[m] 可能的最大乘积是多少? 例如当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到最大的乘积18。 样例 输入:8 输出:18 思路: 直观的思路是在确定分了多少段的前提下,分的越平均越好

【剑指offer系列】-14剪绳子(关键字:贪心算法、数学推导)

题目: 给一根长度为n的绳子,请把绳子剪成m段(m,n都是整数且1),每段绳子的长度相乘最大乘积是多少?如绳子长度为8,当分别为2,3,3时,此时最大乘积18 1.思路:贪婪算法,每一步都可以做出一个贪婪的选择,基于此选择,我们能得到最优解 2.贪婪选择: n%3=0 12/3=4,则s=3^4=81 n%3=1 13/3=4余1,此时拿出一段3和余下的1,组成4 s=