亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

POJ 1039-Pipe(計算幾何-線段相交、求交點)

2019-11-14 10:45:22
字體:
來源:轉載
供稿:網友

Pipe
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 10638 Accepted: 3293

Description

The GX Light Pipeline Company started to PRepare bent pipes for the new transgalactic light pipeline. During the design phase of the new pipe shape the company ran into the problem of determining how far the light can reach inside each component of the pipe. Note that the material which the pipe is made from is not transparent and not light reflecting. 
Each pipe component consists of many straight pipes connected tightly together. For the programming purposes, the company developed the description of each component as a sequence of points [x1; y1], [x2; y2], . . ., [xn; yn], where x1 < x2 < . . . xn . These are the upper points of the pipe contour. The bottom points of the pipe contour consist of points with y-coordinate decreased by 1. To each upper point [xi; yi] there is a corresponding bottom point [xi; (yi)-1] (see picture above). The company wants to find, for each pipe component, the point with maximal x-coordinate that the light will reach. The light is emitted by a segment source with endpoints [x1; (y1)-1] and [x1; y1] (endpoints are emitting light too). Assume that the light is not bent at the pipe bent points and the bent points do not stop the light beam.

Input

The input file contains several blocks each describing one pipe component. Each block starts with the number of bent points 2 <= n <= 20 on separate line. Each of the next n lines contains a pair of real values xi, yi separated by space. The last block is denoted with n = 0.

Output

The output file contains lines corresponding to blocks in input file. To each block in the input file there is one line in the output file. Each such line contains either a real value, written with precision of two decimal places, or the message Through all the pipe.. The real value is the desired maximal x-coordinate of the point where the light can reach from the source for corresponding pipe component. If this value equals to xn, then the message Through all the pipe. will appear in the output file.

Sample Input

40 12 24 16 460 12 -0.65 -4.457 -5.5712 -10.817 -16.550

Sample Output

4.67Through all the pipe.

Source

Central Europe 1995

題目意思:

給出管道上半部分各個拐點處的坐標(x,y),因為管道寬度為1,所以對應下半部分各個拐點處的坐標是(x,y-1)。

有一道光線從管道最左邊射入,光線不能穿透管壁也不能拐彎,求解它是否能穿過這個管道,如果不可以,輸出到達管中位置的最大橫坐標x。

解題思路:

先根據上下拐點的連線確定光線的入射斜率,枚舉其與各個拐點的上下連線是否有交點,因為有交點則說明光線可以穿過該段管道。如果光線能夠穿過管道,那么它將穿過每一段管道。

如果不能穿過,在第k節管道處無法穿過,則需要計算最大坐標x:

分別計算與第k-1節管子的上、下管壁相交, 求得最大坐標。

