层次单调性

走地图

双重bfs

1.模块性

2.方案:外层bfs逆推,内层bfs重新跑

A.每次代价0/1:双端队列bfs

B.每次代价任意数值:优先队列bfs(dijikstra)、迭代(SPFA)

UVA11367 Full Tank?

https://www.luogu.org/problemnew/show/UVA11367

 1 const int N=1010,M=10010,C=105,INF=99999999;
2 struct node
3 {
4 int u,cc,co;
5 node(int U,int CC,int CO){u=U;cc=CC;co=CO;}
6 };
7 bool operator < (node x,node y){return x.co>y.co;}
8 int f[N][C];
9 int pr[N],u[M<<1],v[M<<1],w[M<<1],fir[N],nxt[M<<1];
10 int n,m,tot,c,s,e;
11 priority_queue<node> q;
12
13 void bfs()
14 {
15 while(!q.empty()) q.pop();
16 q.push(node(s,0,0));
17 f[s][0]=0;
18 while(!q.empty())
19 {
20 node p=q.top();q.pop();
21 //cout<<p.u<<" "<<p.cc<<" "<<p.co<<endl;
22 if(p.u==e) {cout<<p.co<<endl;return;}
23 if(p.cc<c && p.co+pr[p.u]<f[p.u][p.cc+1])
24 {
25 f[p.u][p.cc+1]=p.co+pr[p.u];
26 q.push(node(p.u,p.cc+1,p.co+pr[p.u]));
27 }
28 qxx(i,p.u)
29 {
30 if(p.cc>=w[i] && f[v[i]][p.cc-w[i]]>=p.co)
31 {
32 f[v[i]][p.cc-w[i]]=p.co;
33 q.push(node(v[i],p.cc-w[i],p.co));
34 }
35 }
36 }
37 cout<<"impossible"<<endl;
38 }
39
40 int main()
41 {
42 n=rd(),m=rd();
43 FOR(i,1,n) pr[i]=rd();
44 while(tot<(m<<1))
45 {
46 u[++tot]=rd(),v[tot]=rd(),w[tot]=rd();
47 ++u[tot],++v[tot];
48 nxt[tot]=fir[u[tot]],fir[u[tot]]=tot;
49 ++tot;u[tot]=v[tot-1],v[tot]=u[tot-1],w[tot]=w[tot-1];
50 nxt[tot]=fir[u[tot]],fir[u[tot]]=tot;
51 }
52 int qq=rd();
53 FOR(i,1,qq)
54 {
55 memset(f,8,sizeof(f));
56 c=rd(),s=rd(),e=rd();
57 ++s,++e;
58 bfs();
59 }
60 return 0;
61 }

A*

带估价函数的bfs

一定有f[i]<=g[i]

越接近效率越高

康托展开

排列->序数

∑(i=1->n) i后面比i小的数 * (n-i)!

bfs优化的更多相关文章

  1. 2013年第四届蓝桥杯国赛 九宫重排(HashMap+双BFS优化)

    九宫重排     时间限制:1.0s   内存限制:256.0MB 问题描述 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干 ...

  2. 最少步数(dfs + bfs +bfs优化)

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  3. 洛谷 2831 (NOIp2016) 愤怒的小鸟——仅+1所以bfs优化

    题目:https://www.luogu.org/problemnew/show/P2831 状压dp.跑得很慢.(n^2*2^n) 注意只打一只猪的情况. #include<iostream& ...

  4. POJ2308连连看dfs+bfs+优化

    DFS+BFS+MAP+剪枝 题意:       就是给你一个10*10的连连看状态,然后问你最后能不能全部消没? 思路:      首先要明确这是一个搜索题目,还有就是关键的一点就是连连看这个游戏是 ...

  5. hdu-1728(bfs+优化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1728 注意:1.先输入起点(y1,x1)和终点(y2,x2): 2.如果一个一个遍历会超时. 思路:每 ...

  6. USACO4.4 Shuttle Puzzle【bfs+优化】

    直接上$bfs$,每一个状态记录下当前字符串的样子,空格的位置,和走到这个状态的答案. 用空格的位置转移,只有$50pts$ 考虑到题目一个性质:$W$只往右走,$B$只往左走,就可以过了. #inc ...

  7. POJ 1426 Find The Multiple --- BFS || DFS

    POJ 1426 Find The Multiple 题意:给定一个整数n,求n的一个倍数,要求这个倍数只含0和1 参考博客:点我 解法一:普通的BFS(用G++能过但C++会超时) 从小到大搜索直至 ...

  8. nyoj三个水杯(bfs)

    三个水杯 时间限制:1000 ms  |           内存限制:65535 KB 难度:4   描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互 ...

  9. hdu 3247 AC自动+状压dp+bfs处理

    Resource Archiver Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Ot ...

  10. NOIP2002-字串变换【双向BFS】

    NOIP2002-字串变换 Description 已知有两个字串A,BA,B及一组字串变换的规则(至多66个规则): A_1A1​ ->B_1B1​ A_2A2​ -> B_2B2​ 规 ...

随机推荐

  1. python重拾第八天-Socket网络编程

    本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...

  2. 如何在Android 确定 lunch对应的内核配置

    如何在Android 确定 lunch对应的内核配置 背景 因为在调试中发现,user版本出现了一个userdebug版本上没有的bug.为了对比安卓 user版本与userdebug版本的差异,涉及 ...

  3. 在Gerrit中修改project.config

    reference:https://blog.bruin.sg/2013/04/19/how-to-edit-the-project-config-for-all-projects-in-gerrit ...

  4. 3568F-系统启动阶段LOGO显示

  5. NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)

    前  言 本文档主要介绍TLIMX6U-EVM评估板硬件接口资源以及设计注意事项等内容. 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理 ...

  6. yb课堂实战之接口协议调整和日期格式 《十八》

    调整api接口协议和日期格式 统一输出协议,驼峰转下划线 格式化日期

  7. Aspose 导出Excel时 隐藏指定列

    Worksheet ws = wb.Worksheets[0]; ws.Cells.HideColumn(0); //隐藏Excel第一列

  8. 文件系统(九):一文看懂yaffs2文件系统原理

    liwen01 2024.07.07 前言 yaffs 是专为nand flash 设计的一款文件系统,与jffs 类似,都是属于日志结构文件系统.与jffs 不同的是,yaffs 文件系统利用了na ...

  9. iOS开发基础99-内购in_app

    今天后台支付校验模块报错,拿到凭证去苹果校验返回的结果如下: { "receipt": { "receipt_type": "Production&q ...

  10. 使用.NET6实现动态API

    ApiLite是基于.NET6直接将Service层生成动态api路由,可以不用添加Controller,支持模块插件化,在项目开发中能够提高工作效率,降低代码量. 开发环境 .NET SDK 6.0 ...