1005
来源:互联网 发布:关了蜂窝数据还跑流量 编辑:程序博客网 时间:2024/06/05 20:11
题目标号:1015
题目大意:骑车直角拐弯。给4个量,车宽和车长,要拐之前的路的宽度和路拐之后的宽度。求汽车能不能拐过去。
解题思路:猛地一看,这更像个物理数学问题,根据第一感觉,我们应该可以用函数来表示出来汽车能不能拐的一个关键量,设车身与拐之前的路的角度为A,那么可以列出来2个 关键函数:s = l * cos(θ) + w * sin(θ) - x;h = s * tan(θ) + w * cos(θ);s是车身拐之前的最后面的点距离拐点的水平距离,h则为远离拐点的车身的竖直的高度。如果是用数 学解决这个问题,应该是用三角函数求极值的问题解决。但我们程序就不一样了,根据计算机的高效性,这明显是个凸的函数,用三分逼近就可以了。
做题感想:实话说,开始遇到这样的题目我是直接懵了的,不知道如何下手的感觉,仔细想想贪心和搜索貌似也没有地图什么的,后来无意看三分可见才发现了它,思路都是老师 的,我只是理解的基础上的加以总结。学无止境,不进则退。努力吧,骚年!
#include <iostream>#include <stdio.h>#include <math.h>using namespace std;double pi = acos(-1.0);double x,y,l,w,s,h;double cal(double a){ s = l*cos(a)+w*sin(a)-x; h = s*tan(a)+w*cos(a); return h;}int main(){ double left,right,mid,midmid; while(scanf("%lf%lf%lf%lf",&x,&y,&l,&w)!=EOF) { left = 0.0; right = pi/2; while(fabs(right-left)>1e-8) { mid = (left+right)/2; midmid = (mid+right)/2; if(cal(mid)>=cal(midmid))right = midmid; else left = mid; } if(cal(mid)<=y)printf("yes\n"); else printf("no\n"); } return 0;}
0 0
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- 1005
- spark 程序在提交到集群上,出现ClassNoFound的错误,解决办法
- python #coding:utf-8和setdefaultencoding有什么区别?
- KMP
- Java - - 数组
- LESSCSS学习
- 1005
- listview分割线设置
- 正则表达式分组表达式
- 2014上海网络赛1004||hdu5045 contest【状态压缩dp】
- LNMP
- 关于虚基类指针向派生类指针转化
- Swift 学习博客
- OpenCv学习笔记(二)--Mat矩阵(图像容器)的创建及CV_8UC1,CV_8UC2等参数详解
- CRC16(modbus)校验