「SCOI2007」 蜥蜴 - 最大流

从零构建智能ai语音助手:ESP32s3+Python+大语言模型实战指南 本文详细介绍了基于ESP32S3硬件和Python后端的智能语音助手系统开发指南。系统采用ESP32S3采集语音,通过WebSocket实时传输到Python后端处理,利用大语言模型实现自然语言理解和意图识别,再通过TTS合成语音返回。文章从系统架构、工作流程、技术实现(包括OPUS编码、WebSocket通信、ESP32音频处理)等方面进行了详细讲解,并提供了分阶段学习路线和常见问题解决方案。该项目展示了物联网技术与AI技术的融合应用,相比传统语音系统具有更高的灵活性和智能性,为开发者提供了完整的实现方案 阅读详情

题目描述

在一个rrr行ccc列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。

每行每列中相邻石柱的距离为111,蜥蜴的跳跃距离是ddd,即蜥蜴可以跳到平面距离不超过ddd的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减111(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为111,则蜥蜴离开后消失,以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同一个石柱上。

输入格式

输入第一行为三个整数r,c,dr,c,dr,c,d,即地图的规模与最大跳跃距离。以下rrr行为石柱的初始状态,000表示没有石柱,111~333表示石柱的初始高度。以下rrr行为蜥蜴位置,L表示蜥蜴,.表示没有蜥蜴。

输出格式

输出仅一行,包含一个整数,即无法逃离的蜥蜴总数的最小值。

数据范围

100%100\%100%的数据满足:1≤r,c≤20,1≤d≤4.1\le r,c\le20, 1\le d\le4.1≤r,c≤20,1≤d≤4.

分析

无法逃离的蜥蜴总数最小值即为蜥蜴总数减去逃离的蜥蜴数量最大值,容易联想到最大流。如何建边?对于每个可以到达的点,容易想到将其拆开,拆成入点和出点,这样连边就容易多了。

  1. 源点SSS向蜥蜴所在点的入点连边,容量为111;
  2. 每个入点向对应的出点连边,容量为该石柱的高度;
  3. 每两个可以到达的点,对应入点向出点连边,容量为+∞+\infty+∞;
  4. 每个可以跳出去的点向汇点TTT连边,容量为+∞+\infty+∞;

这样跑一边从SSS到TTT的最大流,ans=ans=ans=蜥蜴总数−maxflow(S,T)-maxflow(S,T)−maxflow(S,T).

代码

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N=2005,M=200005;
const int INF=0x7ffffff;
#define abs(x) ((x)<0?-(x):(x))
struct Dinic {//dinic模板 
	struct Edge {
		int to,nxt,flw;
	}e[M<<1];
	int s,t;
	int h[N],cnt;
	void Add_Edge(int x,int y,int z) {
		e[++cnt]=(Edge){y,h[x],z};h[x]=cnt;
		e[++cnt]=(Edge){x,h[y],0};h[y]=cnt;
	}
	void Init(int s,int t) {
		this->s=s;
		this->t=t;
		cnt=1;
	}
	int dep[N];
	int q[N],he,tl;
	bool Bfs() {
		memset(dep,0,sizeof(dep));
		he=1,tl=0;
		q[++tl]=s;
		dep[s]=1;
		while (he<=tl) {
			int x=q[he++];
			for (int i=h[x];i;i=e[i].nxt) {
				int y=e[i].to;
				if (dep[y]||!e[i].flw) continue;
				dep[y]=dep[x]+1;
				if (y==t) return 1;
				q[++tl]=y;
			}
		}
		return 0;
	}
	int Dfs(int x,int fl) {
		if (x==t) return fl;
		int res=0;
		for (int i=h[x];i&&fl;i=e[i].nxt) {
			int y=e[i].to;
			if (dep[y]!=dep[x]+1||!e[i].flw) continue;
			int k=Dfs(y,min(e[i].flw,fl));
			fl-=k;
			e[i].flw-=k;
			e[i^1].flw+=k;
			res+=k;
		}
		return res;
	}
	int maxflow() {
		int ans=0,d;
		while (Bfs())
			while ((d=Dfs(s,INF))) ans+=d;
		return ans;
	}
}dinic;
int n,m,d,tot;
int ns,nt,ntot;
int mp[25][25];
int num[25][25];
int main() {
	dinic.Init(0,2000);
	ns=0,nt=2000;
	scanf("%d%d%d",&n,&m,&d);
	for (int i=1;i<=n;i++) {
		char s[25];
		scanf("%s",s+1);
		for (int j=1;j<=m;j++) {
			mp[i][j]=s[j]-'0';
			if (mp[i][j]) num[i][j]=++tot;
		}
	}
	for (int i=1;i<=n;i++) {//连边 
		for (int j=1;j<=m;j++) {
			if (!num[i][j]) continue;
			for (int k=-d;k<=d;k++) {
				int bk=abs(k);
				int flag=0;
				for (int l=bk-d;l<=d-bk;l++) {
					int tx=i+k,ty=j+l;
					if (!k&&!l) continue;
					if (tx<1||tx>n||ty<1||ty>m) {
						if (!flag) {
							flag=1;
							dinic.Add_Edge(num[i][j]+tot,nt,INF);
						}
						continue;
					}
					if (!num[tx][ty]) continue;
					dinic.Add_Edge(num[i][j]+tot,num[tx][ty],INF);
				}
			}
			dinic.Add_Edge(num[i][j],num[i][j]+tot,mp[i][j]);
		}
	}
	for (int i=1;i<=n;i++) {
		char s[25];
		scanf("%s",s+1);
		for (int j=1;j<=m;j++) {
			if (s[j]=='L') {
				dinic.Add_Edge(ns,num[i][j],1);
				ntot++;
			}
		}
	}
	printf("%d",ntot-dinic.maxflow());
	return 0;
}
SAP GR(Group Reporting)配置篇(一) GUI组报表的SAP S4HANA1.1全局参数1.1.1 检查全球系统设置菜单路径组报表的SAP S4HANA>合并的全局设置>检查全球系统设置事务代码CXB3说 明定义好分类账、版本、合并科目表后,重新设置。1.2主数据1.2.1定义合并分类账菜单路径组报表的SAP S4HANA>主数据>定义合并分类账事务代码CXL2说 明复制的Y1合并分类账,集团货币为CNY。此功能对分类账进行设置,应用到集团货币分类。 阅读详情

相关推荐

别再花屏了!手把手教你用STM32CubeIDE搞定LVGL 8.3移植(附完整源码)

本文详细介绍了如何在STM32CubeIDE环境下成功移植LVGL 8.3,解决常见的花屏问题。从环境配置、显示驱动优化到编译警告处理,提供完整的实战方案和源码示例,帮助开发者快速实现流畅的嵌入式GUI界面。特别针对STM32平台的DMA2D加速和内存管理进行了深度优化。

weixin_33739646的博客 243

洛谷 - P2472 [SCOI2007]蜥蜴(最大流)

题目链接:点击查看 题目大意:给出一个 n * m 的迷宫,每个位置都有一个耐久度,也就是至多经过 a[ i ][ j ] 位置 ( i , j),现在迷宫中有一些蜥蜴,每一时刻在每一个位置至多有一个蜥蜴,每只蜥蜴每次可以跳到欧几里得距离不超过 d 的格子中,迷宫的边界即为出口,问最少有多少只蜥蜴无法逃出迷宫 题目分析:遇事不决刷刷水题。。总感觉这道题很久很久以前做过一次,可能是在梦里做的吧 最少有多少只蜥蜴无法逃出 -> 最多能逃出多少只蜥蜴 每个位置都有容量,所以拆点限流 所以随便搞搞.

Falcon的博客 451

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

SCOI-2007 蜥蜴

蜥蜴 时间限制: 1 Sec 内存限制: 128 MB 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减1(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度...

菜鸡互啄 227

量化回测框架三选一:Backtrader、Zipline、PyAlgoTrade,新手到底该跟谁学?

本文对比分析了三大量化回测框架Backtrader、Zipline和PyAlgoTrade,帮助新手选择最适合的入门工具。从安装配置、策略编写到文档查阅,详细解析各框架的特点和适用场景,为量化交易初学者提供实用指南。

weixin_28745309的博客 268

华大HC32F460从零到200MHz:手把手教你配置时钟系统(附避坑指南)

本文详细解析了华大HC32F460 MCU的时钟系统配置,从启动过程、时钟树分析到实战配置200MHz系统时钟。文章手把手指导开发者如何正确配置外部晶振、MPLL锁相环及总线分频,并提供了硬件检查、代码解读及常见问题排查的避坑指南,帮助用户从零构建稳定可靠的高性能时钟环境。

net55的博客 297

蜥蜴 最大流

题意: 给你一个网格,网格上的一些位置上有一只蜥蜴,所有蜥蜴的最大跳跃距离是d,如果一只蜥蜴能跳出网格边缘,那么它就安全了.且每个网格有一个最大跳出次数x,即最多有x只蜥蜴从这个网格跳出,这个网格就再也不能有蜥蜴进来了.问你最少有多少只蜥蜴跳不出网格. 建图: 源点S编号0,网格的每个格子分成两个点i和i+nm(n和m为网格的行和列数,其实i编号点是表示蜥蜴进来,而i+nm编号的点是表示蜥蜴出去)...

空白 255

Virtuoso集成HspiceD:打通模拟设计全流程的仿真与PEX实战

本文详细介绍了Virtuoso集成HspiceD在模拟设计全流程中的应用,包括仿真与PEX实战。通过无缝衔接Virtuoso和HspiceD,设计师可以在同一环境中完成从原理图设计到PEX后仿真的全流程,大幅提升工作效率。文章还提供了仿真环境配置、前仿真关键设置、PEX全流程详解以及性能调优等实用技巧。

weixin_29271263的博客 97

【刷题记录 python】最大正方形

【刷题记录 python】最大正方形

cccrrr_BG的博客 462

【SigmaStudio】自定义算法组件之XML编写规范(一)

SigmaStudio生成自定义算法组件时,需要XML和DLB文件,本文主要记录XML文件的编码规范

liang_song的博客 1140

EtherCAT主站SOEM -- 1 -- SOEM之ethercattype.h文件分析

“ethercattype.h” 文件用于支持 EtherCAT 网络通信,提供了各种类型定义和宏,以便开发者更轻松地开发 EtherCAT 相关应用程序。这些定义包括数据类型、命令类型、状态类型和错误类型,以支持 EtherCAT 通信。根据具体应用需求,还可以调整一些超时和帧长度设置。这些定义用于处理函数调用的结果,如 EC_NOFRAME(没有帧返回)、EC_ERROR(一般错误)、EC_TIMEOUT(请求超时)等。这些定义用于处理 EtherCAT 命令,例如 EC_CMD_APRD(自动递增读取

常驻客栈的博客--嵌入式EtherCAT 2715

P2472 [SCOI2007]蜥蜴 (最大流)

题目 P2472 [SCOI2007]蜥蜴 解析 这个题思路比较清晰,本(qi)来(shi)以(jiu)为(shi)无脑建图跑最大流,结果挂了,整了一个小时后重新建图才过的。 建立一个超级源点和一个超级汇点, 每个石柱都有其固定的通过的次数,也就是说我们要限制其通过次数,怎么限制呢,拆点,把每个有石柱的点拆成两个,相连的边流量为其高度,这样就做到了限制其通过次数 对于\((i,j)\)位...

119

CLAHE 算法学习 matlab

概念可参考: CLAHE (Contrast Limited Adaptive Histogram Equalization)算法学习CLAHE具体实现主要包括6个步骤。1):分块。将输入图像划分为大小相等的不重叠子块,每个子块含有的像素数为M。参考示例为8×8块。 2):计算子块直方图。 3):计算剪切阈值clipLimit 4):像素点重分配。对每个子块,使用步骤三中多余的像素重新分配。 5):直方图均衡。 6):像素点灰度值重构。(源码中采用了双线性插值) http://www.realtimer

