说实话,看到这道题的洛谷评级我傻了(传说中的最高难度)

  然后看完题目才确定这真的是一道k短路的裸题。

  也就敲了个A*吧,15分钟竟然没有调试一遍过。

  欧洲玄学。

  看题目,主要是找几条从1走到n的路加起来小于等于给定的E即可。

  所以就是一道k短路。

  A*和DJ很像,就是把堆的比较操作从当前路径长度+该点到n点的长度。

  后面的那个就是估价函数了,打SPFA或DJ都可以。

  然后STL堆搞一波就可以了。

  CODE

  1. // luogu-judger-enable-o2
  2. #include<cstdio>
  3. #include<queue>
  4. using namespace std;
  5. typedef double DB;
  6. const int N=;
  7. struct data
  8. {
  9. int num;
  10. DB s;
  11. bool operator <(const data &a) const
  12. {
  13. return a.s<s;
  14. }
  15. };
  16. struct Astar
  17. {
  18. int num;
  19. DB s,rs;
  20. bool operator <(const Astar &a) const
  21. {
  22. return a.s+a.rs<s+rs;
  23. }
  24. };
  25. priority_queue <data> small;
  26. priority_queue <Astar> tree;
  27. vector <int> a[N],b[N];
  28. vector <DB> l[N],rl[N];
  29. int n,m,i,x,y,ans;
  30. DB z,tot,dis[N],sum;
  31. bool vis[N];
  32. inline void read(int &x)
  33. {
  34. x=; char ch=getchar();
  35. while (ch<''||ch>'') ch=getchar();
  36. while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
  37. }
  38. int main()
  39. {
  40. read(n); read(m); scanf("%lf",&tot);
  41. for (i=;i<=m;++i)
  42. {
  43. read(x); read(y); scanf("%lf",&z);
  44. a[x].push_back(y); l[x].push_back(z);
  45. b[y].push_back(x); rl[y].push_back(z);
  46. }
  47. for (i=;i<=n;++i)
  48. dis[i]=1e9;
  49. dis[n]=;
  50. small.push((data){n,});
  51. while (!small.empty())
  52. {
  53. int now=small.top().num; small.pop();
  54. if (vis[now]) continue;
  55. vis[now]=;
  56. for (i=;i<b[now].size();++i)
  57. {
  58. int k=b[now][i];
  59. if (dis[k]>dis[now]+rl[now][i])
  60. {
  61. dis[k]=dis[now]+rl[now][i];
  62. small.push((data){k,dis[k]});
  63. }
  64. }
  65. }
  66. tree.push((Astar){,,dis[]});
  67. while (!tree.empty())
  68. {
  69. int now=tree.top().num; DB temp=tree.top().s; tree.pop();
  70. if (now==n) { if (sum+temp>tot) { printf("%d",ans); return ; } else ans++,sum+=temp; }
  71. for (i=;i<a[now].size();++i)
  72. tree.push((Astar){a[now][i],temp+l[now][i],dis[a[now][i]]});
  73. }
  74. return ;
  75. }

Luogu P2483 【模板】k短路([SDOI2010]魔法猪学院)的更多相关文章

  1. 【模板篇】k短路 SDOI2010 魔法猪学院

    题目传送门 吐槽时间 题目分析 代码 题目の传送门 都成了一道模板题了OvO ============================================================= ...

  2. 洛谷 K短路(魔法猪学院)

    A*+迪杰特斯拉... 第十一个点卡爆 不管了 #include<iostream> #include<algorithm> #include<cstring> # ...

  3. Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1357  Solved: 446[Submit][Statu ...

  4. K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院

    A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...

  5. [BZOJ1975][SDOI2010]魔法猪学院(k短路,A*)

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2748  Solved: 883[Submit][Statu ...

  6. bzoj1975: [Sdoi2010]魔法猪学院【k短路&A*算法】

    1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2446  Solved: 770[Submit][Statu ...

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

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

  8. [SDOI2010]魔法猪学院(A*,最短路)

    [SDOI2010]魔法猪学院(luogu) Description 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig ...

  9. P2483 [SDOI2010]魔法猪学院

    P2483 [SDOI2010]魔法猪学院 摘要 --> 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世 ...

  10. BZOJ_1975_[Sdoi2010]魔法猪学院_A*

    BZOJ_1975_[Sdoi2010]魔法猪学院_A* Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPi ...

随机推荐

  1. cuda中当数组数大于线程数的处理方法

    参考stackoverflow一篇帖子的处理方法:https://stackoverflow.com/questions/26913683/different-way-to-index-threads ...

  2. Oracle EBS OPM 取消生产批

    --取消生产批 --created by jenrry SET serveroutput on; DECLARE p_batch_header_rec gme_batch_header%ROWTYPE ...

  3. 简单实现MySQL数据库的日志审计

    时间 2018-12-23 08:01:11  FreeBuf 原文  https://www.freebuf.com/articles/es/192062.html 主题 MySQL 0×0 背景 ...

  4. jQuery validate插件,自动验证无效的原因及解决方法归纳

    最近在使用validate插件进行验证的时候,出现有的控件在个别事件(比如keydown.foucs.onchange等)下不能自动验证,而有的控件却又正常,当时觉得很诡异,后来仔细测试查看,归纳原因 ...

  5. Python新建/删除文件夹

    新建以当前日期为名的文件夹 import datetime,os,shutil today = datetime.datetime.now().date().strftime('%Y%m%d') pa ...

  6. UNIX高级环境编程(16)文件系统 < 雨后 >

    来点绿色放松一下眼睛吧 :) 文件系统是对文件和目录的组织集合. 一 设备文件 设备文件和系统的某个设备相对应. 设备驱动程序 处理设备的所有IO请求. 提供了一致的API接口,对应于系统调用的ope ...

  7. css基础内容

    css基础内容 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离 ...

  8. OpenResty 安装配置

    0. 说明 1. Windows 下安装 下载软件包 openresty-1.13.6.1-win32.zip ,解压即可食用. [开启] 直接运行 nginx.exe 在 Windows 的命令窗口 ...

  9. Python实例---爬去酷狗音乐

    项目一:获取酷狗TOP 100 http://www.kugou.com/yy/rank/home/1-8888.html 排名 文件&&歌手 时长 效果: 附源码: import t ...

  10. [LOJ 6031]「雅礼集训 2017 Day1」字符串

    [LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询 ...