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

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>
            午夜日韩激情| 久久久久久日产精品| 欧美日韩国产成人在线| 99精品99| 亚洲一区二区精品在线观看| 国产精品久久久久秋霞鲁丝| 欧美一区二区三区在线观看| 久久不见久久见免费视频1| 国产欧美一区二区三区久久人妖| 久久久高清一区二区三区| 另类av导航| 亚洲视频 欧洲视频| 亚洲自拍另类| 尤物在线观看一区| 亚洲日产国产精品| 国产伦精品一区二区三区四区免费 | 日韩五码在线| 亚洲无人区一区| 国产午夜一区二区三区| 欧美激情bt| 国产精品久久久久久久久久尿| 久久精品国产77777蜜臀| 久久视频在线视频| 中文精品视频| 久久久久久久网站| 亚洲欧美制服另类日韩| 久久久久五月天| 亚洲视频国产视频| 久久精品一本| 亚洲欧美日韩精品综合在线观看| 久久久女女女女999久久| 一区二区三区日韩欧美| 久久精品视频99| 亚洲在线成人| 欧美二区在线看| 久久久亚洲精品一区二区三区| 欧美久久久久久蜜桃| 久久综合网hezyo| 国产精品系列在线播放| 亚洲高清视频一区二区| 黑人一区二区| 亚洲欧美变态国产另类| 一本色道久久综合亚洲91| 久久人人爽人人爽爽久久| 欧美在线观看日本一区| 欧美视频一区二区三区四区| 亚洲国产精品v| 亚洲高清视频一区| 久久福利资源站| 久久精品观看| 国产精品视频导航| 亚洲最新视频在线| 日韩一级裸体免费视频| 欧美激情久久久久| 亚洲国产成人精品久久| 禁断一区二区三区在线| 欧美一区三区三区高中清蜜桃| 亚洲在线观看视频| 国产精品久久久久久av福利软件| 亚洲欧洲综合| 99视频热这里只有精品免费| 欧美成人国产| 亚洲精品男同| 中文精品视频一区二区在线观看| 欧美日本在线播放| 亚洲开发第一视频在线播放| 99爱精品视频| 欧美视频精品在线| 一区二区三区 在线观看视| 亚洲视频在线免费观看| 欧美视频日韩| 午夜精品久久久久久久久久久| 欧美淫片网站| 在线日韩av永久免费观看| 久久久久久久一区二区三区| 免费一区二区三区| 91久久久亚洲精品| 欧美日韩精品久久| 亚洲性视频网站| 久久免费少妇高潮久久精品99| 一色屋精品视频免费看| 免费观看成人| 一本色道久久综合亚洲精品婷婷| 亚洲欧美在线免费| 国产一区高清视频| 欧美高清视频www夜色资源网| 99re6这里只有精品| 羞羞答答国产精品www一本| 国内外成人在线| 欧美夫妇交换俱乐部在线观看| 夜夜夜精品看看| 久久亚洲一区二区| 99热在这里有精品免费| 国产精品男女猛烈高潮激情| 久久久青草婷婷精品综合日韩| 亚洲国产精品日韩| 香蕉尹人综合在线观看| 黄色综合网站| 国产精品v一区二区三区| 欧美在线资源| 一区二区三区高清不卡| 久久精品一区二区三区四区| 亚洲精品一区二区三区在线观看| 国产精品久久久久久久久借妻| 久久午夜精品| 亚洲淫性视频| 亚洲精品国产视频| 久久久久久香蕉网| 亚洲一二三区在线观看| 雨宫琴音一区二区在线| 欧美午夜在线观看| 男女激情久久| 午夜精品免费视频| 亚洲毛片在线看| 欧美大片在线影院| 久久精品电影| 午夜综合激情| 日韩一级在线观看| 亚洲国产一区二区视频| 国产性做久久久久久| 欧美成人免费全部| 久久久免费精品| 欧美一区二区三区婷婷月色| 日韩亚洲不卡在线| 亚洲国产裸拍裸体视频在线观看乱了| 性高湖久久久久久久久| 亚洲图片你懂的| 一区二区三区免费网站| 亚洲国产一区二区a毛片| 激情另类综合| 黄色在线一区| 狠狠干综合网| 国内自拍一区| 国内精品久久久久国产盗摄免费观看完整版| 欧美另类一区| 欧美日韩国产美| 欧美久久久久久久久| 欧美激情第五页| 欧美日韩国产探花| 欧美日本免费| 欧美三区视频| 国产精品久久久久免费a∨大胸 | 欧美精品在线免费| 欧美不卡视频一区| 欧美精品激情在线观看| 欧美国产日本韩| 欧美日韩dvd在线观看| 欧美精品99| 欧美体内she精视频| 国产精品久久看| 国产欧美一区二区精品秋霞影院| 国产欧美日本一区二区三区| 国产精品永久在线| 国产视频在线观看一区| 韩国欧美一区| 亚洲免费高清| 亚洲制服av| 久久久无码精品亚洲日韩按摩| 久久视频精品在线| 欧美第一黄色网| 亚洲精品在线观| 亚洲在线成人精品| 久久成人综合视频| 男人插女人欧美| 欧美色视频一区| 狠狠色综合网站久久久久久久| 91久久视频| 欧美一区影院| 欧美国产日韩一区二区在线观看| 亚洲精品视频免费观看| 亚洲欧美日韩综合| 欧美jizz19性欧美| 国产精品伦理| 亚洲人屁股眼子交8| 性欧美超级视频| 亚洲第一伊人| 午夜精品视频一区| 欧美高清视频一区| 国产美女一区二区| 亚洲精品网站在线播放gif| 亚洲午夜高清视频| 美女91精品| 亚洲一二区在线| 欧美福利视频在线| 国产综合久久久久久鬼色| 亚洲免费观看| 蜜桃视频一区| 亚洲综合国产| 欧美精品在线极品| 亚洲大胆人体在线| 性18欧美另类| 99精品国产福利在线观看免费 | 欧美激情a∨在线视频播放| 国产精品无码专区在线观看| 亚洲人成77777在线观看网| 久久爱91午夜羞羞| 一区二区三区高清在线观看| 蜜桃久久精品乱码一区二区| 国产亚洲制服色| 午夜在线播放视频欧美|