折线中点

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线。
请你求出这条折线的中点坐标。

Input:

第一行包含一个整数N。 (2 <= N <= 100)
下面N行每行包含两个整数Xi, Yi代表Pi的坐标。(0 <= Xi, Yi <= 10000)

Output:

输出折线段的中点坐标。坐标保留一位小数。
(中点坐标:在此折线上取一个点,使折线左右两边的长度相等)

Sample Input:

3
0 0
30 30
40 20

Sample Output:

20.0 20.0
解题思路:纯数学题,思路比较简单。数组c保存的是当前点到前一个点的距离,通过累计,当求和完折线总长度时,应该找折线总长一半所在的线段。设p(x,y)是折线的中点,A(a1,b1)是p的前一个点,B(a2,b2)是p的后一个点,线段AP:线段AB=t,则求中点p坐标应为:x=a1+t*(a2-a1);y=b1+t*(b2-b1)。
AC代码:
 #include <bits/stdc++.h>
using namespace std;
int main()
{
int N;
int k,a[],b[];
double sum,p1,p2,tmp,c[],p;
while(cin>>N){
memset(c,,sizeof(c));
cin>>a[]>>b[];
k=c[]=sum=;
for(int i=;i<N;++i){
cin>>a[i]>>b[i];
sum+=sqrt((a[i]-a[i-])*(a[i]-a[i-])+(b[i]-b[i-])*(b[i]-b[i-]));
c[i]=sum;
}
tmp=sum/2.0;
for(int i=;i<N;i++){
if(c[i]>=tmp){
k=i;
break;
}
}
//k=lower_bound(c,c+N,tmp)-c;
tmp-=c[k-];
p=tmp/(c[k]-c[k-]);
p1=a[k-]+(a[k]-a[k-])*p;
p2=b[k-]+(b[k]-b[k-])*p;
printf("%.1f %.1f\n",p1,p2);
}
return ;
}
 

ACM_折线中点的更多相关文章

  1. hihocoder1696 折线中点(几何)

    https://hihocoder.com/problemset/problem/1696 求折线中点,一开始想成先求横坐标中点了,肯定是错的. 一定要从线段长度求中点,然后中点公式推了好久.. #i ...

  2. [Offer收割]编程练习赛48

    题目1 : 折线中点 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定平面上N个点P1, P2, ... PN,将他们按顺序连起来,形成一条折线. 请你求出这条折线的 ...

  3. [hihocoder][Offer收割]编程练习赛48

    折线中点 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #includ ...

  4. C# 实现 任意多边形切割折线算法

    1.    内容简介 本文旨在解决任意多边形切割折线,获取切割之后的折线集合. 本文实现的算法内容包括:判断两条线段是否相交,如若相交,获取交点集合.对线上的点集,按斜率方向排序.判断点是否在多边形内 ...

  5. 安卓图表引擎AChartEngine(三) - 示例源码折线图、饼图和柱状图

    折线图: package org.achartengine.chartdemo.demo.chart; import java.util.ArrayList; import java.util.Lis ...

  6. 安卓图表引擎AChartEngine(四) - 源码示例 嵌入Acitivity中的折线图

    前面几篇博客中都是调用ChartFactory.get***Intent()方法,本节讲的内容调用ChartFactory.get***View()方法,这个方法调用的结果可以嵌入到任何一个Activ ...

  7. 【带着canvas去流浪】(2)绘制折线图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 3.1 一般折线图 3.2 用贝塞尔曲线绘制平滑折线图 四. 大数据量场景 示例代码托管在:https://github.com/dashnowo ...

  8. OpenGL——折线图柱状图饼图绘制

    折线图绘制代码: #include<iostream> //旧版本 固定管线 #include<Windows.h> #include <GL/glut.h> // ...

  9. 带着canvas去流浪系列之二 绘制折线图

    [摘要] 用canvasAPI实现echarts简易图表 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...

随机推荐

  1. 破解电信光猫华为HG8120C关闭路由功能方法

    昨天电信的工作人员来安装了电信的光纤宽带,使用的是华为HG8120C这款光电转换器与路由器一体机 这导致下级路由无法直接使用PPPOE拨号连接到互联网,且无法使用端口映射来实现外网访问 而华为开放给用 ...

  2. Prime Distance(二次筛素数)

    Description The branch of mathematics called number theory is about properties of numbers. One of th ...

  3. Office EXCEL 如何将复制的一堆数据按空格断开

    1 复制粘贴一堆数据,点击数据-分类,然后点击下一步   2 一直下一步   3 最后效果如下图所示  

  4. MySQL Study之--MySQL用户及权限管理

    MySQL Study之--MySQL用户及权限管理     MySQLserver通过MySQL权限表来控制用户对数据库的訪问.MySQL权限表存放在mysql数据库里.由mysql_install ...

  5. Python中的shelve模块

    shelve中有用的函数就是open(),但是下面编写的数据库函数中调用路径是经常出错,如果直接调用一个从来没有用过的文件却能正常运行,暂时没有找出原因. 调用shelve.open()会返回一个sh ...

  6. Jenkins系列之-—05 节点配置

    一.节点配置 1. 进入[系统管理]-[节点管理]-[新建节点],录入节点名,选择Permanent Agent,下一步录入节点详细配置信息,如下: Name:节点名称 Description:节点描 ...

  7. POI 的使用

    POI 使用 一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能..NET的开发人员则 ...

  8. android 不同进程间的调用 AIDL 实现通讯服务

    android 不同进程间的调用  AIDL 实现通讯服务       近期对aidl android 不同进程间的调用,不同运用间的调用做了一些尝试: 过程例如以下: 1:首先在要被调用的程序里写好 ...

  9. 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》

    本书基本信息 丛书名:安全技术大系 作者:王清(主编),张东辉.周浩.王继刚.赵双(编著) 出版社:电子工业出版社 出版时间:2011-6-1 ISBN:9787121133961 版次:1 页数:7 ...

  10. ZrcListView

    https://github.com/zarics/ZrcListView