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

a tutorial on computer science

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  21 隨筆 :: 0 文章 :: 17 評論 :: 0 Trackbacks
這個題的意思是說,一個人在一個奇怪的賓館里,這個賓館有N個電梯,這些電梯相鄰兩層的時間為T(i),而且這些電梯很奇怪,只在某些樓層會停(每個電梯停下的頂層和底層都不一樣)。開始看的時候,把題意理解的巨復(fù)雜,覺得兩個樓層之間的轉(zhuǎn)移很難計算,后來才發(fā)現(xiàn),換乘電梯需要的時間是固定的值(60s),汗。這樣的話就是個最短路問題。不同電梯相同樓層之間的轉(zhuǎn)移花費是60s,相同電梯不同樓層之間的轉(zhuǎn)移花費是abs(i-j)*speed[n]。n是電梯號,i,j是樓層號。其實這個題可以用個無腦的BF算法搞一下,而且數(shù)據(jù)那么小。bf算法大概是這么個搞法:r[i][j][k][m]表示i個電梯到j(luò)層樓到j(luò)個電梯k層樓。轉(zhuǎn)移方程自己搞。什么?復(fù)雜度太高了?額,500X500X500,搞不起。這個題邊不太多,而且是單向邊,那就搞個spfa優(yōu)化下,應(yīng)該OK。不過我看了一天的重點不是這個,這個題我剛開始理解成每個電梯之間的轉(zhuǎn)移的代價不是固定的,然后就往分層圖的方向想了下,發(fā)現(xiàn)沒用。反正這種題的搞法就是最短路,如果能搞出個比較滿意的狀態(tài)出來,應(yīng)該能OK。想了下發(fā)現(xiàn)可以搞個r[i][j]表示第一層樓到達j個電梯j層樓的代價。好了,這就是個迪杰斯特拉嘛。。而且還是個赤裸裸的迪杰斯特拉,而且500^2的裸復(fù)雜度都無壓力。當時沒想到這個是個迪杰斯特拉,看錯題了以為每次轉(zhuǎn)移的代價不同。然后就開始yy了。yy了很久之后。。發(fā)現(xiàn)每次從一個點開始擴展,可以擴展出這么些個狀態(tài):繼續(xù)坐這個電梯,走個遍;換乘電梯。那么這些狀態(tài)里面有一個最小的,不難證明這個最小的肯定就是狀態(tài)r[i][j]的最優(yōu)值了,因為如果他從別的地方走再回來,肯定會比這個值大的嘛。。好吧,這就是迪杰斯特拉了。我還暗暗驚嘆,原來迪杰斯特拉還可以這么玩,轉(zhuǎn)移的代價不確定,竟然也可以這么搞,當時就覺得劉汝佳出的題不錯。后來才發(fā)現(xiàn)題目也很普通。最近狀態(tài)很不好,想題目要很久,代碼也越寫越凌亂,索性正確率還不錯,早晚會出大麻煩??赡芤彩莻€必經(jīng)的階段吧。加油,ws.
#include <iostream>
#include <sstream> 
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#define INF ((1<<29) - 100)

using namespace std;

int nmap[6][110]; //第i個電梯能否到j(luò)層

int speed[6]; //第i個電梯的速度

int ndist[6][110];

int nvis[6][110];

int evlen[6];

int N,T;


void findmin(int &minstx,int &minsty)
{
  int i,j;
  minstx = minsty = -1;
  for(i=0;i<N;i++)
   for(j=0;j<100;j++)
   {
     if(nmap[i][j] && !nvis[i][j] && (ndist[minstx][minsty] > ndist[i][j] || minstx == -1))
     {
       minstx = i,minsty = j;
     }
   }
}


int getlen(int j,int minsty,int m)
{
    return abs(m - minsty)*speed[j];
}

