
牛牛与跷跷板
仅一行,一个非负整数,表示从第1块跷跷板移动到第n块跷跷板的最小跳跃次数。
思路: 最短路 如果全部板块都相连的话,广搜求最短路就行了。 这里的模板可能有零散的话,存图的时候优化一下就行。 先将所有板块按照从上往下,从左往右排序。 对于任意一块模板k来说,只要考虑两种联结的情况,一是右边的模板,二是下一行的模板。 同行的模板考虑k+1即可,很容易想到。 下一行的模板考虑的时候有个小贪心,对于模板k来说,下一行与它相连的模板区间如果是第[l,r]块,考虑右边的模板k+1的下一行时,只要看区间[r-1,?],不用从行头开始看。
发布日期:2021-05-08 11:20:19
浏览次数:12
分类:精选文章
本文共 1441 字,大约阅读时间需要 4 分钟。
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld
输入:
7
0 2 4 1 0 2 0 4 6 1 7 9 0 6 8 2 3 9 2 1 3输出:
5

//最短路#includeusing namespace std;typedef long long ll;queue q;int tot=0,s=-1,z=-1;int head[100010];int dis[100010];struct ban{ int l,r,p,y;//左右边界,所在行,编号}a[100010];struct ty{ int next,t;}edge[2000010];void bfs(){ dis[s]=1; q.push(s); while( !q.empty() ) { int x=q.front(); q.pop(); for(int i=head[x] ;i!=-1 ;i=edge[i].next) { int y=edge[i].t; if(!dis[y]) { q.push(y); dis[y]=dis[x]+1; } } }}bool cmp(ban a, ban b) //从上到下,从左到右排序{ if(a.y!=b.y) return a.y >n; for(int i=1; i<=n ;i++) { cin>>a[i].y>>a[i].l>>a[i].r; a[i].p=i; } sort(a+1,a+1+n,cmp);// for(int i=1; i<=n ;i++)// cout< <<" ";// cout< =a[i].r) break; if(a[l].r<=a[i].l) continue; addedge(i,l); addedge(l,i); } if( l >1 ) l--; } //存完图,广搜求最短路 bfs(); cout< <
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月26日 07时06分41秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Unity Shader之路(五)创建第一个顶点/片元着色器?
2021-05-08
L3-008 喊山 (30分) C++ BFS题解
2021-05-08
Web框架——Flask系列之Flask-SQLAlchemy数据库的基本操作(九)
2021-05-08
六、Numpy的使用(详解)
2021-05-08
三、案例:留言板 & url.parse()
2021-05-08
Python中的filter()函数!!!1
2021-05-08
(新手小白必学!)用Python设计和实现聪明的尼姆游戏(人机对战)!!!!
2021-05-08
LeetCode:283. 移动零!!!1
2021-05-08
Python实验26:计算文件MD5值
2021-05-08
端口探测
2021-05-08
LeetCode:28. 实现 strStr()——————简单
2021-05-08
LeetCode:697. 数组的度————简单
2021-05-08
LeetCode:1052. 爱生气的书店老板————中等
2021-05-08
C语言的6大基本数据类型!(学习C语言小白必备!!)
2021-05-08
Vue——mock模拟数据的使用
2021-05-08
Nginx配置反向代理与负载均衡
2021-05-08
高阶函数reduce
2021-05-08
Lionheart万汇:布林线双底形态分析技巧
2021-05-08
Lionheart万汇:台积电大幅提升资本开支,2021有望续创辉煌
2021-05-08
Lionheart万汇:新年消费结构中贵金属交易机会
2021-05-08