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

pku1763 Shortcut 離散化+排序+線掃


題意大概是這樣,如上圖所示,粗線描述的是一個人從家到學校的網格圖上的路徑,現在他想找一條捷徑,shortcut,即兩端都在路徑頂點上且不與任何一條路徑相交,問最短的捷徑為多長。如果有重復,則要求起點編號盡量小,如果再重復,則終點編號盡量大。
這題要分別統計水平捷徑和垂直捷徑。以統計水平捷徑為例:
1、對所有點的y坐標進行離散化(不離散化統計的時候hash也行。。)
2、對所有點坐標以x坐標降序排列
3、對點進行掃描,判斷當前點的y值是否在hash表內(即判斷該點右側是否有路徑節點),如果存在的話用hash表中記錄的前一個x值與當前點的x值作差,然后與當前最小值比較,如果小于當前最小值,則更新節點;然后更新hash表中的值為當前點的x值
剩下的就是細節的處理了- -
貼代碼(nlogn跑了1s多,有點不爽)
  1 # include <cstdio>
  2 # include <algorithm>
  3 # include <cstring>
  4 using namespace std;
  5 struct node
  6 {
  7    bool r,u;
  8    int x,y;
  9    int mapx,mapy;
 10    int pos;
 11 }data[250005];
 12 bool cmpx(const node &a,const node &b)
 13 {
 14    return a.x>b.x;
 15 }
 16 bool cmpy(const node &a,const node &b)
 17 {
 18     return a.y>b.y;
 19 }
 20 char str[250005];
 21 int id[250005];
 22 int len;
 23 int main()
 24 {
 25     scanf("%d",&len);
 26     scanf("%s",str);
 27     len++;
 28     int x=0,y=0;
 29     for(int i=0;i<len;i++)
 30       data[i].u=data[i].r=1;
 31     for(int i=0;i<len-1;i++)
 32     {
 33        data[i].x=x;
 34        data[i].y=y;
 35        data[i].pos=i;
 36        
 37        switch(str[i])
 38        {
 39          case 'N':
 40               y++;
 41               data[i].u=0;
 42               break;
 43          case 'E':
 44               data[i].r=0;
 45               x++;
 46               break;
 47          case 'S':
 48               data[i+1].u=0;
 49               y--;
 50               break;
 51          case 'W':
 52               data[i+1].r=0;
 53               x--;
 54               break;
 55        };
 56     }
 57     int res=0xfffffff,s,e;
 58     char dir;
 59     data[len-1].x=x;
 60     data[len-1].y=y;
 61     data[len-1].pos=len-1;
 62     sort(data,data+len,cmpx);
 63     data[len-1].mapx=0;
 64     for(int i=len-2;i>=0;i--)
 65       if(data[i].x==data[i+1].x)
 66          data[i].mapx=data[i+1].mapx;
 67       else
 68          data[i].mapx=data[i+1].mapx+1;
 69     sort(data,data+len,cmpy);
 70     data[len-1].mapy=0;
 71     for(int i=len-2;i>=0;i--)
 72       if(data[i].y==data[i+1].y)
 73          data[i].mapy=data[i+1].mapy;
 74       else
 75          data[i].mapy=data[i+1].mapy+1;
 76     memset(id,-1,sizeof(id));
 77     for(int i=0;i<len;i++)
 78     {
 79        if(id[data[i].mapx]!=-1&&data[i].u)
 80          if(data[id[data[i].mapx]].y-data[i].y<res||data[id[data[i].mapx]].y-data[i].y==res&&min(data[id[data[i].mapx]].pos,data[i].pos)<s||data[id[data[i].mapx]].y-data[i].y==res&&min(data[id[data[i].mapx]].pos,data[i].pos)==s&&max(data[id[data[i].mapx]].pos,data[i].pos)>e)
 81          {
 82             res=data[id[data[i].mapx]].y-data[i].y,s=min(data[id[data[i].mapx]].pos,data[i].pos),e=max(data[id[data[i].mapx]].pos,data[i].pos);
 83             if(data[i].pos<data[id[data[i].mapx]].pos) dir='N';
 84             else dir='S';
 85          }
 86        id[data[i].mapx]=i;
 87     }
 88     sort(data,data+len,cmpx);
 89     memset(id,-1,sizeof(id));
 90      for(int i=0;i<len;i++)
 91     {
 92        if(id[data[i].mapy]!=-1&&data[i].r)
 93          if(data[id[data[i].mapy]].x-data[i].x<res||data[id[data[i].mapy]].x-data[i].x==res&&min(data[id[data[i].mapy]].pos,data[i].pos)<s||data[id[data[i].mapy]].x-data[i].x==res&&min(data[id[data[i].mapy]].pos,data[i].pos)==s&&max(data[id[data[i].mapy]].pos,data[i].pos)>e)
 94            {
 95                res=data[id[data[i].mapy]].x-data[i].x,s=min(data[id[data[i].mapy]].pos,data[i].pos),e=max(data[id[data[i].mapy]].pos,data[i].pos);
 96                if(data[i].pos<data[id[data[i].mapy]].pos)
 97                    dir='E';
 98                else
 99                    dir='W';
100            }
101            id[data[i].mapy]=i;
102     }
103     printf("%d %d %d %c\n",res,s,e,dir);
104     return 0;
105 }
106 




