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

pku 1661 Help Jimmy 線段樹+階段圖DP

"Help Jimmy" 是在下圖所示的場景上完成的游戲。

場景中包括多個長度和高度各不相同的平臺。地面是最低的平臺,高度為零,長度無限。

Jimmy老鼠在時刻0從高于所有平臺的某處開始下落,它的下落速度始終為1米/秒。當Jimmy落到某個平臺上時,游戲者選擇讓它向左還是向右 跑,它跑動的速度也是1米/秒。當Jimmy跑到平臺的邊緣時,開始繼續下落。Jimmy每次下落的高度不能超過MAX米,不然就會摔死,游戲也會結束。

設計一個程序,計算Jimmy到底地面時可能的最早時間。

Input

第一行是測試數據 的組數t(0 <= t <= 20)。每組測試數據的第一行是四個整數N,X,Y,MAX,用空格分隔。N是平臺的數目(不包括地面),X和Y是Jimmy開始下落的位置的橫豎坐 標,MAX是一次下落的最大高度。接下來的N行每行描述一個平臺,包括三個整數,X1[i],X2[i]和H[i]。H[i]表示平臺的高度,X1[i] 和X2[i]表示平臺左右端點的橫坐標。1 <= N <= 1000,-20000 <= X, X1[i], X2[i] <= 20000,0 < H[i] < Y <= 20000(i = 1..N)。所有坐標的單位都是米。

Jimmy的大小和平臺的厚度均忽略不計。如果Jimmy恰好落在某個平臺的邊緣,被視為落在平臺上。所有的平臺均不重疊或相連。測試數據保證問題一定有解。

Output

對輸入的每組測試數據,輸出一個整數,Jimmy到底地面時可能的最早時間。

Sample Input

1
3 8 17 20
0 10 8
0 10 13
4 14 3

Sample Output

23

解法是這樣

按照y坐標給每個區間排序,以線段端點為節點構圖,每個節點最多有2條邊,用線段樹維護當前線段端點下方的線段。最后求最長路就可以了。

