一道物理题

好久没来填坑了【手动捂脸熊】

啦啦啦物理考试终于结束了。。

所以水一波物理题。。。看!下!面!↓

逃离(escape)
Description

可怜的江流儿被困在了一个正 N 边形的中心。而追捕它的 N 只山妖存在于
正 N 边形的每个顶点上。山妖们按照顺时针方向,用 1~N 标号,因为山妖很傻,
所以每个山妖 i 都会朝 i+1 号山妖以一个固定的速率移动,移动方向会随着 i+1
位置变化而变化(N 号山妖朝 1 号山妖),最终所有山妖都将到达正 N 边形的
中心,也即江流儿的位置,从而完成追捕。
所以江流儿想要知道最后一只山妖到达中心的时间是多少,以便寻找逃离的
契机。
Input
一行三个整数 N,A,V,分别表示正多边形的边数,正多边形的边长,每
个分身移动的速度。
Output
一个实数,表示最后一只山妖到达中心的时间,保留小数点后 5 位。
Sample Input 1
3 10 5
Sample Output 1
1.33333
Sample Input 2
4 20 8
Sample Output 2
2.50000
Data Limitation
对 20%的数据,N<=4,且答案<=1000;
对 70%的数据,N<=20;
对 100%的数据,N<=300,A<=400000,V<=10000,且答案<=10000000。

第一眼目测不是很懂题目,反正我就是这个样子的

然后几眼之后看懂了题目。。

首先有一点是肯定的,这N只妖怪是等价的,换句话说,是同时到达终点的

YY任意一只的轨迹,大概就是一个绕圈圈的东西,像这样↓

画的不是很好QAQ,不过大致就是这个意思

再YY一下,发现部分分并没有什么意义,完全不晓得怎么打暴力

然后通过画图可以发现一些奇怪的东西

到达中心的时间就是所有点相遇的时间

如图,我们分析其中相邻的两个点。将 A 与 B 的移动方向关于 AB 线段正交分解,AB相互靠近的速度可以分为两个部分,一部分为 A 靠近的速度,即为 A 原本的速度,另一部分为 B 远离的速度,即 B*cos(a)的速度(a 指 A 与 B 速度的夹角)。而 B 分解出来的另一个关于线段 AB 垂直的速度,对于我们要考虑的问题没有影响,仅仅影响了偏转角度,所以没有分析价值,直接忽略。由于题目已给出边数,速度间的夹角可以求出。

题目就转化成了一个简单的追击问题。

所以ans=A/(1-cos(2*π/N))/V

贴上高贵的代码↓

#include<cstdio>
#include<cstdlib>
#include<cmath>
#define PI acos(-1.0)
using namespace std;

int a,n,v;
double R,dv,sita;

int main()
{
    freopen("escape.in","r",stdin);
    freopen("escape.out","w",stdout);
    scanf("%d%d%d",&n,&a,&v);
    sita=2*PI/n;
    R=(double)a/2/sin(sita/2);
    dv=(double)v*sin(sita/2);
    printf("%.5lf\n",R/dv);
    return 0;
}

然后,就好啦!

【写的有漏洞的,欢迎路过大神吐槽】

2016-09-12 23:45:50

Ending.

时间: 2024-10-13 00:05:24

一道物理题的相关文章

每天一道Java题[11]

