洛谷 K短路(魔法猪学院)
A*+迪杰特斯拉。。。
第十一个点卡爆
不管了
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iomanip>
#include<queue>
#define maxn 5010
#define inf 0x3f3f3f
using namespace std;
int n,m,answer,cur[maxn];
double te,d[maxn];
struct edge{///邻接表
int to;
double val;
bool operator<(const edge&other)const{///改变优先级
return val>other.val;
}
};
vector<edge>g[maxn],gi[maxn];///g正向边gi反向边
void add_edge(int u,int v,double w)
{
g[u].push_back((edge){v,w});///正向存边
gi[v].push_back((edge){u,w});///反向存边
}
void dijkstra(int s){///非常正常的迪杰特斯拉
for(int i=1;i<=n+1;i++){
d[i]=inf;
}
d[s]=0;
priority_queue<edge>q;///优先队列
q.push((edge){s,0});///压栈
while(!q.empty()){
edge e=q.top();///取顶
q.pop();
int num=gi[e.to].size();
for(int i=0;i<num;i++){
if(d[gi[e.to][i].to]>d[e.to]+gi[e.to][i].val){
d[gi[e.to][i].to]=d[e.to]+gi[e.to][i].val;///松弛操作
q.push((edge){gi[e.to][i].to,d[gi[e.to][i].to]});///路径入栈
}
}
}
}
void astar(int s){
double maxd=te/d[s];
priority_queue<edge>q;
q.push((edge){s,d[s]});
while(!q.empty()){///弹栈
edge e=q.top();///取顶
q.pop();///删顶
if(e.val>te){///是否退出
return;
}
if(++cur[e.to]>maxd){///到该点次数++
continue;
}
if(e.to==n){///到终点累加路径长度
te-=e.val;
answer++;
continue;
}
if(cur[e.to]>maxd){
continue;
}
int num=g[e.to].size();
for(int i=0;i<num;i++){
q.push((edge){g[e.to][i].to,e.val-d[e.to]+g[e.to][i].val+d[g[e.to][i].to]});///保留路径入栈
}
}
}
int main(){
///freopen("read.txt","r",stdin);
scanf("%d%d%lf",&n,&m,&te);
while(m--){
int s,t;
double e;
scanf("%d%d%lf",&s,&t,&e);
add_edge(s,t,e);
}
dijkstra(n);
astar(1);
printf("%d\n",answer);
return 0;
}
洛谷 K短路(魔法猪学院)的更多相关文章
- 洛谷 P2483 [SDOI2010]魔法猪学院
题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...
- 洛谷——P2483 [SDOI2010]魔法猪学院
https://www.luogu.org/problem/show?pid=2483 题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的 ...
- k短路模板(洛谷P2483 [SDOI2010]魔法猪学院)(k短路,最短路,左偏树,priority_queue)
你谷数据够强了,以前的A*应该差不多死掉了. 所以,小伙伴们快来一起把YL顶上去把!戳这里! 俞鼎力的课件 需要掌握的内容: Dijkstra构建最短路径树. 可持久化堆(使用左偏树,因其有二叉树结构 ...
- K短路 (A*算法) [Usaco2008 Mar]牛跑步&[Sdoi2010]魔法猪学院
A*属于搜索的一种,启发式搜索,即:每次搜索时加一个估价函数 这个算法可以用来解决K短路问题,常用的估价函数是:已经走过的距离+期望上最短的距离 通常和Dijkstra一起解决K短路 BZOJ1598 ...
- 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 ...
- [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 ...
随机推荐
- linux抓包工具tcpdump使用总结
tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上 1.格式 # tcpdump --help tcpdump version 4.1-PRE-CVS_2012_0 ...
- docker备份mongodb数据,导入导出
场景:服务器要升级,之前在linux部署的mongodb没有用docker,升级后,mongodb要用docker部署,并将原有的mongodb数据导入到docker部署的mongodb中. 1.在l ...
- Laravel使用redis保存SESSION
Laravel使用redis保存SESSION 首先确认服务器已经安装redis服务,php安装了redis扩展. 1.打开config/database.php.在redis配置项中增加sessio ...
- angular.isArray()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 201771010118《面向对象程序设计(java)》第三周学习总结
第一部分:理论知识复习部分 第一章 回顾了Java的关键术语,再次熟悉了java程序设计的性能介绍.对Java语言的十多种特性又有了更深刻的理解. 第二章 eclipse开发环境 ...
- vue2 里边使用 swiper2
找过了很多轮播图插件,我都不会用,还是回到swiper2吧... npm install swiper@2.7.6 --save-dev 封装成一个组件 <template> <di ...
- scrapy入门使用
scrapy入门 创建一个scrapy项目 scrapy startporject mySpider 生产一个爬虫 scrapy genspider itcast "itcast.cn&qu ...
- c#拷贝整个文件夹到指定文件夹下(非递归)
public static void CopyEntireDir(string sourcePath, string destPath) { //Now Create all of the direc ...
- html保留空格
echo '<div style="white-space:pre-wrap">○ '.$noticeInfo[$i]['content'].'</div> ...
- C# 多线程之Task(任务
1.简介 为什么MS要推出Task,而不推Thread和ThreadPool,以下是我的见解: (1).Thread的Api并不靠谱,甚至MS自己都不推荐,原因,它将整个Thread类都不开放给W ...