codeforces #516 div1B Labyrinth(01bfs)

政府科技管理者如何提升科技成果评估的准确性与透明度?.docx 政府科技管理者如何提升科技成果评估的准确性与透明度? 立即下载

题目链接:https://codeforces.com/contest/1063/problem/B

题意

给出 n ∗ m , 1 ≤ n ≤ 2000 n*m,1\leq n \leq 2000 n∗m,1≤n≤2000的矩阵,矩阵中包含’.‘和’*'两种符号,·可走,※不可走,给出起始点 ( x , y ) ( x,y ) (x,y),问从起始点向外走,有多少格子会被走到,*不考虑。但有个约束,最多向左走L步,最多向右走R步。上和下没有约束。

题解

设从 ( x , y ) (x,y) (x,y)走到 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​),设从 ( x , y ) (x,y) (x,y)到 ( x 0 , y 0 ) (x_0,y_0) (x0​,y0​)需要向右走R步,向左走L步,可以得出 R − L = y 0 − y R-L=y_0-y R−L=y0​−y,这里 y 0 − y y_0-y y0​−y是个定值,为其命名为 c o n s t const const,所以 R − L = c o n s t R-L=const R−L=const, R = L + c o n s t R=L+const R=L+const,所以我们只要求出从起点到达每个点向左或向右最少走几步,就可以推出另一个方面所需的步数。

补充

为什么是R-L而不是L-R呢,这需要规定一个正方向,此时规定向右为正方向,01bfs维护的是向左走的最短距离且距离>=0。为什么是 y 0 − y y_0-y y0​−y而不是 y − y 0 y-y_0 y−y0​呢,因为向右是正方向。

0-1bfs

01bfs讲解这篇文章讲的很细致。我主要概述一下,当一个图中只有边权为0的边和边权为1的边时,我们不必使用Dijkstra算法,而是可以使用01bfs,其复杂度为 O ( v + e ) O(v+e) O(v+e),其主要思想和Dijkstra的思想相同,每次出队列的都是当前情况下路径最小的点,但其用双端队列维护省去了堆维护的时间,当走过是0的边时就将这个点加在队列前面,当走过是1的边时,就将这个点加在队列后面,这样就保证了队头的元素一定是路径最短的,松弛的操作和Dijkstra相同。

代码


#include <bits/stdc++.h>	
using namespace std;
const int maxn = 2000+5;
const int dr[] = {1,-1,0,0};
const int dc[] = {0,0,1,-1};
const int inf = 0x3f3f3f3f;
#define fi first
#define se second
typedef pair<int,int> pii;
int dis[maxn][maxn];
char mp[maxn][maxn];
int n,m,x,y,l,r;
bool judge(pii p) {
    if(p.fi < 1 || p.fi > n || p.se < 1 || p.se > m || mp[p.fi][p.se] == '*') return false;
    return true;
}

void bfs() {
    deque<pii> que;
    pii p = pii(x,y);
    memset(dis, inf, sizeof dis);
    dis[x][y] = 0;
    que.push_front(p);
    while(!que.empty()) {
        pii u = que.front();
        que.pop_front();

        for(int i = 0; i < 4; ++i) {
            pii np(u.fi+dr[i], u.se+dc[i]);
            if(judge(np)) {//边界条件
                if(dis[np.fi][np.se] > dis[u.fi][u.se]+(i==3)) {
                    dis[np.fi][np.se] = dis[u.fi][u.se]+(i==3); 
                    if(i == 3) que.push_back(np);
                    else que.push_front(np);
                }
            }
        }
    }
}

int main () {
    scanf("%d%d%d%d%d%d", &n, &m, &x, &y, &l, &r);
    for(int i = 1; i <= n; ++i)
        scanf("%s", mp[i]+1);
    bfs();
    int cnt = 0;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j) {
            if(mp[i][j] == '*') continue;
            int rr = dis[i][j]+j-y;
            if(dis[i][j] <= l && rr <= r)
                cnt++;
        }
    printf("%d\n", cnt);
    return 0;
}

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现) 内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。 立即下载

相关推荐

Springboot信息泄露以及heapdump的利用

努力是为了不平庸~安全有些时候是枯燥的,这一次,让我们先人一步,趣学渗透!

LiBai'S BLOG 3万+

《算法竞赛·快冲300题》每日一题:“超级骑士”

BFS、DFS

罗勇军的博客 1036

Clion+platformIO开发ESP32时找不到lib文件中引入第三方库的头文件(头文件下有波浪线),实际编译是成功的解决方法

Clion+platformIO开发ESP引入第三方库文件编译器无法找到.h文件但编译成功

zs5218的博客 1852

Codeforces 1749E 最短路,01bfs

最短路

stdforces的博客 395

STM32 USB AUDIO实战指南——从零构建音频设备