void digs()
{
  int i,j;
  memset(nvis,0,sizeof(nvis));
 
  for(i=0;i<N;i++)
  {
    for(j=0;j<100;j++)
     ndist[i][j] = INF;
  } 

  for(i=0;i<N;i++)
  if(nmap[i][0])
  {
    ndist[i][0] = 0;
  }

  int k;
  
      for(i=0;i<N*100;i++)
      {
        int minstx = -1,minsty = -1;
        findmin(minstx,minsty);
        if(minstx == -1)  return;
        nvis[minstx][minsty] = 1;
        //printf("nidst:: %d %d %d\n",minstx,minsty,ndist[minstx][minsty]);
        for(j=0;j<N;j++) //沿著電梯上一層,或者等到下一個電梯,進入。
        {
         if(j == minstx)
         {
           int m = minsty + 1;
           while(m != minsty)
           {
             if(nmap[j][m] && !nvis[j][m])
             {
                ndist[j][m] = min(ndist[j][m],ndist[j][minsty] + getlen(j,minsty,m));
             }
             m++,m%=100;
           }
           continue;
         } 
         //等到j(luò)個電梯,minsty  ,cost(ndist[minstx][minsty],minstx,j,minsty)   
         if(nmap[j][minsty] && !nvis[j][minsty])
         {
            ndist[j][minsty] = min(ndist[j][minsty],ndist[minstx][minsty] + 60); 
         } 
       }
      }
}

int main()
{
  int i,j; 
  string str;
  while(scanf("%d%d",&N,&T) != EOF)
  {
    memset(nmap,0,sizeof(nmap));
    for(i=0;i<N;i++)
      scanf("%d",&speed[i]);
    getline(cin,str);
    for(i=0;i<N;i++)
    {
      getline(cin,str);
      stringstream ss(str);
      int tmp,s=-1,e=-1;
      while(ss>>tmp)
      {
        if(s == -1) s = tmp;
        nmap[i][tmp] = 1;
        e = tmp;
      }
      evlen[i] = e - s;
    }
   digs();
   int ansx = -1;
   for(i=0;i<N;i++)
    if(nmap[i][T] && (ansx == -1 || ndist[ansx][T] > ndist[i][T]))
      ansx = i;
   if(ansx == -1 || ndist[ansx][T] == INF) printf("IMPOSSIBLE\n");
   else printf("%d\n",ndist[ansx][T]);
  }
  return 0;
}
 
