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

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

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

  欧洲玄学。

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

  所以就是一道k短路。

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

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

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

  CODE

// luogu-judger-enable-o2
#include<cstdio>
#include<queue>
using namespace std;
typedef double DB;
const int N=;
struct data
{
int num;
DB s;
bool operator <(const data &a) const
{
return a.s<s;
}
};
struct Astar
{
int num;
DB s,rs;
bool operator <(const Astar &a) const
{
return a.s+a.rs<s+rs;
}
};
priority_queue <data> small;
priority_queue <Astar> tree;
vector <int> a[N],b[N];
vector <DB> l[N],rl[N];
int n,m,i,x,y,ans;
DB z,tot,dis[N],sum;
bool vis[N];
inline void read(int &x)
{
x=; char ch=getchar();
while (ch<''||ch>'') ch=getchar();
while (ch>=''&&ch<='') x=x*+ch-'',ch=getchar();
}
int main()
{
read(n); read(m); scanf("%lf",&tot);
for (i=;i<=m;++i)
{
read(x); read(y); scanf("%lf",&z);
a[x].push_back(y); l[x].push_back(z);
b[y].push_back(x); rl[y].push_back(z);
}
for (i=;i<=n;++i)
dis[i]=1e9;
dis[n]=;
small.push((data){n,});
while (!small.empty())
{
int now=small.top().num; small.pop();
if (vis[now]) continue;
vis[now]=;
for (i=;i<b[now].size();++i)
{
int k=b[now][i];
if (dis[k]>dis[now]+rl[now][i])
{
dis[k]=dis[now]+rl[now][i];
small.push((data){k,dis[k]});
}
}
}
tree.push((Astar){,,dis[]});
while (!tree.empty())
{
int now=tree.top().num; DB temp=tree.top().s; tree.pop();
if (now==n) { if (sum+temp>tot) { printf("%d",ans); return ; } else ans++,sum+=temp; }
for (i=;i<a[now].size();++i)
tree.push((Astar){a[now][i],temp+l[now][i],dis[a[now][i]]});
}
return ;
}

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. Spring Boot系列学习文章(二) -- 配置多数据源

    前言: 在上一章中,我们已经搭建好项目,现在来讲一下如何配置数据源. 由于在有的项目中,用的数据源可能会涉及多个,且是不同类型的,我们接下来就讲解多数据源的配置. 情景描述: 现有项目需要访问不同的数 ...

  2. 安卓基础之Activity的生命周期

    Activity的生命周期 onCreate 在Activity被创建时调用 onDesdroty 在Activity销毁时调用 onRestart 在Activity重新打开时调用 onStart ...

  3. LeetCode 题解之Rotate List

    1.题目描述 2.题目分析 首先数出链表中的元素个数count,然后对k = k % count 求余数.接着将链表形成一个环,从最后一个元素开始,运动 count - k  步,此时节点的下一个节点 ...

  4. Debian 常用命令

    换源 用中科大的比较快 deb http://mirrors.ustc.edu.cn/debian jessie main contrib non-free deb-src http://mirror ...

  5. Apache2启动错误Could not reliably determine the server's fully qualified domain name

    错误情况: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using ...

  6. 【mongoDB运维篇③】replication set复制集

    介绍 replicattion set 多台服务器维护相同的数据副本,提高服务器的可用性,总结下来有以下好处: 数据备份与恢复 读写分离 MongoDB 复制集的结构以及基本概念 正如上图所示,Mon ...

  7. tomcat上传内容报错

    公司项目报错: o.s.boot.web.support.ErrorPageFilter          :  Forwarding  to  error  page  from  request  ...

  8. 表的垂直拆分和水平拆分-zz

    https://www.kancloud.cn/thinkphp/mysql-design-optimalize/39326 http://www.cnblogs.com/nixi8/tag/mysq ...

  9. 乘风破浪:LeetCode真题_028_Implement strStr()

    乘风破浪:LeetCode真题_028_Implement strStr() 一.前言     这次是字符串匹配问题,找到最开始匹配的位置,并返回. 二.Implement strStr() 2.1 ...

  10. 【Python】【unittest】unittest测试框架中setup,teardown与setupclass,teardownclass的区别

    # -*- coding:utf-8 -*- import unittest def runTest(testcaseclass,testcase=[]): suite = unittest.Test ...