【SDOI 2010】 魔法猪学院
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=1975
【算法】
A*求k短路
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 5010
#define MAXM 200010
const double INF = 1e15; int i,tot,n,m,u,v;
int head[MAXN],rhead[MAXN];
double dist[MAXN];
double w,val; struct Edge
{
int to;
double w;
int nxt;
} e[MAXM<<];
struct info
{
int s;
double d;
friend bool operator < (info a,info b)
{
return a.d + dist[a.s] > b.d + dist[b.s];
}
} ; inline void add(int u,int v,double w)
{
tot++;
e[tot] = (Edge){v,w,head[u]};
head[u] = tot;
tot++;
e[tot] = (Edge){u,w,rhead[v]};
rhead[v] = tot;
}
inline void dijkstra(int s)
{
int i,u,v;
double w;
priority_queue< pair<double,int> > q;
static bool vis[MAXN];
memset(vis,false,sizeof(vis));
while (!q.empty()) q.pop();
for (i = ; i <= n; i++) dist[i] = INF;
dist[s] = ;
q.push(make_pair(,s));
while (!q.empty())
{
u = q.top().second;
q.pop();
if (vis[u]) continue;
vis[u] = true;
for (i = rhead[u]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
if (dist[u] + w < dist[v])
{
dist[v] = dist[u] + w;
q.push(make_pair(-dist[v],v));
}
}
}
}
inline int Astar(int s,int t)
{
int i,cnt = ,v;
double w,sum = ;
priority_queue< info > q;
info cur;
while (!q.empty()) q.pop();
q.push((info){s,});
while (!q.empty())
{
cur = q.top();
q.pop();
if (cur.s == t)
{
if (sum + cur.d <= val)
{
sum += cur.d;
cnt++;
} else return cnt;
}
for (i = head[cur.s]; i; i = e[i].nxt)
{
v = e[i].to;
w = e[i].w;
q.push((info){v,cur.d+w});
}
}
return ;
} int main()
{ scanf("%d%d%lf",&n,&m,&val);
for (i = ; i <= m; i++)
{
scanf("%d%d%lf",&u,&v,&w);
add(u,v,w);
}
dijkstra(n);
printf("%d\n",Astar(,n)); return ; }
【SDOI 2010】 魔法猪学院的更多相关文章
- [SDOI 2010]魔法猪学院
Description 题库链接 给出一张 \(n\) 个点 \(m\) 条边有向图,询问最多有多少条不同的路径从 \(1\) 到 \(n\) 并且路径长度和 \(\leq E\) . \(2\leq ...
- 解题:SDOI 2010 魔法猪学院
题面 题外话:神**可持久化左偏树,你谷的人都太神了,学不来 我把这个当做A*模板题的说,先讲一讲个人对A*的理解:如果说普通的BFS是Bellman_Ford,那A*就是一个Dijkstra.以寻找 ...
- BZOJ-1975 魔法猪学院 K短路 (A*+SPFA)
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1323 Solved: 433 [Submit][Statu ...
- Bzoj 1975: [Sdoi2010]魔法猪学院 dijkstra,堆,A*,K短路
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1357 Solved: 446[Submit][Statu ...
- bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]
1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...
- BZOJ_1975_[Sdoi2010]魔法猪学院_A*
BZOJ_1975_[Sdoi2010]魔法猪学院_A* Description iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPi ...
- K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院
A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...
- bzoj 1975 [Sdoi2010]魔法猪学院
1975: [Sdoi2010]魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1758 Solved: 557[Submit][Statu ...
- P2483 [SDOI2010]魔法猪学院
P2483 [SDOI2010]魔法猪学院 摘要 --> 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世 ...
- 【BZOJ1975】【SDOI2010】魔法猪学院 [A*搜索]
魔法猪学院 Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description iPig在假期来到了传说中的魔法猪 ...
随机推荐
- ajax 实现输入提示效果
网站主页 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- 移动web——基本知识点总结
视口viewport 1.在桌面端的浏览器的宽度有肯能是很大的,如果设置了一个很大的值,那么在移动端中的浏览器显示的时候会有横向移动的拖拽条,为了避免出现这样的横向拖拽条,我们每次都要页面的宽度就是移 ...
- 【YOLO】只检测人
一.修改源代码 cfg/coco.data classes= #修改成1 train = /home/pjreddie/data/coco/trainvalno5k.txt valid = coco_ ...
- HDU_1085_Holding Bin-Laden Captive!_母函数
Holding Bin-Laden Captive! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Ja ...
- Cesium学习笔记(四)Camera
http://blog.csdn.net/HobHunter/article/details/74909641 Cesium 相机控制场景中的视野.操作相机的方法有很多,如旋转,缩放,平移和飞到目的地 ...
- Python random模块&string模块 day3
一.random模块的使用: Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. 1.常用函数: (1)random.random() 用于生成一个0到1 ...
- Jenkins+Ant+Jmeter自动化集成测试实例
通过学习Jmeter自动化测试,接触到了Ant命令和其构建文件build.xml文件的编写,与此同时,通过将测试项目集成在jenkins上,进一步学习了jenkins的一些环境配置知识.以下是自己的初 ...
- 关于 BaseHTTPServer 的介绍
简介: (1) 基础的web服务器是一个模板,其其角色是客户端和服务器端完成必要的HTTP交互,在basehttpserver模块中可以找到一个名字叫HTTPServer 的服务器基本类 (2)处理程 ...
- BZOJ 2097 [Usaco2010 Dec]Exercise 奶牛健美操
[题意] 给出一棵树.现在可以在树中删去m条边,使它变成m+1棵树.要求最小化树的直径的最大值. [题解] 二分答案.$Check$的时候用$DP$,记录当前节点每个儿子的直径$v[i]$,如果$v[ ...
- 【codeforces 514D】R2D2 and Droid Army
[题目链接]:http://codeforces.com/contest/514/problem/D [题意] 给你每个机器人的m种属性p1..pm 然后r2d2每次可以选择m种属性中的一种,进行一次 ...