posted on 2010-10-21 02:07 yzhw 閱讀(171) 評論(0)  編輯 收藏 引用 所屬分類: graphdata struct

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            校园激情久久| 亚洲欧美一区二区原创| 欧美激情国产精品| 午夜精品在线看| 欧美午夜激情小视频| 日韩一级二级三级| 欧美激情在线狂野欧美精品| 欧美在线一二三四区| 国产欧美一区二区精品秋霞影院| 久久国产欧美精品| 老巨人导航500精品| 午夜精彩视频在线观看不卡 | 欧美夫妇交换俱乐部在线观看| 黄色成人片子| 另类天堂视频在线观看| 久久久久国产免费免费| 亚洲第一在线视频| 亚洲二区在线视频| 久久久www成人免费精品| 精品51国产黑色丝袜高跟鞋| 久久看片网站| 美女网站在线免费欧美精品| 亚洲激情av| 亚洲精品国产日韩| 欧美体内谢she精2性欧美| 亚洲在线一区二区三区| 亚洲欧美日韩在线观看a三区| 国产精品久久久免费| 久久精品日韩欧美| 免费欧美高清视频| 亚洲一区二区免费看| 亚洲欧美激情视频| 精品91免费| 亚洲久色影视| 国产欧美在线视频| 欧美成人综合在线| 国产精品久久久久天堂| 久久一区二区三区av| 欧美另类videos死尸| 久久不见久久见免费视频1| 久久综合99re88久久爱| 一本色道久久88精品综合| 欧美一区激情| 亚洲免费av电影| 亚洲欧美一区二区激情| 亚洲人成亚洲人成在线观看| 亚洲一区二区3| 亚洲国产裸拍裸体视频在线观看乱了| 一个色综合导航| 精品二区久久| 亚洲在线观看免费| 亚洲巨乳在线| 久久精品电影| 午夜一级久久| 欧美精品粉嫩高潮一区二区| 久久久免费精品视频| 欧美视频在线观看免费网址| 久久久久久久久伊人| 国产精品国产福利国产秒拍| 亚洲第一页在线| 伊人精品久久久久7777| 亚洲欧洲av一区二区| 一本久道久久综合中文字幕| 久久香蕉国产线看观看av| 欧美一区国产一区| 国产精品超碰97尤物18| 亚洲精品国久久99热| 一区二区三区在线观看视频| 久久9热精品视频| 99亚洲视频| 亚洲黄色精品| 久久精品亚洲精品| 欧美伊久线香蕉线新在线| 欧美乱大交xxxxx| 欧美大片专区| 伊人成人在线视频| 欧美尤物巨大精品爽| 午夜在线视频观看日韩17c| 欧美精品三级在线观看| 亚洲高清成人| 亚洲国产日韩一区| 久久久亚洲影院你懂的| 久久精品国产亚洲高清剧情介绍| 国产精品久久国产愉拍| 亚洲狼人综合| 国产精品99久久久久久久久| 欧美日韩一区二区三区视频 | 亚洲天堂网在线观看| 亚洲精品中文字幕在线| 欧美成人免费一级人片100| 欧美大片免费观看| 亚洲激情欧美| 欧美肥婆在线| 亚洲精品视频一区| 亚洲免费一级电影| 国产日本亚洲高清| 久久精品一区二区三区不卡牛牛| 久久婷婷综合激情| **欧美日韩vr在线| 欧美成ee人免费视频| 亚洲激情一区| 亚洲视频axxx| 国产精品综合| 久久精品亚洲乱码伦伦中文 | 一本不卡影院| 欧美在线观看一区二区三区| 国产精品自拍在线| 久久精品在线视频| 欧美激情按摩在线| 亚洲一区免费视频| 国产一区视频在线观看免费| 久久久久久久久久看片| 欧美国内亚洲| 亚洲综合视频一区| 国模吧视频一区| 欧美国产视频在线观看| 亚洲一区二区在线免费观看视频| 久久青草久久| 在线中文字幕日韩| 国产一区二区三区最好精华液| 久久综合九色99| 日韩亚洲视频在线| 久久精品综合一区| 日韩亚洲在线观看| 国产精品毛片在线看| 久久久7777| 99视频在线观看一区三区| 久久精品中文字幕免费mv| 91久久精品国产91久久性色tv| 欧美日韩一区二区视频在线观看| 午夜精品理论片| 亚洲精品1区2区| 久久美女性网| 久久亚洲精品欧美| 欧美在线视频在线播放完整版免费观看 | 一区二区自拍| 欧美色视频在线| 久久另类ts人妖一区二区| 日韩一级精品视频在线观看| 久久久综合精品| 亚洲免费在线视频一区 二区| 精品69视频一区二区三区| 国产精品极品美女粉嫩高清在线| 久久久久五月天| 夜夜嗨av一区二区三区中文字幕| 麻豆91精品91久久久的内涵| 亚洲少妇自拍| 亚洲电影天堂av| 国产欧美一区二区三区国产幕精品 | 欧美精品高清视频| 久久久久高清| 亚洲视频国产视频| 亚洲欧洲一区二区天堂久久| 久久免费午夜影院| 香蕉视频成人在线观看| aa国产精品| 亚洲国产日韩欧美在线动漫| 国产日韩亚洲| 国产精品久久久久久av福利软件 | 亚洲欧美成人综合| 亚洲精品久久久久| 欧美a级片一区| 久久久久久亚洲精品中文字幕| 亚洲一区不卡| 在线中文字幕一区| 中日韩午夜理伦电影免费| 91久久综合亚洲鲁鲁五月天| 国产一区二区主播在线| 国产精品入口夜色视频大尺度| 欧美日韩国产在线播放| 母乳一区在线观看| 欧美成人在线免费观看| 久久免费黄色| 久久久噜噜噜| 久久字幕精品一区| 久久综合久色欧美综合狠狠| 噜噜噜噜噜久久久久久91| 久久综合一区| 女同一区二区| 欧美精品激情| 欧美日韩国语| 国产精品视频内| 国产欧美日韩高清| 国产午夜亚洲精品羞羞网站| 国产精品亚洲片夜色在线| 国产精品区免费视频| 国产视频一区二区三区在线观看| 国产视频精品免费播放| 精品成人乱色一区二区| 永久免费视频成人| 亚洲剧情一区二区| 亚洲欧美久久| 久久精品国产一区二区电影| 久久精品视频在线| 免费在线观看成人av| 亚洲激情网站| 亚洲欧美日本在线| 久热精品视频| 欧美日韩美女| 国产自产女人91一区在线观看|