层次单调性

走地图

双重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. 视觉语言跨模态特征语义相似度计算改进--表征空间维度语义依赖感知聚合算法 ACM MM

    论文链接:Unlocking the Power of Cross-Dimensional Semantic Dependency for Image-Text Matching (ACM MM23) ...

  2. 高通Android UEFI XBL 代码流程分析

    高通Android UEFI XBL 代码流程分析 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进行学习.在学 ...

  3. 使用iperf3调试网络

    介绍 Iperf是一款基于TCP/IP和UDP/IP的网络性能测试工具,它可以用来测量网络带宽和网络质量,还可以提供网络延迟抖动.数据包丢失率.最大传输单元等统计信息.网络管理员可以根据这些信息了解并 ...

  4. 【ClickHouse】0:clickhouse学习1之数据引擎(数据库引擎,表引擎)

    ClickHouse提供了大量的数据引擎,分为数据库引擎.表引擎,根据数据特点及使用场景选择合适的引擎至关重要,这里根据资料做一些总结. 数据库引擎官方文档: https://clickhouse.t ...

  5. 在SelfHost项目中获取客户端IP地址

    在SelfHost项目中,获取客户端的IP地址比OwinSelfHost项目要复杂一些,可以通过以下方法获得: base.Request.Properties["System.Service ...

  6. 面试官:Java线程可以无限创建吗?

    哈喽,大家好,我是世杰. 本次给大家介绍一下操作系统线程和Java的线程以及二者的关联 1. 面试连环call Java线程可以无限创建吗? Java线程和操作系统线程有什么关联? 操作系统为什么要区 ...

  7. 洛谷P1095

    [NOIP2007 普及组] 守望者的逃离 题目背景 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变. 题目描述 守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上. ...

  8. MakeSense标注指南

    1.网址 https://www.makesense.ai/ 2.操作流程 2.1 导入 点击get started 点击drop images,上传图片 选择obeject detection 新建 ...

  9. MongDB 的下载和安装

    1.官网: https://www.mongodb.com/ 2.进入下载链接,选择windows平台版本 https://www.mongodb.com/try/download/community ...

  10. TokenObtainPairSerialize

    TokenObtainPairSerializer是Django REST framework的SimpleJWT库提供的序列化器.它用于对用户凭据(如用户名和密码)进行序列化和验证,并在成功的身份验 ...