蜥蜴【网络流】

Windows环境下pcl点云库 安装配置全流程(精简、有效) 本文为Windows配置点云库pcl步骤,具体是win10、visual studio 2017、pcl1.11.1。 阅读详情

##题目大意:
在一个rrr行ccc列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。
每行每列中相邻石柱的距离为111,蜥蜴的跳跃距离是ddd,即蜥蜴可以跳到平面距离不超过ddd的任何一个石柱上。石柱都不稳定,每次当蜥蜴跳跃时,所离开的石柱高度减111(如果仍然落在地图内部,则到达的石柱高度不变),如果该石柱原来高度为111,则蜥蜴离开后消失。以后其他蜥蜴不能落脚。任何时刻不能有两只蜥蜴在同一个石柱上。


##思路:
很明显的最大流问题。为了满足一个石柱最多跳a[i][j]a[i][j]a[i][j]只蜥蜴,就要将每个石柱进行拆点,中间流量为a[i][j]a[i][j]a[i][j],这样就保证了最多只有a[i][j]a[i][j]a[i][j]只蜥蜴可以跳这个石柱。那么这个建图就很明显了:

  1. 将源点SSS向每个有蜥蜴的柱子连边,边权为1。
  2. 将与边界距离不足ddd的柱子与汇点TTT连边,边权为INFINFINF。
  3. 将拆好的柱子两两连边,边权为a[i][j]a[i][j]a[i][j]。
  4. 将直线距离不大于ddd的柱子连边,边权为INFINFINF。

跑一边最大流即可得到能逃出的蜥蜴数量,再用总蜥蜴数量减去得到的答案即可。


##代码:

#include <cstdio>
#include <iostream>
#include <queue>
#include <cstring>
#define Inf 0x7f
#define INF 1e9
using namespace std;

int n,m,d,a[41][41],head[500001],dep[500001],s,t,k,ans,num,sum,x,y;
char c;

struct edge
{
	int next,to,c;
}e[500001];

void add(int from,int to,int c)
{
	k++;
	e[k].c=c;
	e[k].to=to;
	e[k].next=head[from];
	head[from]=k;
} 

bool check(int x1,int y1,int x2,int y2)
{
	return ((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)<=d*d);
	//计算两个柱子的直线距离
	//两边同时开方得 sqrt((x1-x2)^2+(y1-y2)^2)<=d
	//再利用毕达哥拉斯定理计算
}

bool bfs()  //分层
{
	queue<int> q;
	q.push(s);
	memset(dep,Inf,sizeof(dep));
	dep[s]=0;
	while (q.size())
	{
		int u=q.front();
		q.pop();
		for (int i=head[u];i;i=e[i].next)
		{
			int v=e[i].to;
			if (dep[v]>dep[u]+1&&e[i].c)  
			{
				dep[v]=dep[u]+1;
				q.push(v);
			}
		}
	} 
	return (dep[t]<Inf);
}

int dfs(int u,int low)
{
	int lows=0;
	if (u==t) return low;
	for (int i=head[u];i;i=e[i].next)
	{
		int v=e[i].to;
		if (dep[v]==dep[u]+1&&e[i].c)
		{
			lows=dfs(v,min(low,e[i].c));
			if (!lows) continue;
			e[i].c-=lows;  //正向边
			e[(i+1)^1-1].c+=lows;  //反向边
			return lows;
		}
	}
	return 0;
}

int main()
{
	scanf("%d%d%d",&n,&m,&d);
	s=0;
	t=n*m*2+1;
	 //柱子a编号为1~n*m,柱子b编号为n*m+1~2*n*m
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=m;j++)
	 {
	 	scanf("%1d",&a[i][j]);
	 	x=(i-1)*m+j;  //计算编号
	 	add(x,x+n*m,a[i][j]);
	 	add(x+n*m,x,0);  //柱子a和柱子b连接
	 	if (i-d<1||i+d>n||j-d<1||j+d>m)  //能跳到边界外
	 	{
	 		add(x+n*m,t,INF);
	 		add(t,x+n*m,0);  //与t相连
	 	}
	 }
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=m;j++)
	 {
	 	cin>>c;
	 	if (c=='L')  //蜥蜴
	 	{
	 		num++;
	 		x=(i-1)*m+j;
	 		add(s,x,1);
	 		add(x,s,0);  //与s相连
	 	}
	 }
	for (int i=1;i<=n;i++)
	 for (int j=1;j<=m;j++)
	  for (int k=1;k<=n;k++)
	   for (int l=1;l<=m;l++)
	    if (check(i,j,k,l))  //距离不大于d
	    {
	    	x=(i-1)*m+j;
	    	y=(k-1)*m+l;
	    	add(x+n*m,y,INF);
	    	add(y,x+n*m,0);
	    	add(y+n*m,x,INF);
	    	add(x,y+n*m,0);
	    }
	while (bfs())
	{
		while (sum=dfs(s,INF))
		 ans+=sum;
	}
	printf("%d\n",num-ans);
	return 0;
}
如何从RHEL 8升级到RHEL 9 Red Hat 于 2022 年 5 月 17 日宣布全面推出 RHEL 9。这是 RHEL(Red Hat Enterprise Linux)的最新版本,它具有许多功能和增强功能。 阅读详情

