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

pku 1203 Timetable 拆點+DP最短路

題意:
Timetable
Time Limit: 3000MS  Memory Limit: 65536K
Total Submissions: 281  Accepted: 86

Description

You are the owner of a railway system between n cities, numbered by integers from 1 to n. Each train travels from the start station to the end station according to a very specific timetable (always on time), not stopping anywhere between. On each station a departure timetable is available. Unfortunately each timetable contains only direct connections. A passenger that wants to travel from city p to city q is not limited to direct connections however -- he or she can change trains. Each change takes zero time, but a passenger cannot change from one train to the other if it departs before the first one arrives. People would like to have a timetable of all optimal connections. A connection departing from city p at A o'clock and arriving in city q at B o'clock is called optimal if there is no connection that begins in p not sooner than at A and ends in q not later than at B. We are only interested in connections that can be completed during same day.
Write a program that:
reads the number n and departure timetable for each of n cities from the standard input,
creates a timetable of optimal connections from city 1 to city n,
writes the answer to the standard output.
Input

The first line of the input contains an integer n (2 <= n <= 100000). The following lines contain n timetables for cities 1, 2, ..., n respectively.

The first line of the timetable description contains only one integer m. Each of the following m lines corresponds to one position in the timetable and contains: departure time A, arrival time B (A < B) and destination city number t (1 <= t <= n) separated by single spaces. Departure time A and arrival time B are written in format hh:mm, where hh are two digits representing full hours (00 <= hh <= 23) and mm are two digits representing minutes (00 <= mm <= 59). Positions in the timetable are given in non-decreasing order according to the departure times. The number of all positions in all timetables does not exceed 1000000.

Output

The first line of the output contains an integer r -- the number of positions in the timetable being the solution. Each of the following r lines contains a departure time A and an arrival time B separated by single space. The time format should be like in the input and positions in the timetable should be ordered increasingly according to the departure times. If there is more then one optimal connection with the same departure and arrival time, your program should output just one.
Sample Input

3
3
09:00 15:00 3
10:00 12:00 2
11:00 20:00 3
2
11:30 13:00 3
12:30 14:00 3
0
Sample Output

2
10:00 14:00
11:00 20:00
Hint

Huge input data, use scanf instead of cin to avoid time limit exceed.
Source

Southwestern Europe 2002

代碼:

  1Source Code
  2
  3Problem: 1203  User: yzhw 
  4Memory: 36324K  Time: 1485MS 
  5Language: G++  Result: Accepted 
  6
  7Source Code 
  8# include <cstdio>
  9# include <set>
 10# include <vector>
 11# include <cstring>
 12# include <iostream>
 13# include <algorithm>
 14using namespace std;
 15struct node
 16{
 17    char s[10],e[10];
 18    int nxt;
 19}
