这题刚开始做计算几何的时候就做到了,无奈有点小看不懂,今天又看到这题了,下决心把它A了 = =。。

首先先把顶点全求出来,然后就是抛物线的V和角度与抛物线方程( y = ax^2 + bx + c)的关系。

可知

x = Vx * t;
y = Vy * t - 1/2*g*t*t;

二者联立,消去t,就得到了抛物线方程。

然后我的做法是,二分抛物线二次项系数a,因为已知起点和终点,那么b和a的关系自然有了 -b/(2a) 为极值点 x 坐标,这个x肯定是第一个点和最后一个点的中点x坐标。

然后求出来 a ,b,再由推导出来的关系求出V和角度即可。

我觉得我像是在做高中数学 + 物理混合题。。。T T。。

#include <map>
#include <set>
#include <queue>
#include <stack>
#include <math.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <string>
#include <algorithm>
#define MID(x,y) ( ( x + y ) >> 1 )
#define L(x) ( x << 1 )
#define R(x) ( x << 1 | 1 )
#define BUG puts("here!!!")
#define STOP system("pause")using namespace std;const int MAX = 110;
const double g = 9.8;
const double eps = 1e-8;
const double inf = 1e20;
const double pi = acos(-1.0);
bool dy(double x,double y)  {   return x > y + eps;}    // x > y
bool xy(double x,double y)  {   return x < y - eps;} // x < y
bool dyd(double x,double y) {   return x > y - eps;} // x >= y
bool xyd(double x,double y) {   return x < y + eps;}    // x <= y
bool dd(double x,double y)  {   return fabs( x - y ) < eps;}  // x == y
struct point {double x,y;void p(double xx, double yy){x = xx; y = yy;}
};
point p[MAX];double B(double a,double s)
{return -2*a*s;
}int solve(double a, double b, int cnt)
{bool flag = false;for(int i=1; i<cnt-1; i++){double x = p[i].x; double y = p[i].y;if( xy(a*x*x + b*x, y) ) return 1;if( dd(a*x*x + b*x, y) ) flag = true;}if( flag ) return 0;return -1;
}int main()
{int n;double sy, sx;while( ~scanf("%d", &n) ){double ss = 0;int cnt = 0;for(int i=0; i<n; i++){scanf("%lf%lf", &sy, &sx);p[cnt].x = ss;p[cnt++].y = sy;p[cnt].x = ss + sx;p[cnt++].y = sy;ss += sx;}double begin = eps, end = inf;double s = p[cnt-1].x / 2, b, mid;while( begin <= end ){mid = (begin + end)/2;b = B(-mid, s);int ans = solve(-mid, b, cnt);if( ans == 0 ) break;if( ans == 1 )  // 极值点比较低begin = mid;elseend = mid;}double ang = atan(b);double v = sqrt(g/(2*mid))/cos(ang);printf("%.2lf %.2lf\n", ang/pi*180, v);}return 0;
}

zoj 1104 Leaps Tall Buildings(超人不会飞- -。。)相关推荐

  1. ZOJ 1104 Leaps Tall Buildings

    题目大意:给出一些建筑物的高度与宽度,求出一条最矮的抛物线运动轨迹,能够跨过所有的建筑物. 输出初速度与水平方向的夹角,以及初速度的大小. 重力加速度取9.8m/(s^2) 思路: 因为该抛物线过固定 ...

  2. POJ ZOJ题目分类

    POJ,ZOJ题目分类(多篇整合版,分类很细致,全面) 标签: 题目分类POJ整理 2015-04-18 14:44 1672人阅读 评论(0) 收藏 举报 本文章已收录于: 分类: ACM资料(5) ...

  3. POJ,ZOJ题目分类(多篇整合版,分类很细致,全面)

    水题: 3299,2159,2739,1083,2262,1503,3006,2255,3094 初级: 一.基本算法:        (1)枚举 (1753,2965)       (2)贪心(13 ...

  4. ZOJ 题目分类,学校的一个巨巨做的。

     DP: 1011      NTA                    简单题 1013      Great Equipment        简单题 1024      Calendar ...

  5. poj题目详细分类及算法推荐题目

    DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题  ...

  6. ACM POJ 题目分类(完整整理版本)

    DP: 1011   NTA                 简单题  1013   Great Equipment     简单题  1024   Calendar Game       简单题   ...

  7. PUK ACM题目分类

    acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP:  1011   NTA                 简单题  1013   Great Equipment     简单题  102 ...

  8. pku,zju题目分类

    哎呦喂,直接ctrl+A了.话说浙江大学的题还见过的呢.. 公告: [意见反馈][官方博客]   ural pku Zju 题目分类 收藏   感谢 mugu 的提供.... Ural Problem ...

  9. HOJ题目分类//放这儿没事刷刷学算法!嘻嘻!

    各种杂题,水题,模拟,包括简单数论. 1001 A+B 1002 A+B+C 1009 Fat Cat 1010 The Angle 1011 Unix ls 1012 Decoding Task 1 ...

  10. Firebug Console 与命令行全集

    Console API 当打开 firebug (也包括 Chrome 等浏览器的自带调试工具),window 下面会注册一个叫做 console 的对象,它提供多种方法向控制台输出信息,供开发人员调 ...

最新文章

  1. Object类-try-catch-finally-throw-throws-自定义异常
  2. IntelliJ IDEA使用(一):创建maven web项目
  3. html5 head 标签
  4. .net 动软代码生成器
  5. java异常及错误处理大纲
  6. 2.word转换为pdf
  7. Java基础知识之变量与常量、数据类型、类型转换
  8. 类与方法java讲解_Java中方法使用的深入讲解
  9. 大数据对人们的好处_大数据有什么作用和优势
  10. JVM 新生代老年代
  11. Python获取网络中的存活主机以及哪些主机是Linux
  12. linux libsqlite3 dev,在centos中安装sqlite3 dev和其他软件包
  13. 百度地图迁徙大数据_百度地图迁徙大数据:2月5日,成都为全国迁入城市第二;迁出城市第一...
  14. 教你撩妹,每天给小姐姐发一封暖心邮件
  15. 2021-09-18 Android repo 镜像服务器搭建
  16. 服务器电脑通电自动开机
  17. itext文本域自动换行_iText+Flying Saucer生成pdf文档,重写Breaker中文可以换行,但是英文单词会截断问题
  18. 求点赞、被点赞,社交网络用户对点赞又爱又恨
  19. oracle日志如何查看,oracle如何查看日志
  20. python安装扩展库常用的工具是什么和conda_python习题01——董付国学习系列

热门文章

  1. html如何添加qq聊天框
  2. mysql count函数 null_MySql中COUNT(XXX OR NULL)
  3. 双系统windows+linux如何正确删除linux
  4. WMS库存盘点流程 WMS库存盘点计划
  5. android回环地址,Android WebRTC完整入门教程02: 本地回环
  6. 快乐的强化学习6——DDPG及其实现方法
  7. Windows笔记本-U盘无法完成格式化
  8. 奥林匹克计算机竞赛保送,电脑奥赛中最寂寥的竞赛 5学生夺牌直通清华
  9. MarkDown中使用gif的神器:LICEcap
  10. 电赛总结(四)——波形发生芯片总结之AD9854