[FJSC2014]滑行

【题目描述】

  首长NOI惨跪,于是去念文化课了。现在,他面对一道物理题。

  现在有一个小滑块可以在地面上滑行,地面上被划分成不同的区域,使得小滑块在不同的区域内部有一个不同的速度上限。

  小滑块在(0,0)点,我们现在要推动小滑块到目标点(x,y)。

  地面上有N层区域,每层区域都是矩形。现在给你一个序列{hi}表示每层区域的高度,覆盖的地面横坐标范围是0~x,第i个区域的限速是vi。

  注:y=Σhi,其它的地方小滑块不允许进入。

  现在我们要设计一个路线使得小滑块滑到目标点的用时最小。

【输入格式】

  第一行两个整数,分别表示N,x。

  第二行N个整数,第i个数表示hi。

  第三行N个整数,第i个数表示vi。

【输出格式】

  一行一个整数,表示最小用时,保留到小数点后第三位。

【样例输入】

1 5

5

1

【样例输出】

7.071

【数据范围】

  N<=100,x<=1000,对于任意i:1<=i<N,有vi<vi+1

Solution

  由于我以前查过费马原理,光路最速,所以就。。。。。。

  就是一个二分,注意arcsin(x)中的|x|<=1,所以要把它倒着做。

 1 #include<cstdio>
 2 #include<cmath>
 3 int n,m,h[110],v[110];
 4 double l,r,pi=3.14159265359,mid,t;
 5 bool check(double a)
 6 {
 7     double x=0,tmp;t=0;
 8     for(int i=1;i<=n;i++)
 9     {
10         x+=(tmp=h[i]*tan(a));
11         t+=sqrt(h[i]*h[i]+tmp*tmp)/v[i];
12         a=asin(v[i+1]*sin(a)/v[i]);
13     }
14     return x>m;
15 }
16 int main()
17 {
18     scanf("%d%d",&n,&m);int i;
19     for(i=n;i;i--)scanf("%d",&h[i]);
20     for(i=n;i;i--)scanf("%d",&v[i]);
21     for(l=0,r=pi/2,i=1;i<=80;i++,check(mid=(l+r)/2)?r=mid:l=mid);
22     printf("%.3lf\n",t);
23 }

[FJSC2014]滑行

时间: 2024-11-03 17:26:58

[FJSC2014]滑行的相关文章

科目三考试什么情况会被判定空挡滑行

记录别人的经验: 科目三起步出现空挡滑行两次 什么原因 一起步就报空挡滑行了 有两个教练 一个教练说我起步松离合慢 还有一个教练说我档没挂到位??? 么纠结了,规矩是为了应付考试的,按照标准来做,不要照着你的习惯来做,那样冒得好处的..你如果一直把脚放在离合上,别个是教练陪考员听车子的运作都听的出来.那样你直接挂.么抱有侥幸心理.现在就开始刻意憋你的习惯,你晓得的撒,车只要起步了,除非换档,不然离合的脚都要离开,降档的时候,先点刹车,降下来后再踩离合换挡,,靠边停车时也是一样,降到2档后,离合刹

[FJSC2014]折线统计

