现在的位置: 首页 > 综合 > 正文

uva972 Horizon Line 扫描线水题

2019年03月18日 ⁄ 综合 ⁄ 共 753字 ⁄ 字号 评论关闭
/****************************************************************
题意:给你两个函数f,g,要你求函数h=max(f,g),的最小值;函数f和g的图像只有平行于x轴的线
思路:扫描一遍就ok了

*****************************************************************/

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
double fv[111],fl[111],gv[111],gl[111];

void input(double *v,double *l,int n)
{
    int i;
    double cnt=0.0;
    for(i=0;i<n;i++)
    {
        scanf("%lf %lf",&v[i],&l[i]);
        l[i]+=cnt;
        cnt=l[i];
    }
}

int main()
{
    int fn,gn;
    while(scanf("%d",&fn)!=EOF)
    {
        input(fv,fl,fn);
        scanf("%d",&gn);
        input(gv,gl,gn);
        int i=0,j=0;
        double ans=max(gv[0],fv[0]);
        double pos=0.0;
        while(i<fn && j<gn)
        {
            ans=min(ans,max(fv[i],gv[j]));
            //printf("i=%d j=%d fl=%f gl=%f ans=%f\n",i,j,fl[i+1],gl[j+1],ans);
            if(fl[i]<gl[j]) i++;
            else j++;
        }
        printf("%.3f\n",ans);
    }
    return 0;
}

抱歉!评论已关闭.