[BZOJ1975][Sdoi2010]魔法猪学院
2016-02-20 21:16
295 查看
原题地址
k短路.
A*求k短路就是用估价函数优化暴力搜索,选择估价最短的状态优先扩展,然后发现一个性质:第k短的路径第k个被搜到(出队),这个MS挺显然…
然后k短路就讲完了…
这题原题空限是256M,BZOJ上64M,于是怒被卡,被出题人坑了一波…
AC code:
k短路.
A*求k短路就是用估价函数优化暴力搜索,选择估价最短的状态优先扩展,然后发现一个性质:第k短的路径第k个被搜到(出队),这个MS挺显然…
然后k短路就讲完了…
这题原题空限是256M,BZOJ上64M,于是怒被卡,被出题人坑了一波…
AC code:
#include <cstdio> #include <queue> using namespace std; typedef long double llf; const int N=200010; const int INF=1<<29; int n,m,S,T,tot,K,ans; int h1 ,h2 ,cnt ; llf dist ; llf e; struct edge{ int u,v,next; llf w; edge() {} edge(int u,int v,llf w,int next):u(u),v(v),w(w),next(next) {} }E1 ,E2 ; struct data{ int u; llf g; data() {} data(int u,llf g):u(u),g(g) {} friend bool operator<(data x,data y){ return x.g+dist[x.u]>y.g+dist[y.u]; } }; void addedge(int u,int v,llf w){ E1[++tot]=edge(u,v,w,h1[u]); h1[u]=tot; E2[tot]=edge(v,u,w,h2[v]); h2[v]=tot; } void SPFA(){ queue<int> Q; for(int i=1;i<=n;i++) dist[i]=INF; dist[T]=0; Q.push(T); while(!Q.empty()){ int x=Q.front(); Q.pop(); for(int i=h2[x];i;i=E2[i].next){ if(dist[x]+E2[i].w>=dist[E2[i].v]) continue; dist[E2[i].v]=dist[x]+E2[i].w; Q.push(E2[i].v); } } } void work(){ priority_queue<data> Q; Q.push(data(S,0)); while(!Q.empty()){ data x=Q.top(); Q.pop(); cnt[x.u]++; K=cnt[T]+(int)(e/(x.g+dist[x.u])); if(x.u==T){ if(x.g>e) break; else{ ans++; e-=x.g; continue; } } for(int i=h1[x.u];i;i=E1[i].next) if(x.g+dist[x.u]<=e&&cnt[E1[i].v]<=K) Q.push(data(E1[i].v,x.g+E1[i].w)); } printf("%d\n",ans); } int main(){ freopen("BZOJ1975.in","r",stdin); freopen("BZOJ1975.out","w",stdout); scanf("%d%d%lf",&n,&m,&e); S=1;T=n; for(int i=1;i<=m;i++){ int u,v; llf w; scanf("%d%d%lf",&u,&v,&w); addedge(u,v,w); } SPFA(); work(); fclose(stdin); fclose(stdout); return 0; }
相关文章推荐
- Oracle_我的一些使用规定/技巧/约定
- PHP学习笔记--入门篇
- C++操作二进制文件
- 在python中导入mysql模块的时候,命令python setup.py build报错EnvironmentError: mysql_config not found的解决方法
- 格子中输出
- java的HMACSHA1加密算法
- 二层攻击之:mac层攻击
- PHP之static
- 最短路算法详解(Dijkstra/SPFA/Floyd)
- hdoj 2031 进制转换
- UVA12716 GCD XOR
- JavaScript-Javascript中bind()方法的使用与实现
- 异常检测
- 配置Tomcat+MySQL单点登录服务器
- 读《高效能人士的七个习惯》有感
- 广播监听网络变化
- 找不到类 android...app.WindowDecorActionBar
- win10完美去除快捷方式小箭头的方法
- Android开发学习之路-Handler消息派发机制源码分析
- 透明主题