POJ-3635 Full Tank? 变形最短路

  题目链接:http://poj.org/problem?id=3635

  容易想到用二维数组记录状态求最短路,然后用优先队列优化,类似于Dijkstra和BFS。我开始设计的过程是直接直接从当前点向相邻点转移并找出所有可能状态,结果TLE。貌似是无关状态太多了,没想到卡得这么紧。别人的做法是只考虑两个状态:1、加一单位油 2、向相邻点移动;这样就砍掉了一些对最优解不必要的状态。

 1 //STATUS:C++_AC_297MS_2404KB
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 #include<math.h>
 6 #include<iostream>
 7 #include<string>
 8 #include<algorithm>
 9 #include<vector>
10 #include<queue>
11 #include<stack>
12 using namespace std;
13 #define LL __int64
14 #define pdi pair<double,int>
15 #define Max(a,b) ((a)>(b)?(a):(b))
16 #define Min(a,b) ((a)<(b)?(a):(b))
17 #define mem(a,b) memset(a,b,sizeof(a))
18 #define lson l,mid,rt<<1
19 #define rson mid+1,r,rt<<1|1
20 const int N=1010,M=1000000,INF=0x3f3f3f3f,MOD=1999997;
21 const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
22 const double DNF=100000000;
23 
24 struct Node{
25     int d,u,c;
26     bool operator < (const Node &ths) const {
27         return d>ths.d;
28     }
29 };
30 struct Edge{
31     int u,v,w;
32 }e[N*20];
33 int vis[N][110],d[N][110],w[N],first[N],next[N*20];
34 int n,m,t,mt,cup;
35 
36 void adde(int a,int b,int c)
37 {
38     e[mt].u=a,e[mt].v=b,e[mt].w=c;
39     next[mt]=first[a],first[a]=mt++;
40     e[mt].u=b,e[mt].v=a,e[mt].w=c;
41     next[mt]=first[b],first[b]=mt++;
42 }
43 
44 int Dijkstra(int s,int end)
45 {
46     int i,j,k,dis,u,v,c;
47     Node t;
48     priority_queue<Node> q;
49     mem(vis,0);
50     mem(d,INF);
51     d[s][0]=0;
52     q.push(Node{0,s,0});
53     while(!q.empty()){
54         t=q.top();q.pop();
55         u=t.u;c=t.c;
56         if(u==end)return t.d;
57         if(vis[u][c])continue;
58         vis[u][c]=1;
59         if(c<cup && t.d+w[u]<d[u][c+1]){
60             d[u][c+1]=t.d+w[u];
61             q.push(Node{d[u][c+1],u,c+1});
62         }
63         for(i=first[u];i!=-1;i=next[i]){
64             v=e[i].v;
65             if(c>=e[i].w && d[u][c]<d[v][c-e[i].w]){
66                 d[v][c-e[i].w]=d[u][c];
67                 q.push(Node{d[u][c],v,c-e[i].w});
68             }
69         }
70     }
71     return -1;
72 }
73 
74 int main()
75 {
76  //   freopen("in.txt","r",stdin);
77     int i,j,a,b,c,ans;
78     while(~scanf("%d%d",&n,&m))
79     {
80         mt=0;
81         mem(first,-1);
82         for(i=0;i<n;i++)
83             scanf("%d",&w[i]);
84         for(i=0;i<m;i++){
85             scanf("%d%d%d",&a,&b,&c);
86             adde(a,b,c);
87         }
88         scanf("%d",&t);
89         while(t--){
90             scanf("%d%d%d",&cup,&a,&b);
91             ans=Dijkstra(a,b);
92             if(ans!=-1)printf("%d\n",ans);
93             else printf("impossible\n");
94         }
95     }
96     return 0;
97 }

 

转载于:https://www.cnblogs.com/zhsl/archive/2013/01/31/2883859.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295951.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android之Bitmap学习总结

BitMap类&#xff1a; public void recycle()——回收位图占用的内存空间&#xff0c;把位图标记为Dead public final boolean isRecycled() ——判断位图内存是否已释放 public final int getWidth()——获取位图的宽度 public final int getHeight()——获取位图的高度 pub…

千万别让男朋友穿你的短裙......

1 工作太辛苦&#xff0c;我要走了...▼2 应该很有效&#xff1f;▼3 疑车有据&#xff01;&#xff01;▼4 这是一部色魔功法...▼5 穿上女友的衣服居然毫无违和感▼视频来源见水印&#xff0c;侵删6 整挺好&#xff01;▼7 这只有熊猫可以驾驭得了......▼你点的每个赞&…

迎接.NET 6,《dotnet+Linux中文手册》完整PDF开放下载!

昨晚已经正式发布了.NET6,具体参见&#xff1a;https://devblogs.microsoft.com/dotnet/announcing-net-6/。这是.NET团队和社区努力一年的成果&#xff0c;C# 10 和 F# 6 有很大的语言改进&#xff0c;使代码更简单、更好。性能有了巨大的提升&#xff0c;我们看到微软的云服务…

excel函数中if android,在Android中阅读Excel

目前我正在开发android开发.根据要求,应用程序应该能够读取Excel文件以进行数据输入.正如其他人从这个主题开始,我已经完成了Java Excel Api和Apache POI,但两者都需要进行一些修改以满足我的要求&#xff1a;JExcel API&#xff1a;– 不能支持XLSXApache POI&#xff1a;– 支…

javaIo流实际应用

