传送门

http://www.lydsy.com/JudgeOnline/problem.php?id=1975

题意&简要做法

一张有向图,求出最多的互不相同的路径,满足路径长度之和\(\leq E\)。

可以转化为求K短路。注意这里不需要二分,只要不断取得剩下的路径里的最短路,累加权值直到超过E即可。

细节

原题&洛谷上有256M空间,BZOJ上只有64M,坑啊...

加入一些剪枝,在当前路径长度>E时直接不加入。

将double的值乘上一个很大的数,转换成long long,跑得快了一点,据说可以避免一些精度误差。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=5005, MAXM=400005;
const ll INF=0x3f3f3f3f3f3f3f3f;
int N, M, ne, in[MAXN];
ll V, d[MAXN];
struct Edge{Edge *nxt; int to; ll w;}E[MAXM],*hd[MAXN],*hr[MAXN];
void adde(int u, int v, ll w){
E[ne].to=v;E[ne].w=w;E[ne].nxt=hd[u];hd[u]=&E[ne++];
E[ne].to=u;E[ne].w=w;E[ne].nxt=hr[v];hr[v]=&E[ne++];
}
struct St{
int u; ll g;
St(){}
St(int u, ll g):u(u),g(g){}
bool operator<(const St &o)const{return g+d[u]>o.g+d[o.u];}
};
void spfa(){
memset(d,0x3f,sizeof(d)); d[N]=0;
queue<int> q; q.push(N);
while(!q.empty()){
int u=q.front(); q.pop(); in[u]=0;
for(Edge *e=hr[u]; e; e=e->nxt){
int v=e->to;
if(d[v]>d[u]+e->w){
d[v]=d[u]+e->w;
if(!in[v]) in[v]=1,q.push(v);
}
}
}
}
void As(){
priority_queue<St> pq; pq.push(St(1,0));
int k=0;
while(!pq.empty()){
St s=pq.top(); pq.pop();
if(s.u==N){
ll f=s.g+d[s.u];
if(V>=f) V-=f, k++;
else break;
}else{
for(Edge *e=hd[s.u]; e; e=e->nxt){
ll g=s.g+e->w;
if(g+d[e->to]<=V) pq.push(St(e->to,g));
}
}
}
printf("%d\n", k);
}
int main(){
double t;
scanf("%d%d%lf", &N, &M, &t); V=(ll)(t*1e10+0.5);
for(int i=0,u,v; i<M; ++i){
double w; scanf("%d%d%lf", &u, &v, &w);
adde(u,v,(ll)(w*1e10+0.5));
}
spfa(); As();
return 0;
}

BZOJ 1975: [Sdoi2010]魔法猪学院——K短路,A*的更多相关文章

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

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

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

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

  3. bzoj 1975 [Sdoi2010]魔法猪学院

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

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

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

  5. bzoj 1975 [Sdoi2010]魔法猪学院(k短路)

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  6. BZOJ 1975: [Sdoi2010]魔法猪学院 大水题 第k短路 spfa

    https://www.lydsy.com/JudgeOnline/problem.php?id=1975 我好像到现在了第k短路都不会写,mdzz. 先spfa求出最短路,然后扫点存各种前置路径已经 ...

  7. BZOJ 1975 SDOI2010 魔法猪学院 A*k短路

    题目大意:给定一个值E 求起点到终点的最多条路径 使长度之和不超过E k短路的A*算法--每一个点有一个估价函数=g[x]+h[x] 当中g[x]是从源点出发已经走了的长度 h[x]是从这个点到汇点的 ...

  8. 洛谷 P2483 BZOJ 1975 [SDOI2010]魔法猪学院

    题目描述 iPig在假期来到了传说中的魔法猪学院,开始为期两个月的魔法猪训练.经过了一周理论知识和一周基本魔法的学习之后,iPig对猪世界的世界本原有了很多的了解:众所周知,世界是由元素构成的:元素与 ...

  9. BZOJ1975 [Sdoi2010]魔法猪学院 k短路

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1975 题意概括 给出一个无向图,让你走不同的路径,从1到n,路径长度之和不超过E,求最大路径条数. ...

随机推荐

  1. 【bzoj2257】[Jsoi2009]瓶子和燃料 扩展裴蜀定理+STL-map

    题目描述 给出 $n$ 个瓶子和无限的水,每个瓶子有一定的容量.每次你可以将一个瓶子装满水,或将A瓶子内的水倒入B瓶子中直到A倒空或B倒满.从中选出 $k$ 个瓶子,使得能够通过这 $k$ 个瓶子凑出 ...

  2. 洛谷 P2647 最大收益

    我是题面 恩,贪心,鉴定完毕. 一个物品是否放进来,取决于它是否能对答案做出贡献. 那物品i的贡献就是\(w[i]-r[i]\) 可是收益的减少是会叠加的 那就是\(w[i]-j*r[i]\),j表示 ...

  3. P3469 [POI2008]BLO-Blockade

    题意翻译 在Byteotia有n个城镇. 一些城镇之间由无向边连接. 在城镇外没有十字路口,尽管可能有桥,隧道或者高架公路(反正不考虑这些).每两个城镇之间至多只有一条直接连接的道路.人们可以从任意一 ...

  4. 【BZOJ4802】欧拉函数(Pollard_rho)

    [BZOJ4802]欧拉函数(Pollard_rho) 题面 BZOJ 题解 这么大的范围肯定不好杜教筛. 考虑欧拉函数的计算式,显然只需要把\(n\)分解就好了. 直接\(Pollard\_rho\ ...

  5. 手动搭建高可用的kubernetes 集群

    之前按照和我一步步部署 kubernetes 集群的步骤一步一步的成功的使用二进制的方式安装了kubernetes集群,在该文档的基础上重新部署了最新的v1.8.2版本,实现了kube-apiserv ...

  6. C#中调用Dll动态链接库

    C#中调用Dll动态链接库 起始 受限于语言的不同,我们有的时候可能会用别人提供的函数及方法 或者其他的什么原因.反正就是要调!!! 恰巧别人所使用的的语言跟自己又不是一样的 这个时候想要调用别人的函 ...

  7. python的StringIO模块

    StringIO经常被用来作字符串的缓存,因为StringIO的一些接口和文件操作是一致的,也就是说同样的代码,可以同时当成文件操作或者StringIO操作. 一.StringIO中的常用方法 1.r ...

  8. java project转变成java web project

    首先,你的eclipse必须得装有web插件 1.找到项目工作空间目录,打开.project文件,并修改文件, 修改如下:      找到:<natures> </natures&g ...

  9. Vue DatePicker和不可用

    input控件可以直接设置disabled为不可用状态: DatePicker要想不可编辑,设置readonly属性即可 <DatePicker type="date" v- ...

  10. [Ahoi2008]Meet 紧急集合

    1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec  Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/p ...