相关推荐

用Python手把手教你实现一个多层感知机(MLP)——从理论到代码实战

本文详细介绍了如何使用Python和Theano库从零开始实现多层感知机(MLP),涵盖从核心原理到代码实战的全过程。通过构建隐藏层、输出层和完整MLP模型,结合权重初始化、激活函数选择和训练技巧,帮助开发者深入理解神经网络工作机制,并应用于实际机器学习任务。

web39explorer的博客 970

网络流:HDU 2732

HDU 2732 hdu 2732 题意:给你两个值n,d,给你两张图,都是n行,第一个图每个位置上的值q表示对应点的柱子的坚硬程度,表示这个柱子最多允许q只蜥蜴从这里跳出去,等于0就说明这个地方没有柱子,每个柱子最多容纳一只蜥蜴。第二个图有两个值一时’L’表示这个地方有一只蜥蜴,’.'表示这个地方是没有蜥蜴。每个蜥蜴可以跳跃到与当前所在点曼哈顿距离小于等于d的地方。如果蜥蜴可以跳出这张地图说...

qq_40994343的博客 323

手把手教你用CEFSharp打造防关联指纹浏览器(附完整代码)

本文详细介绍了如何基于CEFSharp框架,从零开始构建一个企业级的防关联指纹浏览器。通过剖析核心架构、多进程隔离实现、动态指纹混淆(如Canvas、WebGL)的实战代码,以及代理集成与性能优化,为跨境电商、广告投放等场景提供了一套可控、安全的开源解决方案。

fern8的博客 959

蜥蜴 【有图包懂】 (网络流) gzoi

广州的同学看这里: http://www.gdgzoi.com/JudgeOnline/problem.php?cid=1045&amp;pid=3   Description       在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外。 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平面距离不超过d的任何一个...

Wyt_code的博客 652

告别Vysor!用Scrcpy在Mac上无线投屏安卓手机(附魅族16th闪退修复实战)

本文详细介绍了如何在Mac上配置和使用开源投屏工具Scrcpy,实现安卓手机无线投屏的高效解决方案。从基础环境准备到高级功能调优,包括无线连接配置、输入控制增强、多设备管理和性能优化等实用技巧,特别针对魅族16th等机型的闪退问题提供了修复方案,帮助用户彻底告别Vysor等商业软件。

weixin_28712661的博客 394

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1502

刷题总结——蜥蜴(ssoj网络流)

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

banzhangzhi8819的博客 230

从一个过气考渣的角度看LLM智能化测试用例生成

根据业务需求生成测试用例,会涉及到相关上下文的召回、用例生成等场景。除了用例生成之外,也可以考虑应用LLM进行用例评审。因此,本文将涉及以下内容。

software_test010的博客 827

洛谷2472 蜥蜴(网络流)

