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

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 閱讀(1206) 評論(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热这里只有精品8| 亚洲一级在线| 久久久久综合| 亚洲精品免费在线| 亚洲婷婷免费| 久久亚洲精品一区| 欧美日韩日韩| 国内一区二区三区| 一本久道久久综合狠狠爱| 亚洲免费在线| 亚洲国产成人精品久久| 亚洲一区激情| 欧美福利电影网| 国产日韩高清一区二区三区在线| 精品不卡一区| 中日韩视频在线观看| 久久精品日产第一区二区三区| 欧美顶级大胆免费视频| 一区二区三区精品视频在线观看| 久久成人人人人精品欧| 国产精品va在线播放| 亚洲丶国产丶欧美一区二区三区| 亚洲欧美成人综合| 亚洲国产三级| 久久精品国产亚洲5555| 国产精品久久久久久久免费软件| 亚洲国产高清一区| 久久精品日韩欧美| 亚洲图片欧洲图片av| 欧美成人tv| 在线观看欧美一区| 欧美专区一区二区三区| 在线视频你懂得一区 | 午夜精品免费视频| 欧美日韩一卡| 亚洲免费观看视频| 亚洲电影天堂av| 久久精品日韩欧美| 国产日韩精品入口| 亚洲欧美日韩视频二区| 99精品欧美一区二区蜜桃免费| 免费成人av资源网| 久久精品视频一| 亚洲综合国产激情另类一区| 欧美日韩国产三级| 日韩一级不卡| 亚洲日本视频| 欧美啪啪一区| 亚洲少妇中出一区| 亚洲美女91| 欧美另类在线观看| 亚洲视频一起| 亚洲性夜色噜噜噜7777| 国产精品久久久一区麻豆最新章节| 亚洲精品小视频| 亚洲精品乱码久久久久久日本蜜臀| 欧美成人免费全部| 亚洲理论在线观看| 亚洲巨乳在线| 国产精品卡一卡二| 欧美亚洲免费| 久久黄金**| 亚洲国产一区二区a毛片| 欧美大片免费观看在线观看网站推荐| 久久人人爽人人爽| 亚洲激情在线| 夜夜夜精品看看| 国产精品亚洲精品| 卡一卡二国产精品| 暖暖成人免费视频| 亚洲网站在线观看| 欧美一区二区三区久久精品茉莉花| 国产色爱av资源综合区| 欧美1区2区3区| 欧美视频在线播放| 久久av最新网址| 欧美sm视频| 亚洲欧美精品在线观看| 久久婷婷蜜乳一本欲蜜臀| 亚洲精品一区在线观看| 亚洲欧美高清| 亚洲精品视频中文字幕| 亚洲一区二区毛片| 亚洲第一视频| 亚洲欧美国产另类| 亚洲精品国精品久久99热| 午夜电影亚洲| 亚洲乱亚洲高清| 久久er精品视频| 亚洲伊人伊色伊影伊综合网 | 久色成人在线| 欧美午夜精品久久久久久超碰| 久久久国产午夜精品| 欧美看片网站| 免费观看一区| 国产日本欧美一区二区三区在线| 亚洲激情偷拍| 精品动漫一区二区| 亚洲影院在线观看| 洋洋av久久久久久久一区| 久久精品在线视频| 欧美一级视频精品观看| 欧美肥婆在线| 欧美在线观看天堂一区二区三区 | 亚洲美女视频| 欧美影院成年免费版| 日韩一级黄色片| 狂野欧美激情性xxxx欧美| 香蕉乱码成人久久天堂爱免费| 欧美成人国产一区二区| 久久夜色精品亚洲噜噜国产mv| 欧美手机在线| 99亚洲精品| 一本久久青青| 欧美理论电影在线观看| 亚洲黄色三级| 亚洲精品欧美日韩| 久久躁狠狠躁夜夜爽| 久久一区中文字幕| 国产色视频一区| 亚洲欧美日韩精品| 欧美在线视频全部完| 国产欧美欧洲在线观看| 亚洲欧美国产毛片在线| 欧美一区二区三区免费视频| 国产精品日韩欧美大师| 亚洲欧美日韩视频二区| 欧美在线网站| 国内精品视频在线播放| 久久精品成人一区二区三区蜜臀 | 欧美激情aaaa| 91久久国产自产拍夜夜嗨| 日韩视频在线免费观看| 欧美麻豆久久久久久中文| 最新高清无码专区| 一区二区三区高清不卡| 欧美日韩中文精品| 亚洲天堂免费观看| 久久av资源网| 亚洲高清资源| 欧美另类变人与禽xxxxx| 亚洲视频导航| 久久视频一区二区| 亚洲免费观看| 国产欧美综合在线| 久久野战av| 夜夜嗨网站十八久久| 久久久久久久999| 亚洲电影免费观看高清| 欧美精品电影在线| 亚洲欧美国产精品专区久久| 免费不卡在线观看av| 一片黄亚洲嫩模| 国产丝袜一区二区三区| 另类亚洲自拍| 亚洲婷婷综合久久一本伊一区| 久久久久久久久久久久久女国产乱 | 在线观看精品| 欧美日韩欧美一区二区| 午夜精品福利一区二区蜜股av| 久久亚洲精品一区| 亚洲天堂网在线观看| 国产有码一区二区| 影音先锋一区| 亚洲一级黄色av| 欧美亚洲日本一区| 亚洲黄一区二区三区| 欧美视频日韩| 噜噜噜在线观看免费视频日韩| 亚洲无线一线二线三线区别av| 免费成人黄色片| 午夜在线电影亚洲一区| 亚洲精品一区二区三区99| 国产日韩欧美在线播放| 欧美日韩高清免费| 久久综合色一综合色88| 亚洲一区美女视频在线观看免费| 欧美高清不卡| 久久精品在线| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲久久一区二区| 麻豆国产精品777777在线| 亚洲自啪免费| 亚洲视频精选| aa级大片欧美三级| 在线日韩中文字幕| 国外成人在线视频网站|