原來想簡化,不要創建s和e節點,結果反而悲劇,各種漏考慮情況。。以后這類題目還是謹慎點吧。。

  1 # include <cstdio>
  2 # include <algorithm>
  3 # include <cstring>
  4 # define mid(p) ((st[p].s+st[p].e)>>1)
  5 # define abs(a) ((a)>0?(a):-(a))
  6 using namespace std;
  7 const int N=150000;
  8 int g[2005],nxt[5005],val[5005],v[5005],c,len[2005];
  9 struct
 10 {
 11    int s,e,id;
 12 }st[N];
 13 struct node
 14 {
 15    int h,s,e;
 16 }data[1005];
 17 int solve(int pos)
 18 {
 19     if(len[pos]!=-1return len[pos];
 20     else
 21     {
 22         if(g[pos]==-1return pos?0xfffffff:0;
 23         else
 24         {
 25             len[pos]=0xfffffff;
 26             for(int p=g[pos];p!=-1;p=nxt[p])
 27             {
 28               len[pos]=min(len[pos],solve(v[p])+val[p]);
 29             }
 30             return len[pos];
 31         }
 32     }
 33 }
 34 bool cmp(const node &a,const node &b)
 35 {
 36    return a.h<b.h;
 37 }
 38 void init(int s,int e,int pos=1)
 39 {
 40    st[pos].s=s;
 41    st[pos].e=e;
 42    st[pos].id=-1;
 43    if(e!=s+1)
 44    {
 45      init(s,mid(pos),pos<<1);
 46      init(mid(pos),e,(pos<<1)+1);
 47    }
 48 }
 49 int get(int target,int pos=1)
 50 {
 51     if(st[pos].id!=-1return st[pos].id;
 52     else if(target>=mid(pos)) return get(target,(pos<<1)+1);
 53     else return get(target,(pos<<1));
 54 }
 55 void insert(int s,int e,int id,int pos=1)
 56 {
 57     if(st[pos].s==s&&st[pos].e==e) 
 58        st[pos].id=id;
 59     else
 60     {
 61         if(st[pos].id!=-1)
 62         {
 63           st[pos<<1].id=st[(pos<<1)+1].id=st[pos].id;
 64           st[pos].id=-1;
 65         }
 66         if(s>=mid(pos)) insert(s,e,id,(pos<<1)+1);
 67         else if(e<=mid(pos)) insert(s,e,id,pos<<1);
 68         else
 69         {
 70             insert(s,mid(pos),id,pos<<1);
 71             insert(mid(pos),e,id,(pos<<1)+1);
 72         }
 73     }
 74 }
 75 inline void addedge(int s,int e,int len)
 76 {
 77    v[c]=e;
 78    val[c]=len;
 79    nxt[c]=g[s];
 80    g[s]=c++;
 81 }
 82 int main()
 83 {
 84    int test;
 85    scanf("%d",&test);
 86    while(test--)
 87    {
 88        int n,x,y,maxnum;
 89        scanf("%d%d%d%d",&n,&x,&y,&maxnum);
 90        for(int i=1;i<=n;i++)
 91        {
 92           scanf("%d%d%d",&data[i].s,&data[i].e,&data[i].h);
 93           data[i].s+=20000;
 94           data[i].e+=20000;
 95        }
 96        x+=20000;
 97        data[0].h=0;
 98        sort(data+1,data+n+1,cmp);
 99        init(0,40001);
100        insert(0,40001,0);
101        memset(g,-1,sizeof(g));
102        c=0;
103        for(int i=1;i<=n;i++)
104        {
105           int p=get(data[i].s);
106           if(data[i].h-data[p].h<=maxnum)
107           {
108                addedge(2*i-1,p?2*p-1:0,p?abs(data[i].s-data[p].s):0);
109                addedge(2*i-1,p?2*p:0,p?abs(data[i].s-data[p].e):0);
110           }
111           p=get(data[i].e);
112           if(data[i].h-data[p].h<=maxnum)
113           {
114               addedge(2*i,p?2*p-1:0,p?abs(data[i].e-data[p].s):0);
115               addedge(2*i,p?2*p:0,p?abs(data[i].e-data[p].e):0);
116           }
117           insert(data[i].s,data[i].e+1,i);
118        }
119        {
120         int p=get(x);
121         addedge(2*n+1,p?2*p-1:0,p?abs(x-data[p].s):0);
122         addedge(2*n+1,p?2*p:0,p?abs(x-data[p].e):0);
123        }
124        memset(len,-1,sizeof(len));
125        printf("%d\n",y+solve(2*n+1));
126    }
127    return 0;
128 }
129 

posted on 2010-11-05 15:47 yzhw 閱讀(234) 評論(0)  編輯 收藏 引用 所屬分類: DPgraph

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

導航

統計

公告

統計系統

留言簿(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>
            欧美亚洲免费高清在线观看| 国产欧美在线看| 99精品国产高清一区二区| 欧美电影免费观看大全| 玖玖视频精品| 亚洲国产精品一区二区久| 欧美成人有码| 亚洲黄色免费| 亚洲精品视频在线播放| 亚洲肉体裸体xxxx137| 欧美成人中文字幕| 免费不卡在线观看| 99成人精品| 宅男噜噜噜66国产日韩在线观看| 中日韩男男gay无套| 亚洲欧美日韩国产成人| 久久精品1区| 欧美大片免费| 国产农村妇女毛片精品久久莱园子| 国产一区二区观看| 亚洲激情网站| 西西裸体人体做爰大胆久久久| 久久免费国产| 9国产精品视频| 久久综合精品一区| 国产精品久久久久影院亚瑟| 红桃视频亚洲| 亚洲一区二区在线观看视频| 另类酷文…触手系列精品集v1小说| 最新精品在线| 久久久精品国产99久久精品芒果| 亚洲九九九在线观看| 一本在线高清不卡dvd| 久久久人人人| 亚洲视频一二三| 欧美大胆人体视频| 红桃视频欧美| 久久精品视频免费| 亚洲自拍都市欧美小说| 欧美人妖在线观看| 亚洲激情第一页| 久久久精品一品道一区| 亚洲图色在线| 欧美日韩国产综合新一区| 在线高清一区| 久久综合色影院| 久久gogo国模啪啪人体图| 国产精品欧美精品| 亚洲一区二区高清| 亚洲最新视频在线播放| 欧美成va人片在线观看| 雨宫琴音一区二区在线| 久久久青草婷婷精品综合日韩| 亚洲视频一区| 国产精品嫩草99a| 亚洲免费人成在线视频观看| 亚洲精品国产精品国自产在线| 欧美mv日韩mv国产网站app| 在线精品亚洲一区二区| 美女尤物久久精品| 久久看片网站| 亚洲欧洲日本mm| 亚洲国产女人aaa毛片在线| 久久中文字幕一区| 亚洲黄色免费电影| 亚洲国产精品视频一区| 欧美激情视频在线免费观看 欧美视频免费一| 在线观看视频一区| 亚洲大胆av| 极品少妇一区二区| 麻豆亚洲精品| 一区二区在线视频播放| 久久久亚洲精品一区二区三区| 午夜精品久久久久99热蜜桃导演| 国产精品日韩欧美大师| 午夜在线观看免费一区| 午夜免费电影一区在线观看| 国产欧美日韩综合一区在线播放 | 国产一级一区二区| 先锋影音久久久| 欧美一级久久久| 亚洲成人直播| 亚洲精品在线观看免费| 国产精品一二一区| 另类激情亚洲| 欧美日韩三级一区二区| 香蕉久久久久久久av网站| 久久久精彩视频| 亚洲五月婷婷| 久久精品欧美日韩精品| 日韩视频永久免费| 亚洲色图在线视频| 一色屋精品视频免费看| 亚洲精品久久久一区二区三区| 国产精品黄视频| 久久一区亚洲| 欧美日韩在线视频一区| 快射av在线播放一区| 欧美三日本三级少妇三99| 久久久一区二区| 欧美视频日韩| 牛人盗摄一区二区三区视频| 欧美三级在线播放| 欧美国产丝袜视频| 国产精品亚洲综合一区在线观看| 欧美成人在线网站| 国产三级精品三级| 欧美日韩国产另类不卡| 新狼窝色av性久久久久久| 欧美成人高清视频| 久久国产手机看片| 欧美人妖另类| 牛牛国产精品| 好吊色欧美一区二区三区四区| 日韩小视频在线观看专区| 亚洲成在线观看| 午夜综合激情| 性欧美暴力猛交另类hd| 欧美全黄视频| 亚洲欧洲精品一区二区三区| 伊大人香蕉综合8在线视| 午夜亚洲福利| 欧美一区影院| 国产精品欧美在线| 在线一区日本视频| 亚洲天堂第二页| 欧美日韩午夜| 日韩一级不卡| 夜夜爽www精品| 欧美激情精品久久久久久免费印度| 蜜桃久久精品一区二区| 国产亚洲精品自拍| 欧美午夜精品久久久久免费视| 亚洲夫妻自拍| 久久精品欧美日韩| 欧美在线视频免费观看| 国产精品久久久久久av下载红粉| 亚洲狠狠丁香婷婷综合久久久| 1769国产精品| 久久综合免费视频影院| 欧美.www| 亚洲精品中文字幕女同| 欧美激情视频在线播放 | 欧美一区二区三区啪啪| 欧美一级欧美一级在线播放| 国产精品免费区二区三区观看| 一区二区三区四区蜜桃| 亚洲欧美日韩国产一区| 国产伦精品一区二区三区高清版| 亚洲免费小视频| 久久精品国产清高在天天线 | 久久九九热re6这里有精品| 欧美在线视频全部完| 激情自拍一区| 欧美高潮视频| 中文国产成人精品| 久久黄金**| 亚洲国产精品一区二区尤物区| 欧美精品二区| 亚洲婷婷国产精品电影人久久| 久久久久se| 亚洲久久一区| 国产区二精品视| 免费美女久久99| 一区二区三区日韩| 久久婷婷色综合| 日韩一级精品| 国产一区二区三区日韩| 欧美成人嫩草网站| 亚洲一区日韩在线| 欧美国产免费| 午夜精品三级视频福利| 亚洲第一在线综合网站| 欧美午夜精品久久久久久超碰| 亚洲免费人成在线视频观看| 蜜臀av国产精品久久久久| 亚洲午夜高清视频| 影音先锋久久资源网| 欧美日韩亚洲一区二区三区在线观看 | 国产精品盗摄久久久| 久久久亚洲精品一区二区三区| 91久久国产综合久久| 性欧美超级视频| 亚洲精品日韩久久| 亚洲欧美美女| 亚洲精品久久久久久久久久久 | 99国产精品久久久| 国产嫩草影院久久久久 | 久久精品在这里| 一本色道久久综合亚洲精品按摩| 久久夜色精品亚洲噜噜国产mv| 亚洲免费人成在线视频观看| 蜜桃久久av| 午夜精品视频| 妖精成人www高清在线观看| 精品福利免费观看| 国产午夜精品视频| 国产麻豆9l精品三级站| 欧美日韩久久精品| 欧美成人免费全部|