首页 > 其他分享 >uva 590

uva 590

时间:2022-10-31 00:45:04浏览次数:92  
标签:590 int 城市 40 uva inf

一共有n座城市,要在这n座城市旅游k天,从城市1出发,第k天到达城市n。

输入有n*(n-1)行,每n-1行代表i到除了i之外的其他城市航班的天数以及价格。

求最小花费。

 

 

 #include <iostream>
 #include <algorithm>
 using namespace std; 
  const int N=1e3+2;
 // #define int long long
  int n,m;
  int f[N][40],len[40][40],c[40][40][40];
  const int inf=1e9;
 void solve(){
     int i,j,k;
     for(i=1;i<=n;i++)
      for(j=1;j<=n;j++){
          if(i==j) continue;
          cin>>len[i][j];
          for(k=1;k<=len[i][j];k++) cin>>c[i][j][k];
      }
     for(i=0;i<=n;i++) 
      for(k=0;k<=m;k++) f[k][i]=inf;
      f[0][1]=0;
      
     for(k=1;k<=m;k++)
      for(i=1;i<=n;i++)
       for(j=1;j<=n;j++){
           if(i==j) continue;
           int t=(k-1)%len[j][i]+1;
           if(f[k-1][j]==inf||c[j][i][t]==0) continue;
           
           f[k][i]=min(f[k][i],f[k-1][j]+c[j][i][t]);
       }
 }
 signed main(){
     int cas=0;
     while(cin>>n>>m){
         if(n==0||m==0) break; 
         ++cas;
         
         solve();
         printf("Scenario #%d\n",cas);
         if(f[m][n]==inf) cout<<"No flight possible.";
         else 
         printf("The best flight costs %d.",f[m][n]);
         cout<<'\n'<<'\n';
     }
 }
 
 
 

 

标签:590,int,城市,40,uva,inf
From: https://www.cnblogs.com/towboa/p/16842874.html

相关文章

  • uva 473
    有n首歌,每首时长Ti,要把这n首歌装进m个光盘里面,每个光盘最多能存的时长为t. 要求这些歌在光盘里面要按照所给歌的先后顺序存入,不能改变前后顺序. 例如有4首歌,按顺序......
  • uva 442
    矩阵连乘用栈处理表达式((AB)C)#include<iostream>#include<cstdio>#include<string>#include<stack>usingnamespacestd;structM{inta,b;......
  • uva 10453
    将字符串变为回文串最少需要几次操作(在任意位置插入字符),并输出变化后的回文串f[l][r]=f[l+1][r-1]//a[i]==a[j]=min(f[l+1][r],f[l][r-1])#include<iostre......
  • uva 10163
    n个仓库,安排m个人看守,每个仓库只由一个人看守,每个人对应a[i],表示能量(薪水)如果某个人看守k个仓库,每个仓库能量值a[i]/k求仓库能量最小值最大时,所支付薪水最少值  ......
  • uva 1291
    游戏者必须按照这个序列一次用某一只脚踩相应的踏板。在任何时候,两只脚不能在同一个踏板上,但可以同时在中心位置0。每一个时刻,HH必须移动他的一只脚去踩相应的箭头,另一只脚......
  • uva 11795
      题目意思还是有点绕的,想了好一会大体上是一个状压dp(废话 f[j],当当前拥有武器集合为j时,消灭所有怪物的方案数像线性dp一样,但可以去掉一维 f[j]+=f[t],t=j^(1......
  • uva 1456
    比如,手机可能位于 5 个区域中,概率分别为 0.3,0.05,0.1,0.3,0.25,则一种方法是先同时访问 \{c1,c2,c3\},再同时访问 {c_4,c_5},访问区域数量的期望为  3*(0.3+0.05......
  • uva11404
    删去字符串S中的一些字符,使剩下的字符组成最长的回文串(顺序连接) 区间dpf[i][j] f[i][j]=f[i+1][j-1]  i==j =min(f[i+1][j],f[i][j-1]) #include......
  • uva 11552
    给你一个长度 k ,一个字符串 S(都为小写字母),保证 S 的长度为 k的整数倍。将 S 按顺序分为 S/k 组,组内字符可以重新排列问最少有几个块?(如fff,ww) 枚举开头......
  • uva 10534
    给一个序列A,求一个最长子序列,长度为2k+1满足前k+1个数递增,后k个递减  LIS板子题,正反各求一次,枚举中间的交点 #include<iostream>#include<cstring>#include<al......