/*查看目录下所有的文件*/ package cn.file; import java.io.File;public class Text2 {public static void main(String[] args) {File anew File("F:\\图片");File a1new File("F:\\你的");chek(a1);}public static void chek(File f3) {//查看目录…

Android之网络编程之网络通信几种方式实例分享

这篇文章主要介绍了android 网络编程之网络通信几种方式&#xff0c;有需要的朋友可以参考一下 现在总结了六种方式&#xff1a; &#xff08;1&#xff09;针对TCP/IP的Socket、ServerSocket &#xff08;2&#xff09;针对UDP的DatagramSocket、DatagramPackage。这里需要注意…

常用MIME类型(Flv,Mp4的mime类型设置)

也许你会在纳闷&#xff0c;为什么我上传了flv或MP4文件到服务器&#xff0c;可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢&#xff1f;这就表明mp4格式文件是服务器无法识别的&#xff0c;其实&#xff0c;这是没有在iis中将相应的MIME类型进行设置的…

史上四大“杀人”建筑,烧掉几百亿,却犯低级错误,网友:有钱人的智商,我不懂

全世界只有3.14 % 的人关注了爆炸吧知识本文转自普象工业设计小站这个世界上有多少荒谬的建筑&#xff1f;国内土味审美的大楼只是冰山一角在更多的国家里耗费巨资&#xff0c;却无比失败的工程比土味大楼更多更荒唐你也许听说过美国这座会跳舞的大桥耗资千万&#xff0c;由优秀…

迎.NET6,今日先送200P全新视频教程 / 源码

昨晚已经正式发布了.NET6,具体参见&#xff1a;https://devblogs.microsoft.com/dotnet/announcing-net-6/。这是.NET团队和社区努力一年的成果&#xff0c;C# 10 和 F# 6 有很大的语言改进&#xff0c;使代码更简单、更好。性能有了巨大的提升&#xff0c;我们看到微软的云服务…

文章观后感

文章地址http://knowledge100.blog.51cto.com/3448830/793559 这篇文章讲的是三层交换机-vlan间路由配置&#xff0c;主要讲述的是通过实例的方式说明如何在一个典型的快速以太局域网中实现VLAN间路由的问题。通过设置VTP域、配置交换机间中继链路、在核心交换机上创建VLAN、将…

JSP之三大指令

page指令&#xff1a; * import&#xff1a;等同与import语句 <% page import"java.util.*" %> <% page import"java.util.*, java.net.*" %>在一个JSP页面中可以给出多个page指令&#xff0c;而且import是可以重复出现的 <% page import&q…

android 横向stepview,Android 流程指示器 StepView

软件介绍StepView 是Android平台下自定义的流程指示器。效果图&#xff1a;使用:android:id"id/step_view0"android:layout_width"match_parent"android:layout_height"wrap_content"android:layout_centerInParent"true"android:text…

Android之项目中如何用好构建神器Gradle?

Gradle虽为构建神器&#xff0c;但感觉学习曲线比较陡峭。Gradle User Guide内容很多&#xff0c;但有点太多了&#xff0c;多的你看不完&#xff0c;Gradle Plugin User Guide一篇文章主要讲了Android相关的配置&#xff0c;看完可能感觉马马虎虎会用&#xff0c;但到了修改一…

JavaScript执行环境 + 变量对象 + 作用域链 + 闭包

闭包真的是一个谈烂掉的内容。说到闭包&#xff0c;自然就涉及到执行环境、变量对象以及作用域链。汤姆大叔翻译的《深入理解JavaScript系列》很好&#xff0c;帮我解决了一直以来似懂非懂的很多问题&#xff0c;包括闭包。下面就给自己总结一下。包括参考大叔的译文以及《Java…

58年前,这3个人在“撕逼”中拿下诺贝尔奖!一起研究DNA的女科学家却痛苦去世.........

全世界只有3.14 % 的人关注了爆炸吧知识人类的本质是双螺旋结构1953年4月25日&#xff0c;《自然》杂志发表了一篇不到千字的论文&#xff1a;消息一出&#xff0c;便掀起了科学界的轩然大波。因为这篇短小精悍的论文史无前例地揭示了正确的DNA立体结构。图片仅供参考&#xff…

Azure App Service 上的根证书

点击上方蓝字关注“汪宇杰博客”原文&#xff1a;Amol Mehrotra翻译&#xff1a;Edi Wang导语App Service 有一个受信任的根证书列表&#xff0c;您不能在 App Service 的多租户版本中修改这些证书&#xff0c;但您可以在应用服务环境 (ASE) 的受信任根存储中加载自己的 CA 证书…

String.Format和StringBuilder的效率

到底String.Format还是StringBuilder效率更高一点&#xff1f;至于这个问题&#xff0c;直接叫他用强大的武器Reflector了解一下String.Format的方法.结果他很快就找出相关的代码: public static string Format(IFormatProvider provider, string format, params object[] arg…

jettytomcat对待表单过长问题

为什么80%的码农都做不了架构师&#xff1f;>>> 结论两句话&#xff1a; tomcat知道自己处理不了了&#xff0c;什么也不干过去了 jett知道自己处理不了了&#xff0c;抛个IllegalStateException出来通知一下 jetty默认允许的content-length2001000 org.eclips…

Android之Adapter用法总结

Android之Adapter用法总结 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系: Android中所有的Adapter一览: …

那些年,画家发明的黑科技

全世界只有3.14 % 的人关注了爆炸吧知识在现代摄影技术发明之前&#xff0c;获取图像的最佳方式只有绘画。在绘画的时代&#xff0c;如何把事物画的逼真&#xff0c;几乎成为了困扰画家一生的问题。为了准确展现客观世界&#xff0c;让画面看起来更加逼真&#xff0c;古代的艺术…