青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Why so serious? --[NKU]schindlerlee

2009年12月26日星期六.pku2165 計算幾何

2009年12月26日星期六.pku2165
計算幾何
算法:將窗口投影到yz平面和xz平面,分別計算

上圖是投影到yz平面的情況,可以算出斜率的交區間,如果不存在則無解,然后隨便從中選出一個斜率。
然后算出和第一個窗口的Y交點


上圖是投影到xz平面的情況,需要兩兩算出直線在x軸上的投影區間,然后隨便選一個點作為出始點ansx。


然后由這個點開始,算出斜率的交區間,進而求出和第一條窗的x交點

有了這兩個點,就可以利用比例,求出和其他所有窗的交點了
最后,很惡心的是精度,需要特別注意判斷無解的情況,一定要用
int dcmp ( double x) { return (x > eps) - (x < -eps);}
我在精度上卡了好幾次,最后double eps = 1e-10; 時過的
  1 /* 
  2  * SOUR:pku2165
  3  * ALGO:computational geometry
  4  * DATE: 2009年 12月 26日 星期六 21:31:06 CST
  5  * COMM:4
  6  * */
  7 #include<iostream>
  8 #include<cstdio>
  9 #include<cstdlib>
 10 #include<cstring>
 11 #include<algorithm>
 12 #include<cassert>
 13 #include<cmath>
 14 using namespace std;
 15 typedef long long LL;
 16 const int maxint = 0x7fffffff;
 17 const long long max64 = 0x7fffffffffffffffll;
 18 const int N = 128;
 19 int n;
 20 double h,ansx,offset;
 21 struct W {
 22     double x1,y1;
 23     double x2,y2,z;
 24 }w[N];
 25 
 26 double eps = 1e-10;
 27 int dcmp(double x) { return (x > eps) - (x < -eps);}
 28 
 29 const double inf = 1e30;
 30 
 31 void ckmax(double &a,double b) { if(dcmp(a - b) < 0) a = b; }
 32 void ckmin(double &a,double b) { if(dcmp(a - b) > 0) a = b; }
 33 
 34 bool CalcY()
 35 {
 36     int i;
 37     double up  = inf,down = -inf;
 38     for(i = 0;i < n;i++) {
 39         ckmax(down,w[i].y1 / w[i].z);
 40         ckmin(up,w[i].y2 / w[i].z);
 41     }
 42     if(dcmp(down - up) > 0) {
 43         return false;
 44     }
 45     double tmp = (up + down)/ 2;
 46     h = tmp * w[0].z;
 47     //printf("CalcY succeded h = %.6f\n",h);
 48     return true;
 49 }
 50 
 51 struct P
 52 {
 53     double x1,x2;
 54 }interval[N*N];
 55 int top;
 56 
 57 double dist(double a,double b) { return sqrt(a * a + b * b); }
 58 
 59 bool CalcX()
 60 {
 61     int i ,j;
 62     double z,x,len,L;
 63     top = 0;
 64     for(i = 0;i < n;i++) {
 65         for(j = i + 1;j < n;j++) {
 66             z = w[j].z - w[i].z;
 67             x = w[j].x2 - w[i].x1;
 68             len = dist(z,x);
 69             L = w[j].z * len / (w[j].z - w[i].z);
 70             x = x/len * L;
 71             interval[top].x1 = w[j].x2 - x;
 72 
 73             z = w[j].z - w[i].z;
 74             x = w[j].x1 - w[i].x2;
 75             len = dist(z,x);
 76             L = w[j].z * len / (w[j].z - w[i].z);
 77             x = x/len * L;
 78             interval[top].x2 = w[j].x1 - x;
 79 
 80             top ++;
 81         }
 82     }
 83     double left = -inf,right = inf;
 84     for(i = 0;i < top;i++) {
 85         //printf("[%d] x1= %.6f,x2 = %.6f\n",i,interval[i].x1,interval[i].x2);
 86         ckmax(left,interval[i].x1);
 87         ckmin(right,interval[i].x2);
 88     }
 89     //printf("left = %.6f,right = %.6f\n",left,right);
 90     if(dcmp(left - right) > 0
 91         return false;
 92     //if(left > right) 
 93         //return false;
 94 
 95     ansx = (left + right) /2;
 96     left = -inf,right = inf;
 97     for(i = 0;i < n;i++) {
 98         ckmax(left,(w[i].x1 - ansx) / w[i].z);
 99         ckmin(right,(w[i].x2 - ansx) / w[i].z);
100     }
101     //assert(left < right);
102     double mid = (left + right)/2;
103     offset = mid * w[0].z;
104     return true;
105 }
106 
107 
108 int main()
109 {
110     int i,j,k;
111     scanf("%d",&n);
112     for(i = 0;i < n;i++) {
113         scanf("%lf%lf",&w[i].x1,&w[i].y1);
114         scanf("%lf%lf%lf",&w[i].x2,&w[i].y2,&w[i].z);
115     }
116     if(!CalcY()) {
117         printf("UNSOLVABLE\n");
118         return 0;
119     }
120     if(!CalcX()) {
121         printf("UNSOLVABLE\n");
122         return 0;
123     }
124 
125     printf("SOLUTION\n");
126     printf("%.6f\n",ansx);
127     for(i = 0;i < n;i++) {
128         double x = w[i].z * offset / w[0].z + ansx;
129         double y = w[i].z * h      / w[0].z;
130         double z = w[i].z;
131         printf("%.6f %.6f %.6f\n",x,y,z);
132     }
133     return 0;
134 }
135 
136 


posted on 2009-12-27 00:30 schindlerlee 閱讀(1029) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            日韩亚洲视频在线| 一区二区三区视频在线播放| 欧美日韩在线播放三区| 久久久久久久久久看片| 欧美日韩国产限制| 欧美激情麻豆| 亚洲福利视频二区| 欧美一区二区三区的| 亚洲综合社区| 欧美天堂亚洲电影院在线观看| 欧美电影美腿模特1979在线看 | 亚洲一区国产一区| 日韩一二三在线视频播| 麻豆精品在线播放| 久久视频一区| 国语自产偷拍精品视频偷| 亚洲欧美日本伦理| 午夜精品一区二区三区在线| 国产精品爱啪在线线免费观看| 最新国产精品拍自在线播放| 亚洲国产高清一区二区三区| 欧美在线亚洲综合一区| 久久免费高清视频| 极品中文字幕一区| 久久免费视频这里只有精品| 老司机精品福利视频| 狠狠网亚洲精品| 欧美在线观看天堂一区二区三区| 性刺激综合网| 国产偷自视频区视频一区二区| 午夜激情综合网| 久久久久久婷| 在线日韩av片| 欧美成人综合在线| 亚洲精品网址在线观看| 亚洲欧美春色| 国产日韩一区二区三区| 久久久欧美一区二区| 久久综合九色| 日韩视频在线一区| 欧美日韩亚洲国产一区| 亚洲一区在线观看免费观看电影高清| 久久爱www久久做| 激情成人在线视频| 欧美成人免费一级人片100| 亚洲日本va在线观看| 亚洲欧美日韩在线播放| 国产主播在线一区| 欧美寡妇偷汉性猛交| 亚洲视频一区二区| 久久久亚洲高清| 日韩视频在线你懂得| 国产精品网站在线观看| 久久免费99精品久久久久久| 亚洲日本免费电影| 欧美在线视频全部完| 亚洲福利视频网站| 国产精品久久久久久久第一福利| 欧美一区1区三区3区公司| 欧美激情一区三区| 午夜一区二区三视频在线观看 | 国产视频在线观看一区| 美女主播精品视频一二三四| 亚洲精品中文字幕女同| 久久精品国产999大香线蕉| 亚洲人成人77777线观看| 欧美日韩一区二区在线观看视频| 欧美在线播放高清精品| 99国产精品国产精品毛片| 久久精品二区亚洲w码| 99v久久综合狠狠综合久久| 国产视频亚洲| 欧美午夜视频一区二区| 久久中文欧美| 亚洲综合日韩| 99在线精品免费视频九九视| 卡一卡二国产精品| 亚洲欧美伊人| 一本色道88久久加勒比精品| 国语精品中文字幕| 国产精品日韩欧美一区二区| 欧美激情一区二区三区在线视频观看| 欧美一区二区三区婷婷月色| 一区二区三区精品视频在线观看| 欧美激情中文字幕在线| 久久蜜臀精品av| 欧美在线日韩| 亚洲欧美日韩国产精品| 99re8这里有精品热视频免费 | 国产主播一区二区三区| 国产精品久久久久aaaa九色| 欧美精品日韩www.p站| 久久久久久亚洲精品不卡4k岛国| 亚洲欧美另类在线观看| 这里只有精品在线播放| 91久久久久| 亚洲国产精品热久久| 欧美福利小视频| 媚黑女一区二区| 乱中年女人伦av一区二区| 久久精品人人爽| 欧美与黑人午夜性猛交久久久| 亚洲午夜高清视频| 99国产精品视频免费观看一公开| 亚洲国产欧美一区二区三区丁香婷| 精品91免费| 在线观看欧美激情| 亚洲丰满在线| 亚洲毛片在线观看.| 亚洲乱码久久| 日韩一级精品| 亚洲一区二区3| 午夜精品一区二区三区在线视| 午夜在线视频观看日韩17c| 午夜精品美女久久久久av福利| 亚洲欧美日韩区| 久久九九精品| 另类欧美日韩国产在线| 女同一区二区| 亚洲精品欧美在线| 日韩午夜在线观看视频| 亚洲少妇在线| 欧美一区免费视频| 久久手机免费观看| 欧美精品v国产精品v日韩精品| 欧美伦理视频网站| 国产精品亚洲片夜色在线| 韩国av一区二区三区在线观看| 在线免费观看欧美| 99国产精品| 欧美一区二区三区四区在线观看地址 | 亚洲乱码日产精品bd| 亚洲素人一区二区| 久久九九国产精品| 欧美激情亚洲综合一区| 国产精品久久| 伊人成年综合电影网| 一本大道久久a久久综合婷婷| 亚洲欧美制服另类日韩| 蜜桃久久av一区| 日韩天天综合| 久久久精品久久久久| 欧美日韩国产一区| 国产一区视频在线观看免费| 亚洲黄色在线视频| 先锋a资源在线看亚洲| 欧美第一黄色网| 亚洲一区二区精品在线观看| 久久综合九色99| 国产精品乱子乱xxxx| 亚洲激情av在线| 欧美一级淫片播放口| 亚洲人精品午夜| 欧美一站二站| 欧美性猛片xxxx免费看久爱| 亚洲电影在线| 久久国产视频网| 日韩一二三在线视频播| 久久美女性网| 国产麻豆91精品| 夜夜嗨av一区二区三区四区 | 久久久久久久久久久久久9999| 亚洲日本理论电影| 久久久久91| 国产精品美女www爽爽爽| 99re热这里只有精品视频| 久久综合色播五月| 亚洲一区在线直播| 欧美三级日本三级少妇99| 亚洲国产成人av好男人在线观看| 久久精品国产亚洲高清剧情介绍 | 亚洲精品1234| 欧美一级久久久| 国产精品一区二区在线观看网站| 99re66热这里只有精品3直播| 蜜臀a∨国产成人精品| 亚洲精品久久久久| 亚洲国产精品va在线看黑人| 久久精品一区二区三区不卡牛牛| 一本大道久久精品懂色aⅴ| 免费亚洲一区二区| 韩国一区二区三区在线观看| 久久av红桃一区二区小说| 一卡二卡3卡四卡高清精品视频 | 欧美成人亚洲| 亚洲第一网站免费视频| 玖玖玖国产精品| 久久精品国亚洲| 韩国精品一区二区三区| 久久亚洲免费| 久久久av网站| 伊人夜夜躁av伊人久久| 久久嫩草精品久久久精品| 久久久www| 好吊视频一区二区三区四区 | 欧美成人国产va精品日本一级| 精品动漫一区二区| 女仆av观看一区| 欧美α欧美αv大片| 亚洲精品综合|