传送门 【题目分析】 令人智熄的字符串读入操作。。。。。在BZOJ上过了然后氵谷全T?emmm。。。。。。 网络流的题难点就在于建图,这道题还是比较明显,首先每个点还是要拆点限制流量,上限设为石柱高度表示最多可以跳过这么多蜥蜴。 建立一个起点s和终点t,每个有蜥蜴的石柱对应的入点就和起点s连接,s与入点间的弧容量为1(含义是该石柱只能有一个蜥蜴,如果容量大...

weixin_30532987的博客 150

微信小程序 - 解决web-view嵌套H5网页白屏问题,将h5网页嵌套在webview页面出现无法加载一片空白,详解微信小程序<web-view>页面跳转出现白屏情况(无论本地还是线上H5都能解决)

微信小程序解决web-view打开网页在手机上出现白屏的问题,小程序web-view嵌套H5项目白屏问题分析及解决,使用web-view组件加载H5网页链接后白屏情况,小程序嵌套的h5网页中跳转页面时也有可能出现白屏问题,嵌套webview页面时,出现白屏,WebView 加载不出网页,微信小程序<web-view>页面跳转出现白屏解决方法,解决WebView白屏空白,H5内嵌第三方小程序打开白屏,微信小程序嵌入h5页面加载空白,微信小程序web-view跳转h5白屏,解决微信小程序web-view打开网页

🏆 前端领域优质创作者 1万+

机器学习实战7-基于机器学习算法预测相亲成功率

大家好,我是微学AI,今天给大家介绍一下机器学习实战7-基于机器学习算法预测相亲成功率,随着社会的发展,大家都忙于事业,对自己的终身大事就耽搁了,相亲是一种传统的寻找伴侣的方式,随着时代的发展,相亲的方式也在不断地改变。在这个过程中,了解相亲双方的信息以及预测相亲是否成功变得越来越重要。本文将介绍如何使用随机森林算法对相亲成功进行预测,通过分析男女双方的房子、车子、长相、家庭条件、父母情况、生活习惯、学历、性格、兴趣等因素,来预测相亲是否成功。

微学AI的博客 3028

[BZOJ1066] [SCOI2007] 蜥蜴 - 网络流

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

whzzt的博客 1295

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

P2472-[SCOI2007]蜥蜴【网络流】

正题 题目链接:https://www.luogu.com.cn/problem/P2472 题目大意 n∗mn*mn∗m个格子,每个格子的石柱高度不同,蜥蜴可以跳到距离不超过ddd的石柱处,并且先前所站的石柱高度减一,为0则不能站,然后求有多少只蜥蜴不可以逃脱。 解题思路 考虑网络流,每只蜥蜴表示一个流,将每个石柱分成入点和出点,然后入点连出点流量为石柱高度,然后每个可以走的点之间出点连入点无限,之后有蜥蜴的柱子原点连入点流量为1,可以逃脱的出点连汇点。 然后dinic即可。 codecodecod

QuantAsk 429

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

BZOJ 1066: [SCOI2007]蜥蜴 网络流题解

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

Monica 539

【网络流】蜥蜴

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

wu_yihao的专栏 558

BZOJ1066: [SCOI2007]蜥蜴 网络流

1066: [SCOI2007]蜥蜴 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3554  Solved: 1777 [Submit][Status][Discuss] 题解: 想法: 一道不错的网络流,我们可以把一只蜥蜴从起始位置到离开边界的一条路径想象成单位1的流量。 对于一个流量,它会导致整条路径上的边的容量都-1,

Oakley 486

bzoj 1066 [SCOI2007]蜥蜴 - 网络流

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

adx33526的博客 171

[BZOJ1066][SCOI2007]蜥蜴-网络流

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

「嫌われ者のフィロソフィ」 309

BZOJ 1066 蜥蜴 (拆点网络流)

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

w4149 302

BZOJ1066【SCOI2007】蜥蜴 <网络流>

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

diwtwvs6045的博客 126

【网络流】 ◆SCOI 2007◆ 蜥蜴

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

Lucky_Glass的C++之旅 460

[bzoj1066][SCOI2007]蜥蜴 网络流最大流

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

LvYanchang的博客 293

[BZOJ1066] [SCOI2007] 蜥蜴 (网络流)

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

weixin_30924239的博客 77

[BZOJ 1066][SCOI2007]蜥蜴(网络流)

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

weixin_33913377的博客 74

洛谷$P$2472 蜥蜴 $[SCOI2007]$ 网络流

正解:网络流 解题报告: 传送门! $umm$一看就是个最大流呗,,,就直接考虑怎么建图趴$QwQ$ 首先看到这个高度减小其实就相当于对这个点的次数有约束,就显然拆点呗,流量为高度 然后$S$连向左侧所有有蜥蜴的点,流量为1.右侧所有边界点连向$T$,流量为$inf$. 然后就做完了?$QwQ$. #include<bits/stdc++.h> usi...

qq_42692055的博客 175
上一篇: 吃饭【网络流】
下一篇: 时钟【BFS】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值