baidu_34971492的博客 4253

【SCOI2007】蜥蜴

【SCOI2007】蜥蜴 【题目描述】 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。  每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减1(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为1,则蜥蜴离开后消失

OI技术宅 927

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

题解 P2472 【[SCOI2007]蜥蜴】

题目链接 Solution [SCOI2007]蜥蜴 题目大意:给定一个\(n\)行\(m\)列的地图,每个点有一个经过次数限制,可以从一个点跳到与它距离不超过\(d\)的另一个点.问有多少只蜥蜴不能从地图中出去 题目分析:有多少只蜥蜴不能从地图中出去,可以转化成最多有多少只蜥蜴可以从地图中出去.然后从一个点跳到另一个点我们自然而然想到连有向边,每个点的经过次数限制可以看做是流量上限.最...

144

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

BZOJ1066[SCOI2007]蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2410  Solved: 1179 [Submit][Status][Discuss] Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1

Cynthia_wjyi 560

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【bzoj1066】【luogu2472】[SCOI2007]蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit:1 SecMemory Limit:162 MB Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,...

weixin_30872867的博客 90

1066: [SCOI2007]蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit:1 SecMemory Limit:162 MBSubmit:3545Solved:1771[Submit][Status][Discuss] Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1...

weixin_34124577的博客 129

【网络流】 ◆SCOI 2007◆ 蜥蜴

◆SCOI 2007◆ 蜥蜴 □谈一谈感想□ 寒假的时间过得很快啊!2周的强化训练就结束了……树形DP的代码还历历在目,网络流的难题又摆在了我面前(毕竟这是一道省选题)。今天就选一道题作为网络流I-sap算法的总结吧! □题目□ 题目描述 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相...

Lucky_Glass的C++之旅 461

bzoj1066[SCOI2007]蜥蜴

bzoj1066[SCOI2007]蜥蜴 题意: r行c列网格图上有一些高低不平的柱子,一些柱子上有蜥蜴,一只蜥蜴一次能跳距离为d,每次蜥蜴跳跃时出发柱子高度减一,当柱子高度为0时消失,问最少多少蜥蜴不能跳出网格图。r,c≤20,d≤4 题解: 裸最大流,每个柱子拆成X,Y两点,两点之间连柱子的高度,所有Yi向可达柱子的Xi连边,s向所有蜥蜴初始位置连边,所有可以跳出图的柱子向t连边。 ...

weixin_33895016的博客 67

[BZOJ1066][SCOI2007]蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit: 1 SecMemory Limit: 162 MB Submit: 4165Solved: 2110 [Submit][Status][Discuss] Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃 到边界外。 每行每列中相邻石柱的距...

weixin_30437337的博客 79

BZOJ 1066 蜥蜴 (拆点网络流)

1066: [SCOI2007]蜥蜴Time Limit: 1 Sec Memory Limit: 162 MB Description  在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃 到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个石 柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石

w4149 302

BZOJ 1066: [SCOI2007]蜥蜴

二次联通门 :BZOJ 1066: [SCOI2007]蜥蜴 /* BZOJ 1066: [SCOI2007]蜥蜴 拆点最大流 */ #include <cstdio> #include <iostream> #define rg register inline void read (int &...

weixin_30877755的博客 130

bzoj1066 蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3916  Solved: 1965 [Submit][Status][Discuss] Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离

Mengbier's Home 328

【bzoj1066】[SCOI2007]蜥蜴

1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3997  Solved: 2018 [Submit][Status][Discuss] Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃 到边界外。 每行每列中相邻石柱的

Joky_2002的博客 297

bzoj1066

1066: [SCOI2007]蜥蜴 Time Limit:1 SecMemory Limit:162 MBSubmit:4373Solved:2225[Submit][Status][Discuss] Description   在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1...

weixin_30920091的博客 74
上一篇: 「WC2013」 糖果公园 - 树上带修莫队
下一篇: 「NOI2014」 魔法森林 - 动态树LCT
TbYangZ
博客等级 码龄8年 13粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值