• <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>
            隨筆-21  評(píng)論-10  文章-21  trackbacks-0
            題意是三維空間上有一點(diǎn)集{a1,a2...an},每個(gè)點(diǎn) ai 有一個(gè)參數(shù) pi,現(xiàn)在要找到一點(diǎn) t          
            使得所有形如 (|t.x - ai.x| +|t.y - ai.y| + |t.z - ai.z|)/pi 的值最大的最小

            b_merry的做法:

              1 #include <string>
              2 #include <vector>
              3 #include <map>
              4 #include <cstdlib>
              5 #include <cstring>
              6 #include <cassert>
              7 #include <set>
              8 #include <iostream>
              9 #include <sstream>
             10 #include <cstddef>
             11 #include <algorithm>
             12 #include <utility>
             13 #include <iterator>
             14 #include <numeric>
             15 #include <list>
             16 #include <complex>
             17 #include <cstdio>
             18 
             19 using namespace std;
             20 
             21 typedef vector<int> vi;
             22 typedef vector<string> vs;
             23 typedef long long ll;
             24 typedef complex<double> pnt;
             25 typedef pair<intint> pii;
             26 
             27 #define RA(x) (x).begin(), (x).end()
             28 #define FE(i, x) for (typeof((x).begin()) i = (x).begin(); i != (x).end(); i++)
             29 #define SZ(x) ((int) (x).size())
             30 
             31 template<class T>
             32 void splitstr(const string &s, vector<T> &out)
             33 {
             34     istringstream in(s);
             35     out.clear();
             36     copy(istream_iterator<T>(in), istream_iterator<T>(), back_inserter(out));
             37 }
             38 
             39 template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
             40 
             41 struct ship
             42 {
             43     double xyz[3];
             44     double p;
             45 };
             46 
             47 static bool reached(double q, const vector<ship> &ships)
             48 {
             49     /*如果要滿足最小的q,那ships必定散落在四面八方,否則就不是最小
             50        這樣就有四個(gè) 關(guān)于x , y, z 的約束不等式 */
             51     int delta[3][4= 
             52     {
             53         {1111},
             54         {-1-111},
             55         {-11-11}
             56     };
             57     int N = ships.size();
             58     double range[4][2];
             59     for (int i = 0; i < 4; i++)
             60     {
             61         range[i][0= -HUGE_VAL;
             62         range[i][1= HUGE_VAL;
             63     }
             64     for (int i = 0; i < N; i++)
             65     {
             66         for (int a = 0; a < 4; a++)
             67         {
             68             double m = 
             69                 delta[0][a] * ships[i].xyz[0]
             70                 + delta[1][a] * ships[i].xyz[1]
             71                 + delta[2][a] * ships[i].xyz[2];
             72             range[a][0= max(range[a][0], m - q * ships[i].p);
             73             range[a][1= min(range[a][1], m + q * ships[i].p);//求形如x * y * z的范圍,*代表加或減
             74         }
             75     }
             76     for (int a = 0; a < 4; a++)
             77     {
             78         if (range[a][0> range[a][1])  
             79             return false;
             80     }
             81 
             82     bool low = false, high = false;
             83     for (int v = 0; v < 8; v++)
             84     {
             85         double x_y_z = (v & 1? range[0][1] : range[0][0];  // (x-y-z)的范圍
             86         double x_yz  = (v & 2? range[1][1] : range[1][0]; //  (x -y+z)的范圍
             87         double xy_z  = (v & 4? range[2][1] : range[2][0];// (x+y-z)的范圍
             88         /* 三個(gè)約束方程,又有三個(gè)未知數(shù),所以單獨(dú)每個(gè)成立的話,他們就成立了,
             89            這三個(gè)約束不等式,再并上第四個(gè)如果有交集,就說明存在繼續(xù)縮小的可能
             90         */
             91         double xyz = x_yz + xy_z - x_y_z;   //(x+y+z)的范圍
             92         if (xyz >= range[3][0&& xyz <= range[3][1])//第四個(gè)約束條件范圍更大
             93             return true;
             94         else if (xyz < range[3][0])
             95             low = true;
             96         else
             97             high = true;
             98     }
             99     return low && high;//第四個(gè)約束條件范圍更小
            100 }
            101 
            102 int main()
            103 {
            104     int cases;
            105     cin >> cases;
            106     for (int cas = 0; cas < cases; cas++)
            107     {
            108         int N;
            109         cin >> N;
            110         vector<ship> ships(N);
            111         for (int i = 0; i < N; i++)
            112             cin >> ships[i].xyz[0]
            113                 >> ships[i].xyz[1]
            114                 >> ships[i].xyz[2]
            115                 >> ships[i].p;
            116         double l = 0.0;
            117         double r = 1e9;
            118         while (r - l > 1e-8 && r - l > 1e-8 * r)
            119         {
            120             double m = (l + r) * 0.5;
            121             if (reached(m, ships))
            122                 r = m;
            123             else
            124                 l = m;
            125         }
            126         printf("Case #%d: %.9f\n", cas + 1, l);
            127     }
            128     return 0;
            129 }
            130 



            posted on 2009-03-08 16:00 wangzhihao 閱讀(165) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            伊人久久大香线焦AV综合影院| 99久久99久久精品国产| 99精品久久久久久久婷婷| 久久国产高潮流白浆免费观看| 亚洲国产精品无码久久青草 | 国产精自产拍久久久久久蜜| 九九久久自然熟的香蕉图片| 色婷婷综合久久久久中文一区二区| 四虎影视久久久免费| 久久综合九色综合欧美就去吻| 国产99久久久久久免费看| 99热精品久久只有精品| 国产AⅤ精品一区二区三区久久| 久久夜色tv网站| 93精91精品国产综合久久香蕉| 久久精品国产亚洲网站| 久久综合九色综合97_久久久| 99麻豆久久久国产精品免费| 狠狠干狠狠久久| 国产毛片久久久久久国产毛片| 精品久久久久久国产三级| 久久精品国产亚洲一区二区三区| 久久国产成人| 久久国产精品无| 亚洲AV日韩AV永久无码久久| 欧美一区二区三区久久综| 久久精品亚洲精品国产色婷| 2021久久国自产拍精品| a级毛片无码兔费真人久久| 少妇久久久久久被弄到高潮| 精品久久人人爽天天玩人人妻| 久久精品天天中文字幕人妻 | 久久er国产精品免费观看2| 丁香久久婷婷国产午夜视频| 亚洲精品第一综合99久久| 色偷偷88888欧美精品久久久 | 久久久久99精品成人片三人毛片| 一本色综合久久| av无码久久久久久不卡网站 | 久久亚洲AV成人无码软件| 婷婷久久久亚洲欧洲日产国码AV|