DongDong坐飞机
题目连接:https://ac.nowcoder.com/acm/contest/904/D
第一次研究了一下这种题型,还是比较好理解的,因为有半价次数的限制,所以要把每一中情况都写出来,dp[现在的位置][次数]推到dp[到达的位置][次数]和dp[到达的位置][次数+1]这两种情况,然后跑一下最短路就可以了
AC代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef struct W_W{
int eend;
int weight;
int next;
}miao;
typedef struct W_w{
int eend;
int ci;
}wang;
ll minn(ll a,ll b){
if(a<b) return a;
return b;
}
miao x[];
int head[];
ll dp[][];
int vis[][];
int cnt=;
void add(int a,int b,int c){
x[cnt].eend=b;
x[cnt].weight=c;
x[cnt].next=head[a];
head[a]=cnt++;
}
ll spfa(int start,int eend,int k){
queue<wang> q1;
q1.push({,});
dp[][]=;
while(q1.size()){
int dang=q1.front().eend;
int ci=q1.front().ci;
//printf("+++%d %d %lld \n",dang,ci,dp[dang][ci]);
q1.pop();
vis[dang][ci]=;
for(int i=head[dang];i!=-;i=x[i].next){
int to=x[i].eend;
if(dp[to][ci]==-){
dp[to][ci]=dp[dang][ci]+x[i].weight;
if(vis[to][ci]==){
q1.push({to,ci});
vis[to][ci]=;
}
}
else{
if(dp[to][ci]>dp[dang][ci]+x[i].weight){
dp[to][ci]=dp[dang][ci]+x[i].weight;
if(vis[to][ci]==){
q1.push({to,ci});
vis[to][ci]=;
}
}
}
if(ci+<=k){
if(dp[to][ci+]==-){
dp[to][ci+]=dp[dang][ci]+x[i].weight/;
if(vis[to][ci+]==){
q1.push({to,ci+});
vis[to][ci+]=;
}
}
else{
if(dp[to][ci+]>dp[dang][ci]+x[i].weight/){
dp[to][ci+]=dp[dang][ci]+x[i].weight/;
if(vis[to][ci+]==){
q1.push({to,ci+});
vis[to][ci+]=;
}
}
}
}
}
}
// for(int i=1;i<=eend;i++){
// for(int j=0;j<=k;j++){
// printf("(%d %d) %lld ",i,j,dp[i][j]);
// }
// printf("\n");
// }
ll ans=-;
for(int i=;i<=k;i++){
// printf("+++%lld %d %d %lld\n",ans,eend,i,dp[eend][i]);
if(dp[eend][i]!=-){
if(ans==-){
ans=dp[eend][i];
}
else{
ans=minn(dp[eend][i],ans);
}
}
}
return ans;
}
int main()
{
int m,n,k;
scanf("%d %d %d",&m,&n,&k);
memset(head,-,sizeof(head));
memset(dp,-,sizeof(dp));
memset(vis,,sizeof(vis));
for(int i=;i<n;i++){
int a,b;
int c;
scanf("%d %d %d",&a,&b,&c);
add(a,b,c);
}
ll ans=spfa(,m,k);
printf("%lld\n",ans);
return ;
}
DongDong坐飞机的更多相关文章
- 牛客练习赛47 D DongDong坐飞机 (分层最短路)
链接:https://ac.nowcoder.com/acm/contest/904/D 来源:牛客网 DongDong坐飞机 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 5242 ...
- 用自己赚的钱第一次坐飞机 那feel倍儿爽
马年春晚上,歌手大张伟的神曲<倍儿爽>如今已传遍大街小巷.其实,不管人家到底有没有炒作,能让我们这些观众感觉到放松.乐呵,那就是一个成功的春晚节目.而今年,我也如同这歌中唱的一样,活得倍儿 ...
- 2019 ICPC 银川网络赛 D. Take Your Seat (疯子坐飞机问题)
Duha decided to have a trip to Singapore by plane. The airplane had nn seats numbered from 11 to nn, ...
- 1957 Problem F 乌鸦坐飞机
#include <iostream> #include <algorithm> #include <cmath> #include <vector> ...
- 带你探索关于飞机Wi-Fi服务的神奇科学
资料来源: Colin Anderson制片公司/ Getty图片社 在35000英尺的高空冲浪?哇哦,这当然是我们现在所期望的飞行方式了.根据2018年全球旅行者研究(2018 Global Tra ...
- 我的屌丝giser成长记-研二篇
之前有提到过的,本来按照计划中,研一结束就该去深圳中科院研究所实习的,之前跟里面师兄说好了的,奈何导师又接到一个新的科研研究项目,跟学院的几个其他老师一起合作的,主要是关于土地流转系统,而且是一个挺大 ...
- form 表单基础知识
<form method=" name="one" action="http://www.battlenet.com.cn/zh/"> & ...
- 为什么我如此热爱这样一个比赛(转自vici)
为什么我如此的热爱这样一个比赛呢?因为它总能带给我一个目标,让我去努力实现它.因为可以看到胜利的希望,于是不断的去追逐.虽然其中的过程可能是比较艰辛的. 对于天才选手,作为天生的冠军,大概凭借天赋 ...
- 备忘录:hadoop技术一点积累
1.hbase的rowkey是按字典排序的,我看有的资料建议rowkey设计不应该是自增的,应该和这个字典排序相关吧 2.hbase的数据存储是按照region来的,region的设计前段时间在坐飞机 ...
随机推荐
- java中静态代码块的用法 static用法详解和static静态导入
(一)java 静态代码块 静态方法区别一般情况下,如果有些代码必须在项目启动的时候就执行的时候,需要使用静态代码块,这种代码是主动执行的;需要在项目启动的时候就初始化,在不创建对象的情况下,其他程序 ...
- UVa11093
//当汽车从第i个加油站到第j个加油站无法继续走下去的时候,这时候[i,j]区间的所有加油站都无法作为起点,因为当我们到第k个加油站的时候,起码是带着>=0的油去的,现在不带油直接从第k个开始肯 ...
- GUI的最终选择 Tkinter(五):Text用法
Text组件 绘制单行文本使用Label组件,多行选使用Listbox,输入框使用Entry,按钮使用Button组件,还有Radiobutton和Checkbutton组件用于提供单选或多选的情况, ...
- Ubuntu批量修改文件后缀
rename 's/\.JPG/.jpg/' *.JPG 把JPG后缀改为jpg 参考url====http://blog.csdn.net/whuslei/article/details/67249 ...
- HDU 5792 L - World is Exploding 。容斥原理 + 树状数组 + 离散化
题目,要求找出有多少对这样的东西,四个数,并且满足num[a]<num[b] &&num[c]>num[d] 要做这题,首先要懂得用树状数组,我设,下面的小于和大于都是严格 ...
- (转)Web服务器磁盘满故障深入解析
Web服务器磁盘满故障深入解析 原文:http://blog.51cto.com/oldboy/612351 ############################################# ...
- Hadoop完全分布式环境下,DataNode进程正常启动,但是网页上不显示DataNode节点
Hadoop完全分布式环境下,上传文件到hdfs上时报错: // :: WARN hdfs.DFSClient: DataStreamer Exception org.apache.hadoop.ip ...
- Storm概念学习系列之storm的特性
不多说,直接上干货! storm的特性 Storm 是一个开源的分布式实时计算系统,可以简单.可靠地处理大量的数据流. Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快 ...
- pat1098. Insertion or Heap Sort (25)
1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...
- PHP中文手册2
11.异常处理 用户可以用自定义的异常处理类来扩展 PHP 内置的异常处理类.以下的代码说明了在内置的异常处理类中,哪些属性和方法在子类中是可访问和可继承的.译者注:以下这段代码只为说明内置异常处理类 ...