本文详细介绍了如何使用STM32F407构建USB音频设备,从硬件准备到软件配置,再到音频播放和录制功能的实现。通过STM32CubeMX配置和实战代码示例,帮助开发者快速掌握USB Audio Class规范,实现低延迟、高质量的音频传输,适用于语音交互、音乐播放等多种场景。

weixin_42549037的博客 484

一种抑制undershoot/overshoot锐化算法介绍

一、USM 当增强图像的边缘、细节信息等高频信息时,图像的锐化视觉效果会得到较大提升。提高图像锐化的一种经典算法为非锐化掩码(UNsharp Masking)技术。该技术首先通过高通滤波并与缩放系数相乘,其结果再与原始图像相加,即可对高频信息进行增强。其主要的原理如下图所示: 其中,对图像进行高通滤波的另一种等效方法为:原始图像减去原始图像的低通滤波图像,其结果被称之为“掩码”。因此,上述的USM方法可以表示为: 原始图像减去原始图像低通滤波之后的图像得到掩码M。 2.掩...

大熊 4242

[01BFS] Codeforces-1063B Labyrinth

Codeforces 1063B Labyrinth (01BFS)

LECOMTEDE的博客 274

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5542

Codeforces ~ 1063B ~ Labyrinth (0-1 BFS)

题意 给你一个N*M的图,起点为(r,c),只能往左走X步,往右走Y步,上下无限制。问可以有多少个点可以到达?   思路 第一次听说01BFS。当时写的时候直接BFS,结果PP了,感觉貌似有问题,但是没管,果然就FST了。。。 01BFS其实就是把队列开成双端队列,每次花费为1走到的点还是放在后面,花费为0走到的点放在队首。每次取队首元素进行更新。 #include &lt;...

张松超的博客 736

1、 快速掌握R:初学者的计量经济学指南

本博文旨在为初学者提供一个快速掌握R语言的指南,特别是针对计量经济学领域的应用。内容涵盖了R的基本操作、数据管理、可视化、函数编写以及高级统计分析方法,如OLS回归、异方差修正和集群标准误差计算等。通过实际示例和详细说明,帮助读者在数据分析和科学研究中更加得心应手。

weixin_35734408的博客 147

Python爬虫实战:如何爬取12306列车信息

本文介绍了如何使用Python编写爬虫,抓取12306列车信息。我们讲解了如何分析12306的列车数据接口,如何发送HTTP请求,解析返回的JSON数据,并将数据保存到本地文件中。我们还讨论了如何绕过反爬虫机制,如使用随机User-Agent和设置请求延时。通过这个实战项目,你应该掌握了如何爬取并解析来自公共API的数据,同时提高了你的爬虫技能。这些技能不仅适用于12306列车信息抓取,也可以广泛应用于其他需要抓取JSON数据的网站。

2201_76125261的博客 1922

Codeforces Round #697 (Div. 3) F 01矩阵行列异或变换 套路题 暴力 思维

题目 给你一个01矩阵再给你一个目标01矩阵。 你可以进行任意次的整行异或或者整列异或。 问当前矩阵是否能通过这两种操作转换成目标矩阵。 题解思路 以前见过这种题,套路满满。 我们可以先使用列异或使得第一行符合全部条件,这样我们就只能使用行异或了,因为一旦使用列异或就会使得第一行不符合要求。 直接打暴力就行了。 套路题。 AC代码 #include <bits/stdc++.h> //#include <unordered_map> //priority_queue #define

从你的全世界路过 447

AI智算-K8s如何利用IB RDMA网络加速大模型分布式训练

在AI人工智能领域,大模型的微调是提升性能不可或缺的一环。通过结合InfiniBand RDMA网络的高速互联、Kubernetes的云原生容器化部署,以及智能算力调度平台,可以打造一个高效、灵活且可扩展的分布式训练环境。

Kason_iWiki 815

【01BFS+思维】Codeforces Round #516 D. Labyrinth

【01BFS+思维】Codeforces Round #516 D. Labyrinth 题意: 给出一个迷宫,限定能往左走和往右走的次数分为为l,r,上下走不限,迷宫中能走的范围最大时多少格子? 思路: 采用双端队列,BFS的时候优先上下走放在双端队列首部,左右走放在队列尾部,这样可以保证走的方法最优。 #include&lt;bits/stdc++.h&gt; using namespace ...

Bryce1010's Blog 474

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

codeforces 1063B. Labyrinth 【01bfs】

题目大意:在一个地图上,有些点不能走,有些点可以走,向左走向右走会有花费,向上和向下没有,现在给定起点,和向左走、向右走的最多步数,问能够走到的点有多少个 题目分析:这个题如果直接bfs 去搜的话,没有办法很好的更新到达某个点最少需要多少个向左走,所以我们用bfs跑一个最短路,dist[i][j] 表示达到 (i,j)这个点最少需要向左走的步数,那么向右走的步数就为 j-c0+dist[i][j]...