#include<iostream>#include<cstdio>#include<cmath>#include<iomanip>using namespace std;#define MAXN 30const int INF=1e9;const double eps=1e-3;struct point{    double x,y;};int sgn(double p)//對double確定精度{    if(fabs(p)<eps)  return 0;    return p>0?1:-1;}double circulation(point a,point b,point c)//計算向量BA、CA的叉積{    return (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);}double dir(point A,point B,point P)//計算P點在AB的左側還是右側(AC與AB的螺旋關系){    return circulation(A,B,P);}bool cross(point A,point B,point C,point D)//判斷線段AB和CD是否相交{    return (sgn(dir(A,B,C))*sgn(dir(A,B,D))<=0);}double intersection(point A,point B,point C,point D)//求AB與CD的交點x值{    double area1=dir(A,B,C);    double area2=dir(A,B,D);    int c=sgn(area1);    int d=sgn(area2);    if(c*d<0) //CD在AB的兩側,規范相交        return (area2*C.x - area1*D.x)/(area2-area1);//交點計算公式    if(c*d==0)   //CD的其中一個端點在AB上,不規范相交    {        if(c==0)            return C.x;//C在AB上,返回AB與CD非規范相交時的交點C的橫坐標        else            return D.x;//D在AB上,返回AB與CD非規范相交時的交點D的橫坐標    }    return -INF; //CD在AB同側,無交點,返回負無窮}int main(){#ifdef ONLINE_JUDGE#else    freopen("F:/cb/read.txt","r",stdin);    //freopen("F:/cb/out.txt","w",stdout);#endif    ios::sync_with_stdio(false);    cin.tie(0);    int n;    while(cin>>n&&n)//n表示管道的數目    {        point p[MAXN],q[MAXN];        for(int i=0; i<n; i++)        {            cin>>p[i].x>>p[i].y;            q[i].x=p[i].x;            q[i].y=p[i].y-1;        }        bool flag=false;        double ans=-INF;        int k;        for(int i=0; i<n; i++)//枚舉每段線段        {            for(int j=0; j<n; j++)            {                if(i==j) continue;                for(k=0; k<n; k++)//枚舉當前光線與第k個拐點處的上下連線是否相交                    if(!cross(p[i],q[j],p[k],q[k]))//掃描到一個不相交                        break;                if(k>=n)//與每個拐點處都相交                {                    flag=true;                    break;                }                else if(k>max(i,j))//不能穿過,求解最大x值                {                    double temp=intersection(p[i],q[j],p[k],p[k-1]);//求交點橫坐標                    if(ans<temp)//與第k-1節管子的上管壁相交                        ans=temp;                    temp=intersection(p[i],q[j],q[k],q[k-1]);                    if(ans<temp)//與第k-1節管子的上管壁相交                        ans=temp;                }            }            if(flag)//可穿                break;        }        if(flag)            cout<<"Through all the pipe."<<endl;        else            cout<<fixed<<setprecision(2)<<ans<<endl;    }    return 0;}/*40 12 24 16 460 12 -0.65 -4.457 -5.5712 -10.817 -16.550*/


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩视频免费在线观看| 69**夜色精品国产69乱| 亚洲高清久久久久久| 午夜欧美不卡精品aaaaa| 日韩一区二区精品视频| 日韩电影大全免费观看2023年上| 欧美激情欧美狂野欧美精品| 91精品国产综合久久香蕉922| 亚洲综合在线中文字幕| 成人激情在线播放| 91精品国产乱码久久久久久久久| 久久综合国产精品台湾中文娱乐网| 久99久在线视频| 欧美精品在线极品| 欧美国产高跟鞋裸体秀xxxhd| 久久亚洲国产精品成人av秋霞| 亚洲成人精品久久久| 国产91精品青草社区| 91精品国产91久久久| 国产精品久久久久久久久久小说| 日韩中文字幕免费| 日韩在线视频观看| 91久久综合亚洲鲁鲁五月天| 国产不卡在线观看| 国产剧情日韩欧美| 色噜噜狠狠狠综合曰曰曰88av| 91精品91久久久久久| 精品国产精品三级精品av网址| 日韩av最新在线| 久久精品99国产精品酒店日本| 国产一区二区三区在线观看视频| 中文字幕在线成人| 国产成人av网址| 亚洲精品第一页| 午夜精品免费视频| 日韩在线视频导航| 中文字幕欧美精品在线| 久久久999成人| 国产精品爽黄69天堂a| 日韩最新在线视频| 国产一区视频在线| 91热福利电影| 国产精品网红直播| 欧美日韩国产中字| 久久精品99久久久久久久久| 亚洲美女中文字幕| 粗暴蹂躏中文一区二区三区| 色婷婷久久一区二区| 亚洲综合精品一区二区| 久久影视电视剧凤归四时歌| 日韩中文字幕视频在线观看| 欧美黄色成人网| 国产精品露脸自拍| xxxx欧美18另类的高清| 最近2019中文字幕大全第二页| 最近中文字幕日韩精品| 日本中文字幕久久看| 日韩免费高清在线观看| 精品一区二区三区三区| 精品久久久香蕉免费精品视频| 亚洲第一男人天堂| 成人午夜在线观看| 国产精品美女主播在线观看纯欲| 国产精品96久久久久久| 久久777国产线看观看精品| 久久精品这里热有精品| 欧美激情综合色| 亚洲缚视频在线观看| 国产午夜精品麻豆| 上原亚衣av一区二区三区| 欧美三级免费观看| 国产97免费视| 国色天香2019中文字幕在线观看| 国产精品白嫩初高中害羞小美女| 久久精品国产欧美亚洲人人爽| 久久99国产综合精品女同| 亚洲视频在线免费观看| 精品自在线视频| 日韩精品在线第一页| 国产精品私拍pans大尺度在线| 国产做受69高潮| 亚洲美腿欧美激情另类| 国产午夜一区二区| 在线观看欧美日韩国产| 在线看国产精品| 亚洲图片欧美日产| 日韩精品高清在线| 日韩av在线免费观看| 国内精品国产三级国产在线专| 国产精品成人一区二区三区吃奶| 国产成人亚洲综合91| 欧美高清视频一区二区| 中文字幕亚洲情99在线| 欧美成人免费播放| 97精品国产97久久久久久| 成人黄色免费看| 国产欧美日韩精品在线观看| 欧美黄色性视频| 日韩av在线一区二区| 欧美激情高清视频| 亚洲高清久久网| 国产精品视频中文字幕91| 国产精品亚发布| 菠萝蜜影院一区二区免费| 亚洲情综合五月天| 国内免费久久久久久久久久久| 欧美性少妇18aaaa视频| 亚洲男子天堂网| 欧美午夜视频在线观看| 亚洲日本欧美中文幕| 最新国产成人av网站网址麻豆| 国产精品一区电影| 久热精品在线视频| 成人在线免费观看视视频| 精品自在线视频| 欧美一区二区大胆人体摄影专业网站| 亚洲视频在线观看免费| 日韩美女视频免费在线观看| 欧美精品精品精品精品免费| 国产亚洲人成a一在线v站| 欧洲成人午夜免费大片| 91视频88av| 国产一区二区免费| 色樱桃影院亚洲精品影院| 91精品国产高清久久久久久91| 大桥未久av一区二区三区| 欧美成人免费小视频| 亚洲午夜国产成人av电影男同| 91久久国产综合久久91精品网站| 欧美成人午夜免费视在线看片| 亚洲欧美999| 亚洲美女精品久久| 国产区精品在线观看| 亚洲综合在线小说| 一区二区三区回区在观看免费视频| 97精品视频在线观看| 欧美在线一区二区视频| 91亚洲人电影| 中文字幕在线日韩| 日韩久久精品成人| 欧美性色19p| 国产精品第七十二页| 97在线看免费观看视频在线观看| 午夜精品一区二区三区在线| 国产91免费看片| 亚洲国产精品va在线观看黑人| 青青久久av北条麻妃黑人| 久久久久久69| 欧美与欧洲交xxxx免费观看| 久久久久久com| 久久久国产精品x99av| 日本欧美中文字幕| 国产成人精品久久二区二区91| 国自在线精品视频| 亚洲男人天堂视频| 成人免费在线视频网站| 亚洲精品中文字幕有码专区| 欧美国产日本在线| 在线视频日韩精品| 国产精品久久久久久久久久尿| 中文字幕国产精品久久| 色综合天天综合网国产成人网| 日韩中文视频免费在线观看| 亚洲无av在线中文字幕|