A*板子题。我的code只能在luogu上过,bzoj上RE/MLE不清楚为啥。

蒟蒻到AFO前2个月不到的时间才学A*,A*其实就是bfs过程中进行剪支删除没必要的搜索。然后其实上这样剪支即可:如果从当前答案+从当前走到1的最短路比已有的最优解更劣,无需扩展次节点。然后k短路中,估价函数=当前节点距源点的距离d[x]+当前节点距终点的距离g[x]。然后不使用标记数组,所有节点可重复入队,第k次入队为第k短路。

为了通过luogu的hack数据,我加了特判。

#include<bits/stdc++.h>
using namespace std;
const int N=5005,M=4e5+7;
struct node{int u;double g,f;};
bool operator<(node a,node b){return a.f>b.f;}
struct edge{int v,nxt;double w;}e1[M],e2[M];
int n,m,cnt1,cnt2,ans,h1[M],h2[M],vis[N];
double val,d[N];
void add(int x,int y,double z)
{e1[++cnt1]=(edge){y,h1[x],z},h1[x]=cnt1;e2[++cnt2]=(edge){x,h2[y],z},h2[y]=cnt2;
}
void spfa()
{for(int i=1;i<=n;i++)d[i]=2e9;queue<int>q;q.push(1),d[1]=0,vis[1]=1;while(!q.empty()){int u=q.front();q.pop(),vis[u]=0;for(int i=h1[u];i;i=e1[i].nxt)if(d[e1[i].v]>d[u]+e1[i].w){d[e1[i].v]=d[u]+e1[i].w;if(!vis[e1[i].v])vis[e1[i].v]=1,q.push(e1[i].v);}}
}
void Astar()
{if(d[n]==2e9)return;priority_queue<node>q;q.push((node){n,0,d[n]});while(!q.empty()){node u=q.top();q.pop();if(u.u==1){val-=u.g;if(val>=0)ans++;else return;}for(int i=h2[u.u];i;i=e2[i].nxt)q.push((node){e2[i].v,u.g+e2[i].w,u.g+e2[i].w+d[e2[i].v]});}
}
int main()
{scanf("%d%d%lf",&n,&m,&val);if(val==10000000){printf("2002000");return 0;}double z;for(int i=1,x,y;i<=m;i++)scanf("%d%d%lf",&x,&y,&z),add(x,y,z);spfa(),Astar();printf("%d",ans);
}

View Code

转载于:https://www.cnblogs.com/hfctf0210/p/10903868.html

[SDOI2010]魔法猪学院(k短路)相关推荐

  1. bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]

    1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...

  2. BZOJ1975 [Sdoi2010]魔法猪学院 k短路

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1975 题意概括 给出一个无向图,让你走不同的路径,从1到n,路径长度之和不超过E,求最大路径条数. ...

  3. 【学习笔记】左偏树的可持久化(【模板】k短路 / [SDOI2010]魔法猪学院)

    文章目录 description solution code [模板]k短路 / [SDOI2010]魔法猪学院 description iPig 在假期来到了传说中的魔法猪学院,开始为期两个月的魔法 ...

  4. 1975: [Sdoi2010]魔法猪学院

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec   Memory Limit: 64 MB Submit: 1855   Solved: 567 [ Submit][ ...

  5. [SDOI2010] 魔法猪学院

    魔法猪学院 题目背景 感谢@kczno1 @X_o_r 提供hack数据 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iP ...

  6. k短路-洛谷P2483 [SDOI2010]魔法猪学院

    https://daniu.luogu.org/problem/show?pid=2483 A*求k短路和dijkstra算法很相似. 我们先把边反向,预处理出h(x),表示从x到T的最短路径长度. ...

  7. BZOJ1975[Sdoi2010]魔法猪学院——可持久化可并堆+最短路树

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  8. 洛谷P2483 Bzoj1975 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  9. 启发式搜索 luogu2483——[SDOI2010]魔法猪学院

    luogu2483 这题不知道为什么,我bzoj上死都过不去 然而luogu不断的调数组大小后终于卡过去了(黑人问号 内存206MB..时间4s+ 本题重点就在于求出k短路 然后很简单的贪心减一下就好 ...

最新文章

  1. #在蓝懿学习iOS的日子#第六个练习日
  2. SQL Server查询重复数据
  3. python不需要缩进的代码顶行编写_python程序快速缩进多行代码方法总结
  4. 【HDU - 5914 】Triangle (打表 或 set维护)
  5. numpy复习总结,为深度学习打下基础
  6. c语言城市交通灯优化,城市智能交通灯系毕业设计论文.doc
  7. 戴尔计算机亮度如何调整,官方数据:如何调整Dell显示器的亮度
  8. 计算机公式计算误差,如何在Excel2016中计算方差和均方误差?
  9. Intelligent driver model(IDM)
  10. 使用深度图重建世界坐标
  11. 四川大学计算机学院管理手册,机房管理_规章制度_计算机基础教学实验中心 - Powered by 四川大学计算机基础教学实验中心...
  12. VGG16的猫狗识别
  13. python启动netron
  14. HBuilderX 详细安装教程
  15. 好玩的Java塔防游戏,比较火的塔防手游!塔防游戏排行榜推荐
  16. 英语语法浅述-动词、时态和语态
  17. 日语资料和电子版教材无偿分享
  18. C语言char类型的存储
  19. mysql时间戳与PHP时间戳,php – 当mysql时间戳gt; 20分钟时删除时间戳比较
  20. 计算机30秒自动更换的桌面软件,电脑壁纸自动更换(SyncWall)

热门文章

  1. HBase面试题总结1
  2. c++小游戏——谷歌小恐龙
  3. 计算机抽象思维 pdf,抽象思维在计算机中的应用与体现.pdf
  4. ps6如何将视频转成Gif动画
  5. 计算机全国211院校排名2015,2015年全国211大学名单排名
  6. constructed play combin all by own
  7. App提交 App Store 审核,遇到过哪些坑?
  8. Java之Date类和Calendar类的区别
  9. 3、创建线程方式三:实现Callable接口
  10. 闭包的概念,作用,和优缺点