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

Why so serious? --[NKU]schindlerlee

2009年12月26日星期六.pku2165 計(jì)算幾何

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

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


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


然后由這個(gè)點(diǎn)開(kāi)始,算出斜率的交區(qū)間,進(jìn)而求出和第一條窗的x交點(diǎn)

有了這兩個(gè)點(diǎn),就可以利用比例,求出和其他所有窗的交點(diǎn)了
最后,很惡心的是精度,需要特別注意判斷無(wú)解的情況,一定要用
int dcmp ( double x) { return (x > eps) - (x < -eps);}
我在精度上卡了好幾次,最后double eps = 1e-10; 時(shí)過(guò)的
  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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 解題報(bào)告

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产一区二区三区奇米久涩| 亚洲午夜电影| 欧美激情亚洲国产| 欧美sm视频| 欧美精品一区二区三| 欧美精品在欧美一区二区少妇| 在线综合亚洲| 夜夜嗨av一区二区三区网页| 亚洲永久免费| 久久精品国产亚洲5555| 一区二区三区精品视频| 欧美一区二区三区免费视频| 久久在线播放| 欧美视频在线免费看| 国产日韩欧美在线一区| 黄色一区二区在线| 一本大道久久a久久综合婷婷| 欧美精品偷拍| 国产精品每日更新| 在线看片日韩| 午夜精品视频| 欧美韩日一区二区| 亚洲精品久久久久久久久久久久久 | 久久激情五月激情| 久久精品成人一区二区三区蜜臀| 免费日韩视频| 亚洲人成小说网站色在线| 亚洲视频导航| 欧美高清在线一区| 国产香蕉久久精品综合网| 亚洲免费高清视频| 久久免费视频一区| 亚洲在线播放| 欧美日韩精品一区二区三区| 国产日韩欧美精品一区| aa成人免费视频| 蜜臀久久久99精品久久久久久| 一区二区高清在线| 久久av在线看| 9国产精品视频| 久久久水蜜桃| 国产精品麻豆va在线播放| 亚洲国产欧美国产综合一区| 羞羞色国产精品| 亚洲免费黄色| 欧美成人亚洲| 亚洲高清精品中出| 亚洲欧美中文在线视频| 欧美高清自拍一区| 久久精品国产69国产精品亚洲 | 一区二区三区回区在观看免费视频| 久久综合九色99| 亚洲婷婷国产精品电影人久久| 亚洲片在线观看| 久久精品免费看| 国产亚洲午夜| 欧美一级久久久| 亚洲性色视频| 欧美午夜欧美| 午夜精品亚洲| 亚洲欧美日韩精品久久亚洲区| 在线一区观看| 欧美精品在线观看| 野花国产精品入口| 日韩视频一区二区三区在线播放免费观看| 最新国产精品拍自在线播放| 欧美一区二区三区在线看| 国产日本欧洲亚洲| 欧美专区在线播放| 久久久久国产精品人| 好看的日韩视频| 欧美高清在线一区二区| 欧美日本视频在线| 午夜精品视频一区| 午夜视频久久久久久| 狠狠狠色丁香婷婷综合激情| 美女免费视频一区| 欧美精品videossex性护士| 亚洲视频 欧洲视频| 亚洲一区二区三| 激情综合在线| 亚洲另类视频| 国产日韩三区| 亚洲激情第一页| 国产精品一香蕉国产线看观看| 亚洲最新在线视频| 亚洲一品av免费观看| 狠狠色伊人亚洲综合网站色| 亚洲国产天堂久久国产91| 欧美日韩视频专区在线播放| 欧美在线一二三四区| 麻豆精品传媒视频| 亚洲欧美日韩一区二区| 狂野欧美性猛交xxxx巴西| 国产精品99久久久久久久久久久久| 老司机精品视频一区二区三区| 亚洲高清色综合| 国产精品久久久久一区二区| 久久在线视频| 国产精品你懂的在线| 久久男人av资源网站| 欧美日韩国产高清视频| 久久久久久网址| 欧美日本国产视频| 欧美77777| 国产欧美日韩精品丝袜高跟鞋| 久久精品一级爱片| 久久偷窥视频| 亚洲欧美激情精品一区二区| 久久成人精品一区二区三区| 亚洲美女色禁图| 亚洲性视频网站| 国内久久精品| 一区二区三区不卡视频在线观看 | 国产日韩一区二区三区在线| 欧美成人中文字幕在线| 国产精品天天看| 亚洲电影第三页| 欧美激情亚洲国产| 久久一区二区三区av| 亚洲免费视频网站| 久久激情综合| 欧美综合二区| 国产精品免费电影| 亚洲最新合集| 在线视频你懂得一区二区三区| 亚洲一区二区综合| 久久久久国产免费免费| 欧美在线一级视频| 国产精品永久入口久久久| 亚洲第一主播视频| 樱桃成人精品视频在线播放| 篠田优中文在线播放第一区| 亚洲欧美中日韩| 国产精品美女久久久久久2018| 欧美人与性动交α欧美精品济南到 | 女人色偷偷aa久久天堂| 久久成人18免费观看| 国产精品亚洲成人| 一本综合精品| 亚洲天堂免费观看| 欧美日韩亚洲高清| 日韩视频一区二区| 亚洲四色影视在线观看| 欧美极品在线观看| 亚洲精品之草原avav久久| 日韩亚洲一区在线播放| 欧美激情在线狂野欧美精品| 欧美韩日亚洲| 亚洲精品视频在线| 欧美精品一区二区三| 日韩视频―中文字幕| 亚洲一区二区欧美日韩| 国产精品一区二区视频 | 一区二区电影免费在线观看| 另类尿喷潮videofree| 亚洲激情图片小说视频| 亚洲小说欧美另类婷婷| 国产精品成人免费视频| 亚洲在线一区二区| 欧美制服第一页| 亚洲高清久久久| 美女国内精品自产拍在线播放| 99亚洲一区二区| 欧美日韩国产在线一区| 亚洲人午夜精品| 亚洲一区二区三区在线观看视频 | 国产欧美日韩| 香蕉成人久久| 欧美国产成人在线| 亚洲另类自拍| 欧美日韩精品中文字幕| 亚洲一区二三| 亚洲国产精品精华液网站| 在线视频一区观看| 国产在线精品一区二区中文| 欧美成人性生活| 亚洲专区在线| 亚洲国产精品尤物yw在线观看| 欧美成人蜜桃| 中日韩在线视频| 亚洲电影免费在线| 性18欧美另类| 日韩午夜精品| 黄色欧美成人| 国产精品乱码一区二区三区| 久久久久久成人| 亚洲制服丝袜在线| 亚洲欧洲在线观看| 久久精品国产一区二区三区免费看| 91久久国产自产拍夜夜嗨| 亚洲欧美日韩国产| 亚洲国产精品成人久久综合一区| 亚洲激精日韩激精欧美精品| 欧美一区二区三区视频在线观看| 欧美一级理论性理论a| 免费日本视频一区| 久久精品视频免费| 香蕉久久夜色精品| 一区二区三区国产盗摄|