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

Why so serious? --[NKU]schindlerlee

pku1696 點積叉積基礎應用

又有好長時間沒寫了解題報告了,保研總算搞定了,月底去武漢,磨槍中....
  1 /* 
  2  * SOUR:pku 1696
  3  * ALGO:computional geometry
  4  * DATE: Tue, 13 Oct 2009 10:42:25 +0800
  5  * COMM:3
  6  * 叉積點積轉啊轉啊
  7  * */
  8 #include<iostream>
  9 #include<cstdio>
 10 #include<cstdlib>
 11 #include<cstring>
 12 #include<algorithm>
 13 #include<cmath>
 14 using namespace std;
 15 typedef long long LL;
 16 const int maxint = 0x7fffffff;
 17 const long long max64 = 0x7fffffffffffffffll;
 18 #define pr(x) fprintf(stderr, x)
 19 /* #define pr(x) for(;0;) */
 20 const int N = 128;
 21 struct point_t {
 22     int x, y, idx;
 23      point_t() {
 24     } point_t(int a, int b) {
 25         x = a, y = b;
 26     }
 27 } p[N], st[N];
 28 
 29 bool vis[N];
 30 
 31 #define sqr(x) ((x)*(x))
 32 double dist(point_t a)
 33 return sqrt(sqr(a.x) + sqr(a.y)); } 
 34 double dist(point_t a, point_t b)
 35 return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y)); } 
 36 
 37 point_t operator +(point_t a, point_t b)
 38 return point_t(a.x + b.x, a.y + b.y); } 
 39 point_t operator -(point_t a, point_t b)
 40 return point_t(a.x - b.x, a.y - b.y); } 
 41 
 42 int cross_mul(point_t a, point_t b)
 43 return a.x * b.y - a.y * b.x; } 
 44 int cross_mul(point_t a, point_t b, point_t c)
 45 return cross_mul(a - c, b - c); } 
 46 int dot_mul(point_t a, point_t b)
 47 return a.x * b.x + a.y * b.y; } 
 48 int dot_mul(point_t a, point_t b, point_t c)
 49 return dot_mul(a - c, b - c); } 
 50 
 51 double angle(point_t a, point_t b)
 52 {
 53     double val = dot_mul(a, b);
 54     val /= dist(a);
 55     val /= dist(b);
 56     return val;
 57 }
 58 
 59 int n, idx, top;
 60 const int inf = (1 << 29);
 61 void graham()
 62 {
 63     int i, j, k;
 64     memset(vis, 0sizeof(vis));
 65     top = 2, st[0= p[0], st[1= p[1];
 66     vis[0= vis[1= true;
 67     for (i = 2; i <= n; i++) {
 68         double val = -inf;
 69         int idx;
 70         for (j = 2; j <= n; j++) {
 71             if (!vis[j]) {
 72                 int c = cross_mul(st[top - 1], p[j], st[top - 2]);
 73                 double d = angle(st[top - 1- st[top - 2], p[j] - st[top - 1]);
 74                 if (c > 0) {
 75                     if ((d > val) || (d == val && dist(p[j], st[top - 1]) < dist(p[idx], st[top - 1]))) {
 76                         idx = j;
 77                         val = d;
 78                     }
 79                 }
 80             }
 81         }
 82         if (val == -inf)
 83             break;
 84         st[top++= p[idx], vis[idx] = true;
 85     }
 86 }
 87 
 88 int main()
 89 {
 90     int i, j, k, testid;
 91     scanf("%d"&testid);
 92     while (testid-- > 0) {
 93         scanf("%d"&n);
 94         idx = 1;
 95         scanf("%d%d%d"&p[1].idx, &p[1].x, &p[1].y);
 96         for (i = 2; i <= n; i++) {
 97             scanf("%d%d%d"&p[i].idx, &p[i].x, &p[i].y);
 98             if ((p[i].y < p[idx].y) || (p[i].y == p[idx].y && p[i].x < p[idx].x)) {
 99                 idx = i;
100             }
101         }
102         swap(p[1], p[idx]);
103         p[0].idx = 0, p[0].x = 0, p[0].y = p[1].y;
104         graham();
105         printf("%d", top - 1);
106         for (i = 1; i < top - 1; i++) {
107             printf(" %d", st[i].idx);
108         }
109         printf(" %d\n", st[i].idx);
110     }
111     return 0;
112 }
113 

posted on 2009-10-13 15:15 schindlerlee 閱讀(1205) 評論(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>
            欧美jizz19性欧美| 久久久国产精品一区二区中文| 久久久久国产一区二区三区| 亚洲一区二区三区精品在线观看| 亚洲日韩欧美视频| 模特精品在线| 欧美激情一区二区三区高清视频 | 亚洲精品日韩精品| 亚洲国产视频一区| 亚洲欧洲另类国产综合| 亚洲精品久久嫩草网站秘色| 亚洲免费观看高清完整版在线观看熊 | 狼人社综合社区| 嫩草国产精品入口| 欧美国产一区二区| 日韩视频在线观看免费| 亚洲图片欧美午夜| 久久久久高清| 欧美另类亚洲| 国产日韩欧美在线一区| 精品成人在线观看| 一区二区三区国产盗摄| 欧美一级二区| 欧美黑人在线播放| 在线视频精品一| 久久久蜜桃精品| 欧美日韩国产首页| 国产综合久久久久久| 夜夜嗨av一区二区三区中文字幕 | 美女免费视频一区| 国产精品国色综合久久| 精品99一区二区| 一二三区精品| 久久综合影音| 99视频在线观看一区三区| 性欧美1819性猛交| 欧美日韩免费区域视频在线观看| 国产精品素人视频| 亚洲精品久久久久久久久久久久| 欧美一进一出视频| 亚洲精品男同| 久久精品理论片| 国产精品一区二区在线观看不卡| 亚洲免费av网站| 欧美成人小视频| 欧美中文字幕在线| 国产欧美一区二区三区久久人妖| 一区二区三区免费看| 欧美黄色影院| 久久色在线观看| 狠色狠色综合久久| 久久精品日产第一区二区| 亚洲视频在线观看一区| 欧美日韩高清不卡| 亚洲第一在线综合在线| 久久久激情视频| 国产精品99久久久久久白浆小说 | 亚洲小说春色综合另类电影| 欧美国产精品| 亚洲高清不卡在线观看| 久久久久九九视频| 亚洲一区免费观看| 欧美午夜剧场| 亚洲无亚洲人成网站77777| 亚洲激情影视| 欧美精品少妇一区二区三区| 亚洲欧洲一区二区三区| 久热这里只精品99re8久| 性色av一区二区三区红粉影视| 国产精品毛片一区二区三区| 一本色道**综合亚洲精品蜜桃冫| 欧美激情视频网站| 欧美激情影音先锋| 亚洲免费久久| 99re6这里只有精品视频在线观看| 欧美美女bbbb| 亚洲欧美精品一区| 欧美一区二区在线免费播放| 国产一区二区你懂的| 久久久久久一区二区| 久久久久久久久久码影片| 亚洲电影免费观看高清完整版在线观看| 久久人人爽人人| 欧美a级一区二区| 亚洲一区二区免费| 久久超碰97中文字幕| 亚洲欧洲一级| 亚洲小说欧美另类社区| 精品成人在线| 亚洲精品一区二区三区不| 亚洲午夜三级在线| 久久精品一区二区三区四区| 欧美一区二区日韩一区二区| 国内精品久久久久久久影视麻豆| 免费成人av资源网| 欧美精品自拍| 久久国产精品黑丝| 久久一二三国产| 亚洲资源av| 噜噜噜91成人网| 亚洲女性喷水在线观看一区| 欧美一级专区| 亚洲美女网站| 久久久精品国产一区二区三区| 亚洲麻豆av| 欧美自拍丝袜亚洲| 亚洲一区免费| 欧美—级在线免费片| 欧美亚洲三区| 欧美精品自拍偷拍动漫精品| 久久久久国色av免费观看性色| 欧美日韩日本视频| 欧美国产免费| 国产网站欧美日韩免费精品在线观看 | 欧美高清视频免费观看| 国产精品日韩精品欧美在线| 亚洲区中文字幕| 在线免费一区三区| 欧美一区二区高清在线观看| 亚洲夜间福利| 欧美日产国产成人免费图片| 欧美电影在线播放| 国产综合一区二区| 亚洲男人第一av网站| 在线一区二区日韩| 欧美激情一区二区三区在线| 久热精品在线| 黄色综合网站| 久久九九免费| 久久免费的精品国产v∧| 国产伦精品一区二区三区免费 | 欧美一区二区在线看| 欧美日韩一区二区三区| 91久久极品少妇xxxxⅹ软件| 亚洲第一在线综合在线| 久久久久免费| 麻豆9191精品国产| 黄色成人av网| 久久久久综合网| 狂野欧美一区| 18成人免费观看视频| 久久久亚洲一区| 欧美国产在线观看| 亚洲美女中文字幕| 欧美日韩欧美一区二区| 在线视频亚洲| 久久国产精品色婷婷| 国产亚洲欧美一区二区三区| 欧美亚洲综合在线| 久久免费国产精品| 久久午夜电影网| 一本色道综合亚洲| 欧美日韩伦理在线| 在线中文字幕一区| 性欧美超级视频| 国产一区二区三区网站| 久久成人一区二区| 美玉足脚交一区二区三区图片| 韩日视频一区| 欧美电影资源| 一区二区三区四区五区视频| 欧美在线视频日韩| 在线精品视频免费观看| 欧美精品三级| 午夜欧美精品久久久久久久| 久久麻豆一区二区| 亚洲欧洲在线免费| 国产精品久久一区二区三区| 久久9热精品视频| 亚洲国产精品一区二区尤物区| 亚洲深夜福利视频| 国产一区二区三区高清在线观看| 免费成年人欧美视频| 亚洲视频中文| 欧美大学生性色视频| 一区二区激情| 狠狠色综合网| 欧美午夜宅男影院| 久久中文久久字幕| 亚洲图片在线观看| 欧美成人一区在线| 亚洲欧美日韩国产另类专区| 亚洲第一毛片| 国产日韩精品一区二区三区在线| 欧美国产先锋| 久久久成人网| 亚洲一区欧美二区| 亚洲国产日日夜夜| 久久婷婷av| 亚洲欧美欧美一区二区三区| 亚洲品质自拍| 永久免费毛片在线播放不卡| 国产精品久久久久毛片软件| 女女同性精品视频| 亚洲男人第一av网站| 欧美国产激情二区三区| 久久久久国色av免费观看性色| 亚洲欧美电影在线观看| 99视频+国产日韩欧美| 亚洲国产日韩在线|