beckyUp的博客 522

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

01 bfs 学习

01 bfs简介 bfsbfsbfs 可以 O(V+E)O(V+E)O(V+E) 求解边权全为 111 的图上最短路。 而当边权只有 000 或 111 时,使用其它最短路算法是有些浪费的,此时可以使用 bfsbfsbfs 的变种:01bfs01 bfs01bfs 来快速求解,复杂度仍为 O(V+E)O(V+E)O(V+E). 01bfs01bfs01bfs 维护一个双端队列,当边权为 000 时,使用 push_frontpush\_frontpush_front,当边权为 111 时,使用 push_

cosx_的博客 1874

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

B - Three States CodeForces - 590C -0-1 BFS

  B - Three States  CodeForces - 590C  题意:给出一个图,有三类区域1,2,3,#是墙不能走,’.‘是可以修路的,问如何修一条路能够是三块联通 思路:bfs预处理出,三类区域到达图上个点需要修路的数量,队列堆优化修路数量少的优先级高。 然后枚举一下他们三个的交点在哪使得修路最短。 #include&lt;bits/stdc++.h&g...

BePosit的博客 386

Codeforces 346D Robot Control(01BFS)

题意 有一个 \(N\) 个点, \(M\) 条边的有向图, 初始有一个机器人在 \(1\) 号点. 每个时刻, 这个机器人会随机选择一条从该点出发地边并通过.当机器人到达点 \(N\) 时, 它就会自动关闭. 然而这个机器人如果在某个时刻到达自己曾经到过的点的话, 它就会爆炸. 因此, 你决定对机器人实施一些命令, 让它在某些时候按照规定的边走, 而非随机选择. 问对机器人最少使用多少条命令可以...

weixin_30663471的博客 202

Codeforces 910A BFS

题意:给定一个n长度的01字符串,下标为1到n。每次前进的跳跃步数不能超过d,假定当前位置为x,当且仅当x+i位置为1,i问从起点1到终点n最少步数是多少。分析:属于很简单的搜索题,我用的是BFS,因为DFS超时了,想不到更好的剪枝...代码如下:#include #include #include using namespace std; const int INF = 10000000

勇敢前进的ACMer 521

CodeForces 986A Fair(BFS)

A. Fairtime limit per test2 secondsmemory limit per test512 megabytesinputstandard inputoutputstandard outputSome company is going to hold a fair in Byteland. There arenntowns in By...

weixin_30571465的博客 163

codeforces 242C

C. King's Path time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output The black king is standing on a chess field

852

CodeForces - 1341E Nastya and Unexpected Guest(01bfs)

题目链接:点击查看 题目大意:给出一个区间 [ 0 , n ] ,初始时位于点 0 ,现在需要到达点 n ,问最少需要多长时间 接下来是限制,首先有一个红绿灯,当绿灯亮起的时候,必须保证移动,当红灯亮起的时候,必须在“安全岛”上等红灯,红绿灯会按照亮 g 秒绿灯,再亮 r 秒红灯,再亮 g 秒绿灯 .... 满足一直循环 接下来引入“安全岛”的概念,顾名思义,“安全岛”就是分布在 [ 0 ...

Falcon的博客 1154

Codeforces Contest 1070 problem A Find a Number —— bfs求a的最小倍数且所有位的和是b

You are given two positive integers d and s. Find minimal positive integer n which is divisible by d and has sum of digits equal to s. Input The first line contains two positive integers d and s (1≤d≤...

天翼之城的博客 269

codeforces 1064D. Labyrinth(BFS优先队列优化)

                                                    D. Labyrinth time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output You are playing ...

Amove 514

CodeForces - 1107D Compression (进制转换,前缀和,01矩阵)

????‍♂️ ????‍♂️ ????‍♂️ 压缩实质就是把n 分为几个小块,每个小块中元素相等(全为0/1) 值得注意的一点就是十六进制展开成二进制的时候,每一位为二进制下的四位,不足补零 //枚举n的因子x,将n*n分解为多个x*x //检验这些x*x是否都是1或者都是0 int n; char s[5555]; int mp[5555][5555]; int pre[5555][5555];//表示某点为...

欢迎光临 我的心 304

Codeforces 1340 C (01BFS)

Codeforces 1340 C (01BFS) 题意:你要从0走到n,红绿灯交替,绿灯可以随便走,红灯

qq_43653111的博客 459
上一篇: mac下的用idea配置jsp+tomcat连接mysql数据库的环境
下一篇: codeforces Educational Codeforces Round 52 div2C - Make It Equal
Link_Ray
博客等级 码龄9年 44粉丝 156原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值