题目 synchronized怎么实现线程同步?请修改<每天一道Java题[10]>中的MyRunnableThread类以解决三个线程都获取到10的问题. 解答 方法一: 采用synchronized关键字包裹需要保证线程安全的代码块,来实现线程同步.语法格式为: Synchronized(expression){ //需同步的代码 } <每天一道Java题[10]>中的MyRunnableThread类修改为: package me.huangzijian; public cl

每天一道Java题[3]

问题 为什么在重写equals()方法的同时,必须重写hashCode()方法? 解答 在<每天一道Java题[2]>中,已经对hashCode()能否判断两个对象是否相等做出了解释.equals()方法与hashCode()方法的关系如下: 如果两个对象的hashCode()返回值不一样,则equals()返回的结果必为false. 如果两个对象的hashCode()返回值一样的时候,equals()返回的结果未知. 如果两个对象的equals()返回的结果为true,则两个对象的hashC

一天一道算法题---6.26---二分查找

感谢微信平台---一天一道算法题----每天多一点进步-- 好累啊  现在在用win7自带的输入法 打起来真麻烦 快点把这2天的搞完就重装了 还是直接来源于----〉 待字闺中 分析 给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i.假设A中的元素递增有序.且不重复,请给出方法,找到这个Magic Index.更进一步,当A中允许有重复的元素,该怎么办呢? 没有重复元素的情况 一些同学在遇到这个题目的时候,往往会觉得比较简单.

一天一道算法题--6.25--无定义

感谢微信平台---一天一道算法题--每天多一点进步---- 其实今天我接下去补上的几题都来自---待字闺中 所以我就原封不动的将它的题目与分析搬过来了 原题 给定一个数组,我们可以找到两个不相交的.并且是连续的子数组A和B,A中的数字和为sum(A), B中的元素和为sum(B).找到这样的A和B,满足sum(A) - sum(B)的绝对值是最大的. 例如:[2, -1 -2, 1, -4, 2, 8]划分为A=[-1, -2, 1, -4], B=[2, 8], 最大的值为16 分析 如果没有

一天一道算法题---6.27---二分图

感谢微信平台---一天一道算法题---每天多一点进步--- Ah... last... 也很晚了 快2点半了 C罗也告别这届世界杯了  主要还是输给德国太多球了 美国也没赢 唉 还是来源于----> 待字闺中 原题 大家都知道facebook用户都是双向的好友,a是b的好友,那么b一定是a的好友,现在给定一个用户列表,其中有些用户是好友,有些不是,请判断,这些用户是否可以划分为两组,并且每组内的用户,互相都不是好友.如果能,请给出这个划分. 例子1: 用户:{1, 2, 3} 好友关系:1-2,

前端面试的一道算法题

(使用canvas解答) 下面说一个跟前端有点相关并且有点趣的一道算法题. 题目: 平面上有若干个不特定的形状,如下图所示.请写程序求出物体的个数,以及每个不同物体的面积. 分析 想要知道有多少个图形,想到的就是先获取图片中的每一个像素点然后判获取像素点的背景颜色(RGBA).想要获得图片中的每一个像素点,那就可以联想到使用h5的canvas.如下: 菜鸟教程中canvas的getimagedata方法http://www.runoob.com/tags/canvas-getimagedata.

一天一道算法题--6.19--二分搜索

感谢微信平台---一天一道算法题---每天多一点进步 这是昨天的 只贴下题目 == 再把今天的也是一样处理了   这2天 不想写 可能晚上会有改变吧.. problem: 给定一个最多包含40亿个随机排列的32位 二进制的无符号整数 找出不在文件中的数.显然 由于 2^32=4294967196大于4亿 所以缺少的数不止一个 现限制只能使用几个外部的临时文件和仅几百个字节的内存. ****************************** 过了明天 就没事了 =-= 一天一道算法题--6.19

一道推理题

题目:http://115.28.76.232/problem?pid=1115 题意:初始给定两个完美数1和3,如果都是完美数,那么也是完美数.现在给定一个数,判断 它是否是完美数. 分析:嗯,这道题Mayuyu有两种方法,第一种方法是按照题意有,那么我们进行递归直接判 断.这样做的时间复杂度很高,通过打表对一些数的观察发现,只需要看这个数是否只由3和5组成. 打表代码: #include <iostream> #include <string.h> #include <s

一天一道算法题--6.13---计算几何

感谢微信平台---一天一道算法题---每天多一点进步 本来 想在世界杯之前 可以 开开心心地A了今天的算法题  .... 竟然是计算几何 我高数 那么渣....... 这题 先放着吧..... 哎.... 链接 还是一样先放出来 . touch me 平常这个点 再过会 就应该要碎觉了 今天 = 个揭幕战 累死我的节奏,,, 现在去做点什么呢........... 一天一道算法题--6.13---计算几何,布布扣,bubuko.com