;
 20int n,m;
 21vector<node> data[100001];
 22vector<int> l[100001];
 23int s[100001];
 24int g[1000005],nxt[2000005],v[2000005],co=0,dp[1000005];
 25int change(char *ori)
 26{
 27    char tmp[10];
 28    strcpy(tmp,ori);
 29    return atoi(strtok(tmp,":"))*60+atoi(strtok(NULL,":"));
 30}

 31void addedge(int s,int e)
 32{
 33    v[co]=e;
 34    nxt[co]=g[s];
 35    g[s]=co++;
 36}

 37int solve(int pos)
 38{
 39    if(dp[pos]!=-1return dp[pos];
 40    else if(g[pos]==-1&&pos>=s[n-1]) return dp[pos]=l[n][pos-s[n-1]];
 41    else
 42    {
 43        dp[pos]=(pos>=s[n-1]?l[n][pos-s[n-1]]:0xfffffff);
 44        for(int p=g[pos];p!=-1;p=nxt[p])
 45            dp[pos]=min(dp[pos],solve(v[p]));
 46        return dp[pos];
 47        
 48    }

 49}

 50void print(int time)
 51{
 52    printf("%s%d:%s%d",time/60<10?"0":"",time/60,time%60<10?"0":"",time%60);
 53}

 54int main()
 55{
 56  //  freopen("in11","r",stdin);
 57  //  freopen("ans.txt","w",stdout);
 58    scanf("%d",&n);
 59    s[0]=0;
 60    for(int i=1;i<=n;i++)
 61    {
 62        scanf("%d",&m);
 63        while(m--)
 64        {
 65            node tmp;
 66            scanf("%s%s%d",tmp.s,tmp.e,&tmp.nxt);
 67            data[i].push_back(tmp);
 68            l[i].push_back(change(tmp.s));
 69            if(tmp.nxt==n) l[n].push_back(change(tmp.e));
 70        }

 71        sort(l[i].begin(),l[i].end());
 72        vector<int>::iterator end=unique(l[i].begin(),l[i].end());
 73        while(l[i].end()!=end) l[i].pop_back();
 74        s[i]=s[i-1]+l[i].size();
 75    }

 76    memset(g,-1,sizeof(g));
 77    memset(dp,-1,sizeof(dp));
 78    co=0;
 79    for(int i=1;i<=n;i++)
 80    {
 81        for(int j=s[i-1];j<s[i]-1;j++)
 82             addedge(j,j+1);
 83        for(int j=0;j<data[i].size();j++)
 84            if(lower_bound(l[data[i][j].nxt].begin(),l[data[i][j].nxt].end(),change(data[i][j].e))!=l[data[i][j].nxt].end())
 85                addedge(s[i-1]+lower_bound(l[i].begin(),l[i].end(),change(data[i][j].s))-l[i].begin(),s[data[i][j].nxt-1]+lower_bound(l[data[i][j].nxt].begin(),l[data[i][j].nxt].end(),change(data[i][j].e))-l[data[i][j].nxt].begin());
 86
 87    }

 88    vector<pair<int,int> >ans;
 89    for(int i=s[1]-1;i>=0;i--)
 90        if(solve(i)!=0xfffffff&&(ans.empty()||solve(i)<ans.back().second))
 91            ans.push_back(make_pair(l[1][i],solve(i)));
 92    printf("%d\n",ans.size());
 93    for(int i=ans.size()-1;i>=0;i--)
 94    {
 95        print(ans[i].first);
 96        printf(" ");
 97        print(ans[i].second);
 98        printf("\n");
 99    }

100//    system("pause");
101    return 0;
102    
103}

104
105

posted on 2010-12-09 21:25 yzhw 閱讀(475) 評論(0)  編輯 收藏 引用 所屬分類: DP 、graph

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導航

統計

公告

統計系統

留言簿(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>
            激情成人av在线| 美女图片一区二区| 亚洲在线观看免费| 欧美韩国日本综合| 亚洲国产三级网| 美女啪啪无遮挡免费久久网站| 久久av红桃一区二区小说| 久久亚洲图片| 亚洲国产视频一区| 一本一本a久久| 欧美成人激情视频免费观看| 久久久国产一区二区三区| 欧美午夜精品久久久久久孕妇| 欧美精品手机在线| 国产主播喷水一区二区| 国产真实久久| 欧美一区二区三区在线免费观看| 亚洲国产精品99久久久久久久久| 亚洲一级在线观看| 欧美一区二区精品| 99在线精品视频在线观看| 久久se精品一区二区| 亚洲欧美日韩国产成人| 欧美一区三区二区在线观看| 国产精品夜夜夜一区二区三区尤| 国产精品自拍视频| 国产精品扒开腿爽爽爽视频| 国产精品进线69影院| 亚洲一区二区在线看| 久久五月天婷婷| 亚洲一区二区影院| 在线国产日韩| 狠狠色综合网| 亚洲黄色片网站| 91久久在线观看| 韩国美女久久| 亚洲香蕉伊综合在人在线视看| 亚洲国产精品一区二区第一页 | 欧美ed2k| 欧美电影免费观看高清完整版| 久久噜噜亚洲综合| 中文欧美字幕免费| 亚洲国产91精品在线观看| 久久亚洲精品伦理| 欧美在线黄色| 亚洲精品色图| 99在线精品免费视频九九视| 午夜精品久久久久久| 亚洲综合第一| 国产精品久久久久久久久| 一区二区高清在线观看| 嫩草国产精品入口| 欧美日韩在线观看一区二区| 美国成人直播| 欧美视频在线播放| 亚洲精品视频在线看| 久久久综合香蕉尹人综合网| 亚洲国产天堂久久国产91| 亚洲一区视频| 欧美电影免费观看| 久久另类ts人妖一区二区| 午夜精品福利一区二区三区av| 亚洲伦理精品| 欧美亚州一区二区三区| 在线中文字幕不卡| 国产三区精品| 久久久久久亚洲精品中文字幕 | 亚洲黄色成人| 老司机久久99久久精品播放免费 | 你懂的国产精品| 欧美刺激午夜性久久久久久久| 欧美成人乱码一区二区三区| 欧美精品v国产精品v日韩精品 | 欧美人妖在线观看| 亚洲国产精品ⅴa在线观看| 国产精品一区二区在线观看不卡 | 亚洲精品免费一二三区| 久久久国产91| 麻豆精品视频在线观看| 久久久久久久综合| 亚洲人成久久| 欧美成人一区在线| 欧美电影在线观看完整版| 嫩模写真一区二区三区三州| 亚洲最快最全在线视频| 久久久91精品国产一区二区精品| 麻豆精品视频在线观看视频| 免费影视亚洲| 久久国产精品99久久久久久老狼 | 一区二区三区视频观看| 国外视频精品毛片| 日韩视频在线一区二区| 欧美日韩在线三区| 欧美在线播放视频| 欧美aaaaaaaa牛牛影院| av成人免费在线| 国产欧美精品日韩| 亚洲国产天堂久久综合| 国产欧美一区二区三区沐欲| 久久久www| 国产精品高潮呻吟久久av无限 | 99视频有精品| 狠狠色综合播放一区二区| 亚洲免费av电影| 亚洲电影免费观看高清| 日韩视频免费在线观看| 国产又爽又黄的激情精品视频 | 亚洲国产欧美久久| 亚洲制服丝袜在线| 久久综合九色综合久99| 巨乳诱惑日韩免费av| 精品51国产黑色丝袜高跟鞋| 亚洲一区二区三区三| 日韩亚洲国产精品| 欧美精品一区二区三| 亚洲色诱最新| 国产美女高潮久久白浆| 欧美激情精品久久久久| 久久久亚洲午夜电影| 在线看国产一区| 国产亚洲精品久久久| 国产欧美91| 国产精品日韩久久久| 国产精品视频久久久| 国产一区二区电影在线观看| 黄色成人91| 99国产精品久久久久久久久久 | 一区二区三区在线免费播放| 激情久久久久久久| 日韩视频永久免费| 欧美一区二区黄色| 亚洲第一福利视频| 久久国产免费看| 亚洲欧美成人一区二区三区| 91久久精品国产| 亚洲福利视频专区| 欧美三日本三级三级在线播放| 亚洲欧美另类综合偷拍| 毛片av中文字幕一区二区| 国产精品综合av一区二区国产馆| 最新日韩在线视频| 亚洲一区亚洲二区| 国产亚洲精品一区二555| 久久综合狠狠综合久久激情| 亚洲国产精品第一区二区| 亚洲伊人伊色伊影伊综合网| 狠狠久久综合婷婷不卡| 欧美高清视频一区二区| 欧美大片一区二区| 国产精品久久久久久久久婷婷| 久久综合伊人| 久久成人免费电影| 欧美激情一区二区三区蜜桃视频| 久久全国免费视频| 久久视频在线视频| 欧美淫片网站| 亚洲韩国日本中文字幕| 欧美在线三级| 在线性视频日韩欧美| 经典三级久久| 亚洲国产天堂久久综合| 亚洲一区精品电影| 欧美一区午夜视频在线观看| 免费欧美在线| 亚洲高清久久久| 亚洲激情网站| 久久久久久穴| 在线成人h网| 欧美国产日韩一二三区| 久久久国产精品一区二区三区| 国产精品亚洲综合| 久久精品国产69国产精品亚洲| 亚洲欧美日韩一区| 一区免费观看| 亚洲精品黄色| 国产亚洲一区二区三区在线播放| 久久久999国产| 免费看亚洲片| 久久er99精品| 欧美激情久久久久| 欧美一级精品大片| 欧美激情一区二区三区在线视频观看| 99视频在线观看一区三区| 亚洲欧洲av一区二区| 亚洲国产精品va在线看黑人动漫| 亚洲欧洲精品一区二区三区| 国产麻豆9l精品三级站| 亚洲毛片网站| 亚洲日本乱码在线观看| 先锋影音久久久| 一本久道久久综合婷婷鲸鱼| 久久久久99| 久久五月婷婷丁香社区| 国产精品久久久亚洲一区| 亚洲人成7777| aⅴ色国产欧美| 欧美国产极速在线| 亚洲国产欧美精品| 亚洲精品美女91| 玖玖综合伊人|