[题目描述] 二维平面上有n 个点(xi, yi),现在这些点中取若干点构成一个集合S,对它们按照x 坐标排序,顺次连接,将会构成一些连续上升.下降的折线,设其数量为f(S).如下图中,1->2,2->3,3->5,5->6(数字为下图中从左到右的点编号),将折线分为了4 部分,每部分连续上升.下降. 现给定k,求满足f(S) = k 的S 集合个数. [输入格式] 第一行两个整数n 和k,以下n 行每行两个数(xi, yi)表示第i 个点的坐标. 所有点的坐标值都在[1, 100

[FJSC2014]异或之

[题目描述] 给定n个非负整数A[1], A[2], ……, A[n]. 对于每对(i, j)满足1 <= i < j <= n,得到一个新的数A[i] xor A[j],这样共有n*(n-1)/2个新的数.求这些数(不包含A[i])中前k小的数. 注:xor对应于pascal中的“xor”,C++中的“^”. [输入格式] 第一行2个正整数 n,k,如题所述. 以下n行,每行一个非负整数表示A[i]. [输出格式] 共一行k个数,表示前k小的数. [样例输入] 4 5 1 1 3 4

怎么用几何画板创建滑行反射变换

对于几何画板很多的用户不仅会用到平移.旋转.缩放.反射和迭代这些,如果有需求的话还可以通过“创建自定义变换”,建立新的变化规则来满足自己实现对象的变换.其实这就是自定义变换.对于自定义变换的例子有很多,下面本几何画板教程将以利用几何画板创建滑行反射变换为例作详细讲解. 具体的操作步骤如下: 步骤一 在绘图区域构造一条竖直的直线AB(按住Shift+构造直线),并且在右边构造一点C.  构造垂直的直线AB和点C示例 步骤二 选定点A.点B,执行“标记向量”,把点C按标记向量平移得到C'.再标记直线

[FJSC2014]化合物

[题目描述] 首长NOI惨跪,于是去念文化课了.现在,他面对一道化学题. 这题的来源是因为在一个奇怪的学校两个化竞党在玩一个奇怪的博弈论游戏,这个游戏很蛋疼,我相信你们也没有兴趣听. 由于这个游戏涉及博弈论,因此化竞的同学就要求首长求一个类似SG函数的值. 他们手中有一种非常神奇的化合物,它的分子由N个原子组成(不要在意一个原子可能和及其多个原子成键这个细节).这个分子构成了一个树结构,1号分子为根. 若两个原子i.j到它们的最近公共祖先的距离分别是li和lj,定义它们的Aij值为: Aij =

[FJSC2014]圈地

[题目描述] 2维平面上有n个木桩,黄学长有一次圈地的机会并得到圈到的土地,为了体现他的高风亮节,他要使他圈到的土地面积尽量小.圈地需要圈一个至少3个点的多边形,多边形的顶点就是一个木桩,圈得的土地就是这个多边形内部的土地.(因为黄学长非常的神,所以他允许圈出的第n点共线,那样面积算0) [输入格式] 第一行一个整数n,表示木桩个数. 接下来n行,每行2个整数表示一个木桩的坐标,坐标两两不同. [输出格式] 仅一行,表示最小圈得的土地面积,保留2位小数. [样例输入] 样例1:3 0 0 0 1

[BZOJ3696][FJSC2014]化合物(异或规则下的母函数)

题目:http://hzwer.com/3708.html 分析: 类似树分治思想,设f[x][i]表示以x为根的子树的所有点中,与x的距离为i的点有多少个,这个可以预处理出来 然后我们考虑每颗子树对ans的贡献 1.以x为起点的某条链i,ans+=f[x][i] 2.以x为起点的两颗不同的子树i,j: 如果把“异或”看作“和”,那么就是两个子树对应的f[]相乘(其实就是母函数啦) 但是这里是“异或”啊!!其实只要把作乘法时候的系数不要变,指数xor一下就行 比如说正常的乘法:{1,3}*{1}

BZOJ3695 滑行

转化模型就变成几层折射率不同的玻璃光要怎么走才能从(0, 0)到(x, y) 我们发现第一次光线射出去的角度确定,之后光的行程是确定的 而且角度和最后到达y时的x成正相关,于是可以二分! 然后物理学学好就可以了QAQ 1 /************************************************************** 2 Problem: 3695 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:24

【UOJ 47】滑行的窗口

[题目描述]: 给定一个长度为n的数列a,再给定一个长度为k的滑动窗口,从第一个数字开始依次框定k个数字,求每次框定的数字中的最大值和最小值,依次输出所有的这些值.下面有一个例子数组是 [1 3 1 3 5 6 7] , k 是3: 窗口位置 窗口中的最小值 窗口中的最大值 [1 3 -1] -3 5 3 6 7 -1 3 1 [3 -1 -3] 5 3 6 7 -3 3 1 3 [-1 -3 5] 3 6 7 -3 5 1 3 -1 [-3 5 3] 6 7 -3 5 1 3 -1 -3 [5