zoukankan      html  css  js  c++  java
  • bzoj 1003: [ZJOI2006]物流运输trans

     1 #include<cstdio>
     2 #include<queue>
     3 #include<iostream>
     4 #include<cstring>
     5 #define M 1000
     6 using namespace std;
     7 int n,m,k,e,cnt,head[M],next[2*M],u[2*M],v[2*M],f[110][110],b[110];
     8 int f1[110];
     9 long long t[110][110],ff[110];
    10 void jia(int a1,int a2,int a3)
    11 {
    12     cnt++;
    13     next[cnt]=head[a1];
    14     u[cnt]=a2;
    15     v[cnt]=a3;
    16     head[a1]=cnt;
    17     return;
    18 }
    19 int sp(int x,int y)
    20 {
    21     memset(b,0,sizeof(b));
    22     memset(f1,0,sizeof(f1));
    23     for(int i=x;i<=y;i++)
    24       for(int j=1;j<=m;j++)
    25         if(f[i][j])
    26           b[j]=1;
    27     queue<int>q;
    28     q.push(1);
    29     f1[1]=1;
    30     int d[22];
    31     for(int i=2;i<=m;i++)
    32       d[i]=0x7fffffff;
    33     d[1]=0;
    34     for(;!q.empty();)
    35       {
    36         int p=q.front();
    37         q.pop();
    38         f1[p]=0;
    39         for(int i=head[p];i;i=next[i])
    40           if(!b[u[i]]&&d[u[i]]>d[p]+v[i])
    41             {
    42                 d[u[i]]=d[p]+v[i];
    43                 if(!f1[u[i]])
    44                   {
    45                     q.push(u[i]);
    46                     f1[u[i]]=1;
    47                   }
    48             }
    49       }
    50     return(d[m]);
    51 }
    52 void dp()
    53 {
    54     for(int i=1;i<=n;i++)
    55       {
    56         ff[i]=(long long)t[1][i]*i;
    57         for(int j=1;j<i;j++)
    58           ff[i]=min(ff[i],ff[j]+k+t[j+1][i]*(i-j));
    59       }
    60     return;
    61 }
    62 int main()
    63 {
    64     scanf("%d%d%d%d",&n,&m,&k,&e);
    65     for(int i=1;i<=e;i++)
    66       {
    67         int a1,a2,a3;
    68         scanf("%d%d%d",&a1,&a2,&a3);
    69         jia(a1,a2,a3);
    70         jia(a2,a1,a3);
    71       }
    72     int d;
    73     scanf("%d",&d);
    74     for(int i=1;i<=d;i++)
    75       {
    76         int x,y,z;
    77         scanf("%d%d%d",&x,&y,&z);
    78         for(int j=y;j<=z;j++)
    79           f[j][x]=1;
    80       }
    81     for(int i=1;i<=n;i++)
    82       for(int j=1;j<=n;j++)
    83     {
    84         t[i][j]=sp(i,j);
    85 //      printf("%d
    ",t[i][j]);
    86     }
    87     dp();
    88     printf("%d
    ",ff[n]);
    89     return 0;
    90 }

    先用SPFA处理出每一段时间的最短路,然后dp

  • 相关阅读:
    hash_map和map的区别
    STL中map与hash_map容器的选择收藏
    ServletContextListener和ContextLoaderListener的区别
    解决Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile
    详解Tomcat线程池原理及参数释义
    Tomcat使用线程池配置高并发连接
    详解 Tomcat 的连接数与线程池
    ServletContextListener接口用法
    Spring Quartz定时任务如何获得ServletContext对象?
    如何在spring quartz类中拿到ServletContext
  • 原文地址:https://www.cnblogs.com/xydddd/p/5223736.html
Copyright © 2011-2022 走看看