【洛谷 P2483】 【模板】k短路([SDOI2010]魔法猪学院)(A*)
题目链接
优先队列bfs第一次出队就是最短路,那么显然第k次出队就是k短路
??????????????????????????????
书上写的
但是直接优先队列bfs会T,所以用A*优化就行,估价函数就是到终点的最短路。
#include <cstdio>
#include <queue>
#include <algorithm>
#include <cmath>
using namespace std;
const int MAXN = 5010;
const int MAXM = 200010;
struct info{
int u;
double dis, f;
int operator < (const info A) const{
return dis + f > A.dis + A.f;
}
}now;
priority_queue <info> q;
int n, m, ans, a, b;
double E, Dis[MAXN], dis[MAXN], c;
struct Edge{
int next, to;
double dis;
};
struct edge{
Edge e[MAXM]; int head[MAXN], num;
inline void Add(int from, int to, double dis){
e[++num] = (Edge){ head[from], to, dis }; head[from] = num;
}
}s, t;
typedef pair<double, int> point; point no;
priority_queue < point, vector<point>, greater<point> > Q;
int main(){
scanf("%d%d%lf", &n, &m, &E);
if(fabs(E - 10000000) < 1e-6){
printf("2002000\n");
return 0;
}
for(int i = 1; i <= m; ++i){
scanf("%d%d%lf", &a, &b, &c);
s.Add(a, b, c); t.Add(b, a, c);
}
for(int i = 1; i <= n; ++i) dis[i] = Dis[i] = 1e18;
#define e t.e
#define head t.head
Q.push(point(0, n)); Dis[n] = 0;
while(Q.size()){
no = Q.top(); Q.pop();
int u = no.second;
double d = no.first;
if(d > Dis[u]) continue;
for(int i = head[u]; i; i = e[i].next)
if(Dis[e[i].to] > Dis[u] + e[i].dis){
Dis[e[i].to] = Dis[u] + e[i].dis;
Q.push(point(Dis[e[i].to], e[i].to));
}
}
#undef e
#undef head
#define e s.e
#define head s.head
q.push((info){ 1, 0, Dis[1] }); dis[1] = 0;
while(q.size()){
now = q.top(); q.pop();
int u = now.u; double d = now.dis;
if(u == n)
if(E >= d)
E -= d, ++ans;
else break;
for(int i = head[u]; i; i = e[i].next)
q.push((info){ e[i].to, d + e[i].dis, Dis[e[i].to] });
}
printf("%d\n", ans);
return 0;
}
【洛谷 P2483】 【模板】k短路([SDOI2010]魔法猪学院)(A*)的更多相关文章
- 洛谷 [P2483] [模板] k短路
人生中的第一道黑题... 其实就是k短路模板 #include <iostream> #include <cstdio> #include <cstring> #i ...
- 【模板篇】k短路 SDOI2010 魔法猪学院
题目传送门 吐槽时间 题目分析 代码 题目の传送门 都成了一道模板题了OvO ============================================================= ...
- 洛谷 K短路(魔法猪学院)
A*+迪杰特斯拉... 第十一个点卡爆 不管了 #include<iostream> #include<algorithm> #include<cstring> # ...
- K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院
A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...
- Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1357 Solved: 446[Submit][Statu ...
- [BZOJ1975][SDOI2010]魔法猪学院(k短路,A*)
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2748 Solved: 883[Submit][Statu ...
- bzoj1975: [Sdoi2010]魔法猪学院【k短路&A*算法】
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 2446 Solved: 770[Submit][Statu ...
- bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]
1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...
- [SDOI2010]魔法猪学院(A*,最短路)
[SDOI2010]魔法猪学院(luogu) Description 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig ...
- P2483 [SDOI2010]魔法猪学院
P2483 [SDOI2010]魔法猪学院 摘要 --> 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世 ...
随机推荐
- 忘记zip密码咋办?python在手密码我有
整理资料时发现几个 zip 文件的密码忘记了,于是尝试用python暴力破解 首先是读取和解压zip文件,使用 zipfile 库 import zipfile z = zipfile.ZipFile ...
- 使用良好的自定义X264编码,取得极佳质量!《转》
原帖地址:http://www.xspliter.com/forum.php?mod=viewthread&tid=447 一般直播时使用A设定即可.你尝试设置并找出你最满意的设定 A为最需最 ...
- Java-内存模型 synchronized 的内存语义
synchronized 具有使每个线程依次排队操作共享变量的功能.这种同步机制效率很低,但 synchronized 是其它并发容器实现的基础. 一.锁对象及 synchronized 的使用 sy ...
- 进行编译时提示'error: unrecognized command line option "-std=gnu11"'如何处理?
答: 说明编译器不支持此选项,那么在Makefile中替换此选项-std=gnu11 替换成-std=gnu99或-std=c99或-std=c11等,主要看编译器都支持哪些编译选项,笔者的支持-st ...
- vmware装centos7 无法上网
现象 使用ip address看不到ip地址 ping www.baidu.com无法ping通 解决方式: 1.设置网卡 vi /etc/sysconfig/network-scripts/ifcf ...
- centos7.6下的python3.6.9虚拟环境安装elastalert
centos7.6安装python3.6.9+elastalert .编译安装python3..9环境 # 安装依赖 yum -y install zlib-devel bzip2-devel ope ...
- wamp64显示黄色图标不能忍
哎,昨天硬盘合区了下,重新安装了wamp64,删库的时候忘记备份数据库,灾难啊,只能自己重新建库建表了,深刻的教训啊. 然后还启动后是黄色图标,不能忍啊,发现wamp64需要启动三个服务,mysql, ...
- copyProperties 忽略null值字段
在做项目时遇到需要copy两个对象之间的属性值,但是有源对象有null值,在使用BeanUtils来copy时null值会覆盖目标对象的同名字段属性值,然后采用以下方法找到null值字段,然后忽略: ...
- [LeetCode] 264. Ugly Number II 丑陋数 II
Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...
- RSA 系统找不到指定的文件
未测试 System.Security.Cryptography.RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 改为 C ...