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

Why so serious? --[NKU]schindlerlee

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

2009年12月26日星期六.pku2165
計算幾何
算法:將窗口投影到y(tǒng)z平面和xz平面,分別計算

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


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


然后由這個點開始,算出斜率的交區(qū)間,進(jìn)而求出和第一條窗的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 閱讀(1026) 評論(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>
            亚洲欧美在线aaa| 国产伦精品一区二区三| 亚洲精品国精品久久99热| 久久综合福利| 免费在线国产精品| 欧美电影打屁股sp| 欧美激情影院| 亚洲精品在线一区二区| 99精品视频免费全部在线| 亚洲午夜av| 久久精品中文字幕一区二区三区| 久久欧美中文字幕| 欧美日本久久| 国产日韩三区| 欧美专区日韩视频| 卡一卡二国产精品| 亚洲电影免费在线| 夜夜爽99久久国产综合精品女不卡 | 欧美一区二区三区四区夜夜大片| 亚洲精品一区二区网址| 91久久久久久久久| 一区二区三区四区精品| 欧美亚洲综合在线| 欧美福利小视频| 一区二区久久久久| 久久国产精品亚洲va麻豆| 欧美激情按摩在线| 国产一区二区三区网站| 99视频在线精品国自产拍免费观看| 午夜久久久久久久久久一区二区| 欧美成人精品在线播放| 亚洲永久网站| 欧美日韩福利视频| 亚洲国产99| 久久久精品国产免大香伊| 亚洲精品日韩一| 久久婷婷av| 国产欧美日韩中文字幕在线| 亚洲免费成人av电影| 久久精品亚洲| 亚洲一区二区三区影院| 欧美日韩另类在线| 日韩亚洲欧美一区| 久久综合中文字幕| 午夜精品久久久久久久蜜桃app | 欧美国产亚洲视频| 欧美一区二区三区免费看| 欧美日本在线| 亚洲黄色三级| 免费欧美高清视频| 久久精品国产免费观看| 国产精品影音先锋| 午夜欧美不卡精品aaaaa| 日韩视频精品在线| 欧美日韩国产va另类| 日韩一区二区免费高清| 亚洲国内高清视频| 美女主播一区| 亚洲精品免费一二三区| 你懂的成人av| 久久一区二区三区av| 伊人久久久大香线蕉综合直播 | 亚洲区一区二区三区| 欧美a一区二区| 久热精品视频在线| 亚洲激精日韩激精欧美精品| 欧美mv日韩mv国产网站| 久久三级视频| 久久精品国产精品亚洲| 裸体歌舞表演一区二区| 亚洲欧美日本另类| 国产精品黄色在线观看| 亚洲午夜羞羞片| 亚洲午夜久久久久久久久电影院| 欧美日韩一二区| 午夜精品久久久久久久白皮肤| 在线亚洲高清视频| 国产精品亚洲产品| 久久亚洲一区二区三区四区| 久久久久久**毛片大全| 亚洲国产99| 亚洲乱码日产精品bd| 欧美日韩中文| 午夜在线成人av| 久久久999精品| 亚洲毛片在线| 亚洲欧美激情视频在线观看一区二区三区 | 在线亚洲欧美视频| 国产美女精品| 美女性感视频久久久| 欧美激情在线免费观看| 亚洲欧美在线另类| 久久久久国产精品一区| 亚洲天堂网站在线观看视频| 午夜久久影院| 日韩一级网站| 性久久久久久久久久久久| 亚洲风情亚aⅴ在线发布| 99国产精品久久久久老师 | 亚洲电影视频在线| 一区二区欧美视频| 亚洲国产精品欧美一二99| 99国产一区| 有码中文亚洲精品| 亚洲在线观看免费| 亚洲精品婷婷| 午夜精品一区二区三区在线视 | 99re6这里只有精品| 午夜在线一区| 一区二区三区产品免费精品久久75 | 欧美.com| 久久国产精品免费一区| 欧美精品高清视频| 国产精品揄拍一区二区| 欧美成在线观看| 国产情侣一区| 99国产精品久久久| 亚洲人成在线播放| 久久动漫亚洲| 欧美一级大片在线观看| 欧美日韩国产在线观看| 亚洲第一狼人社区| 影院欧美亚洲| 欧美中文字幕视频在线观看| 午夜在线a亚洲v天堂网2018| 欧美日韩国产成人精品| 亚洲国产福利在线| 亚洲国产小视频在线观看| 久久国产精品黑丝| 久久久视频精品| 极品尤物一区二区三区| 欧美亚洲一区三区| 欧美在线视频免费| 欧美国产日韩一区二区三区| 国产精品久久久久aaaa九色| 99在线|亚洲一区二区| 99热免费精品| 欧美伦理a级免费电影| 亚洲黄网站黄| 一区二区高清在线| 欧美日韩国产色综合一二三四| 亚洲国产黄色片| 亚洲精品久久7777| 欧美承认网站| 亚洲欧洲精品一区| 一区二区三区久久| 欧美调教视频| 亚洲综合视频网| 久久精品国产v日韩v亚洲 | 久久综合色一综合色88| 国内精品国语自产拍在线观看| 欧美一级久久| 欧美成人高清视频| 亚洲精品一区二区三区樱花| 欧美日韩精品二区| 亚洲一区免费视频| 久久久亚洲人| 91久久精品一区| 欧美激情网友自拍| 一区二区三区 在线观看视频| 欧美一区二区三区免费视| 国产一区二区三区黄视频| 久久久久五月天| 亚洲伦理在线| 久久九九久久九九| 亚洲国产婷婷香蕉久久久久久99| 欧美三日本三级少妇三2023| 亚洲欧美日韩国产一区二区三区| 麻豆久久婷婷| 亚洲午夜激情| 精品成人一区| 欧美色区777第一页| 欧美影院在线播放| 亚洲啪啪91| 久久深夜福利免费观看| 一本大道久久a久久精品综合| 国产日韩欧美高清| 欧美激情在线免费观看| 欧美在线观看视频| 亚洲免费成人av电影| 亚洲电影自拍| 国产精品国产三级国产普通话三级| 久久精品二区| 亚洲私拍自拍| 亚洲国产精品专区久久| 久久精品视频网| 亚洲一区二区毛片| 亚洲国产精品久久久久婷婷884 | 久久精品国产欧美激情| 亚洲精品欧洲精品| 国产一区二区你懂的| 欧美视频福利| 欧美jjzz| 久久精品日产第一区二区三区| 一区二区三区产品免费精品久久75| 欧美激情精品久久久六区热门 | 久久午夜精品| 欧美一区国产一区| 亚洲一区二区三区久久| 9l国产精品久久久久麻豆|