栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

poj 3227 Mountains

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

poj 3227 Mountains

#include <iostream>#include <math.h>#include <iomanip>using namespace std;#define eps 1e-8struct point {     double x, y; }p[1010];double dist(point a, point b) {     return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y) * (a.y - b.y)); }double get_K(point a, point b) {     return (b.y - a.y) * 1.0 / (b.x - a.x); } point intersection(point u1, point u2, point v1, point v2) {     point ret = u1;     double t = ((u1.x - v1.x)*(v1.y - v2.y) - (u1.y - v1.y)*(v1.x - v2.x))         / ((u1.x - u2.x)*(v1.y - v2.y) - (u1.y - u2.y)*(v1.x - v2.x));     ret.x += (u2.x - u1.x)*t;     ret.y += (u2.y - u1.y)*t;     return ret; }int main() {     int n;     double h;     while (cin >> n >> h && (n || h))     {         p[0].x = 0, p[0].y = h;         for (int i = 1; i <= n; i++)         {  cin >> p[i].x >> p[i].y;         }         double k = get_K(p[0], p[2]);         double s = 1.0 * dist(p[1], p[2]);         point mark = p[2];         for (int i = 3; i <= n; i++)         {  if (get_K(p[0], p[i]) > k)  {      k = get_K(p[0], p[i]);      point inter = intersection(p[0], mark, p[i], p[i - 1]);      s += dist(p[i], inter);      mark = p[i];  }         }         cout <<fixed << setprecision(2) << s << endl;     } }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号