posted on 2012-07-22 23:43 bigrabbit 閱讀(1164) 評論(0)  編輯 收藏 引用

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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情免费在线| 一本一道久久综合狠狠老精东影业| 欧美日韩在线一二三| 在线精品观看| 欧美黄色免费| 欧美xart系列在线观看| 亚洲日本成人在线观看| 麻豆精品在线视频| 欧美91福利在线观看| 99综合电影在线视频| 亚洲手机在线| 亚洲国产日韩在线一区模特| 美女黄网久久| 久久综合免费视频影院| 日韩午夜免费视频| 亚洲影视综合| 亚洲精品一区二区在线观看| 一本久道久久综合婷婷鲸鱼| 国产精品亚洲网站| 亚洲成色777777女色窝| 国产精品久久久久久久久久久久| 久久久99爱| 欧美精品首页| 欧美v亚洲v综合ⅴ国产v| 欧美特黄视频| 亚洲第一精品夜夜躁人人爽 | 裸体丰满少妇做受久久99精品| 美日韩精品视频| 久久影院午夜论| 国产午夜亚洲精品不卡| 亚洲日韩欧美视频| 在线国产精品一区| 亚洲欧美日韩精品久久亚洲区| 亚洲精选91| 日韩一区二区电影网| 在线亚洲一区二区| 亚洲国产精品一区二区第一页 | 欧美一区二区三区视频在线观看| 久久经典综合| 亚洲欧美激情一区| 欧美视频中文在线看 | 国产日韩欧美不卡| 亚洲嫩草精品久久| 欧美综合77777色婷婷| 国产日韩一区| 久久九九免费| 欧美激情亚洲自拍| 亚洲精品久久嫩草网站秘色| 亚洲宅男天堂在线观看无病毒| 欧美顶级少妇做爰| 亚洲免费黄色| 久久www成人_看片免费不卡| 国产人成一区二区三区影院| 欧美一区二区国产| 亚洲全黄一级网站| 先锋影音一区二区三区| 国产亚洲欧美一区二区| 久久综合色婷婷| 日韩小视频在线观看专区| 午夜一区在线| 亚洲人体大胆视频| 国产欧美一区二区三区久久 | 亚洲黄色有码视频| 亚洲一区二区成人| 久久久久综合网| 午夜国产精品影院在线观看| 免费看亚洲片| 欧美韩国日本综合| 欧美国产视频在线观看| 99av国产精品欲麻豆| 亚洲欧美日韩网| 亚洲大片在线观看| 国产日韩av在线播放| 欧美丰满高潮xxxx喷水动漫| 欧美日韩国产精品成人| 国产精品一区二区黑丝| 一区二区在线观看av| 亚洲最新视频在线| 久久综合色影院| 一区二区三区高清| 牛牛影视久久网| 国产日产精品一区二区三区四区的观看方式| 国产丝袜一区二区| av成人手机在线| 欧美成人在线免费观看| 亚洲一线二线三线久久久| 欧美精品免费播放| 一区二区三区在线不卡| 亚洲欧美日韩在线高清直播| 欧美黑人国产人伦爽爽爽| 午夜精品一区二区三区电影天堂 | 亚洲第一在线视频| 午夜久久久久| 一区二区三区国产| 国产精品国产三级国产专区53| 亚洲精品一区二区三区在线观看 | 久久成人精品电影| 一本久道久久综合中文字幕| 久久婷婷激情| 欧美一级一区| 激情婷婷亚洲| 亚洲国产1区| 欧美久久婷婷综合色| 亚洲最新视频在线| 亚洲视频中文字幕| 欧美色图天堂网| 中文日韩电影网站| 日韩一级精品视频在线观看| 欧美激情精品久久久| 在线免费不卡视频| 欧美aⅴ一区二区三区视频| 亚洲午夜极品| 国产欧美日韩专区发布| 欧美在线看片a免费观看| 亚洲欧美色婷婷| 国内精品久久久久久 | 性18欧美另类| 久久久久国产一区二区| 亚洲国产精品久久久久秋霞不卡| 麻豆成人精品| 欧美一区二区国产| 好吊日精品视频| 欧美激情无毛| 国产精品一区亚洲| 欧美大片在线看免费观看| 榴莲视频成人在线观看| 最新日韩在线视频| 一本大道av伊人久久综合| 亚洲国产高清在线| 欧美综合国产精品久久丁香| 日韩午夜电影| 午夜欧美视频| 99精品视频网| 久久精品一区蜜桃臀影院| 亚洲三级免费电影| 校园春色国产精品| 亚洲一区二区免费| 欧美人成免费网站| 欧美福利电影网| 国产精品无码专区在线观看| 欧美成年人视频| 亚洲视频999| 亚洲国产导航| 久久久久久国产精品mv| 久久福利影视| 国产亚洲一区二区在线观看| 欧美一区二视频在线免费观看| 羞羞视频在线观看欧美| 欧美丝袜一区二区| 日韩视频免费观看| 99视频精品免费观看| 欧美激情91| 亚洲二区视频在线| 伊人一区二区三区久久精品| 久久免费视频网站| 亚洲国产老妈| 亚洲一区二区精品在线| 国产日韩欧美高清免费| 久久综合网络一区二区| 亚洲视频一二区| 欧美激情一区二区三区全黄 | 亚洲另类黄色| 欧美gay视频激情| 国产精品久久久久久久久借妻 | 久久久另类综合| 欧美一级久久久| 国产麻豆日韩| 久久久999成人| 欧美a级片一区| 99国产精品久久久久久久久久 | 小黄鸭精品密入口导航| 国产精品家庭影院| 久久国产日韩欧美| 欧美久久久久久久久久| 一本色道久久综合狠狠躁的推荐| 欧美日本在线观看| 久久精品成人| 久久三级视频| 亚洲欧美精品在线| 一区在线影院| 国产精品久久久久久妇女6080| 久久久激情视频| 欧美中文在线观看| 在线观看亚洲| 黄色av成人| 国产一区二区三区视频在线观看| 欧美少妇一区| 国产精品99一区二区| 欧美韩日一区二区| 暖暖成人免费视频| 欧美一区成人| 久久欧美中文字幕| 99国产精品久久久久久久| 国产视频精品免费播放| 国产亚洲一区二区在线观看| 亚洲夜间福利| 亚洲在线网站| 国产精品一卡| 欧美一区二区| 午夜在线一区|