bzoj3144: [Hnoi2013]切糕

从NVLINK到EthLink:GPU互联技术演进全解析(含最新行业趋势) 本文深入解析了从NVLINK到EthLink的GPU互联技术演进,重点剖析了Scale-up与Scale-out两种核心范式。文章详细对比了NVLINK、UALINK及革命性的EthLink技术,后者创新性地将以太网改造为支持Load/Store与RDMA双语义的高性能互联网络,旨在打破封闭生态,实现高性能与开放性的统一。最后,文章提供了技术选型指南并展望了未来以以太网为主导、语义融合的行业趋势。 阅读详情

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3144

第一道想出来的hnoi题,还难得地一遍A...

思路:老方法,先只考虑一个限制条件,即每个竖轴选一个点,求最小和;

最小,就考虑最小割。

这个还是比较好想的,每根竖轴按从上到下的顺序,连出从S->T一条路径,把点权附到边上


最小割就相当于每条链选一条边切断,求和最小的方案

就等价于每根竖轴选一个点的最小和。


现在就要考虑限制条件了

对于一根竖轴,我们选了z,那么相邻的竖轴就必须选[z-d,z+d]

那么对应网络流的模型,我们要怎样修改原图才能使之满足条件?

就是该条路径选择割掉z这条边,那么"相邻的"路径就只能割[z-d,z+d]

这里还是卡了一下的

我们可以用一些inf的边来"屏蔽"那些不能割的边

其实只要从z向"相邻的"路径的z-d号点连inf的边即可

画图可得,这样做之后,如果删了这条边,我们还可以通过这些桥梁,从相邻的路径的一段[z-d,z+d]绕过

从而实现必须割[z-d,z+d]的目的

如果删去了z,这时我们再删p边,就还存在灰线所示的流,只有删去z-d到z+d的边才可以阻断它


一些注意事项:建图时为了方便,建出第0层的点,从S向它连inf的边,最后一层向T连边

读入有坑!先是PQR,读点权时又是RPQ....

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int maxn=45*45*45+10,maxm=300010,inf=1e9+7;
const int dx[]={1,0,-1,0,0};
const int dy[]={0,-1,0,1,0};
using namespace std;
int P,Q,R,D,pre[maxm],now[maxn],son[maxm],val[maxm],tot=1,S,T,v[45][45][45];
int dis[maxn],q[maxm+10],head,tail,ans;
int enc(int a,int b,int c){return a*P*Q+b*Q+c;}
void ins(int a,int b,int c){pre[++tot]=now[a],now[a]=tot,son[tot]=b,val[tot]=c;}
void add(int a,int b,int c){ins(a,b,c),ins(b,a,0);}
void init(){
	scanf("%d%d%d%d",&P,&Q,&R,&D),S=maxn-2,T=maxn-1;
	for (int i=1;i<=R;i++) for (int j=1;j<=P;j++) for (int k=1;k<=Q;k++) scanf("%d",&v[i][j][k]);
	for (int j=1;j<=P;j++) for (int k=1;k<=Q;k++) add(S,enc(0,j,k),inf);
	for (int i=1;i<=R;i++) for (int j=1;j<=P;j++) for (int k=1;k<=Q;k++) add(enc(i-1,j,k),enc(i,j,k),v[i][j][k]);
	for (int j=1;j<=P;j++) for (int k=1;k<=Q;k++) add(enc(R,j,k),T,inf);
	for (int i=D;i<=R;i++) for (int j=1;j<=P;j++) for (int k=1;k<=Q;k++){
		for (int t=0;t<=4;t++){
			int nx=j+dx[t],ny=k+dy[t];
			if (nx<1||nx>P||ny<1||ny>Q) continue;
			add(enc(i,j,k),enc(i-D,nx,ny),inf);
		}
	}
}

bool bfs(){
	memset(dis,-1,sizeof(dis));
	q[tail=1]=S,dis[S]=0,head=0;
	while (head!=tail){
		if (++head>maxm) head=1;
		int x=q[head];
		for (int y=now[x];y;y=pre[y])
			if (dis[son[y]]==-1&&val[y]){
				if (++tail>maxm) tail=1;
				dis[son[y]]=dis[x]+1,q[tail]=son[y];
			}
	}
	return dis[T]>0;
}

int find(int x,int low){
	if (x==T) return low;
	int y,res=0;
	for (y=now[x];y;y=pre[y]){
		if (dis[son[y]]!=dis[x]+1||!val[y]) continue;
		int tmp=find(son[y],min(low,val[y]));
		res+=tmp,low-=tmp,val[y]-=tmp,val[y^1]+=tmp;
		if (!low) break;
	}
	if (!y) dis[x]=-1;
	return res;
}
void work(){while (bfs()) ans+=find(S,inf);printf("%d\n",ans);}

int main(){
	init(),work();
	return 0;
}


地平线旭日X3 安装xfce桌面+VNC查看USB摄像头 VNC是Virtual Network Computing的缩写,它是一种使用RFB(Remote Frame Buffer)协议的用于控制远程电脑的图形桌面分享系统。xfce桌面相比于GNOME桌面更加轻量,占用的资源更少,在没有GPU的设备上也可以运行(旭日的Desktop版本从外观上好像就是xfce桌面,具体没有尝试)。可以使用专用的VNC客户端连接到开发板,例如vnc viewer。板子默认带有openssh-server,因此,WiFi热点连接成功后,就可以使用ssh登录开发板了。 阅读详情

相关推荐

LVGL移植教程(正点原子)

学习正点原子LVGL移植教程,根据视频教程写的博客

papalila的博客 939

BZOJ3144: [Hnoi2013]切糕

BZOJ3144: [Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。 第二行有一个非负整数D,表示光滑性要求。 接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤P, 1≤y≤Q, 1≤z≤R)。100%的数据满足P,Q,R≤40,0≤D≤R,且给出的所有的不和谐...

weixin_30653097的博客 158

从BIN文件到可烧录程序:深入理解ADI DSP程序读取背后的原理与安全边界

本文深入探讨了ADI DSP程序从BIN文件到可烧录程序的转换原理与安全边界,详细解析了JTAG接口、仿真器工作流程及Flash存储结构。通过Visual DSP++工具,开发者可以理解程序读取的底层机制,同时强调了知识产权保护的重要性,为嵌入式开发提供了实用建议。

weixin_27956639的博客 263

[HNOI2013]切糕

[HNOI2013]切糕

Ironk的博客 437

STM32定时器ARR寄存器详解:从‘水桶接水’到精准测速,你的PWM和编码器都靠它

本文深入解析STM32定时器ARR寄存器的核心原理与应用技巧,从PWM波形生成到编码器测速实战。通过水桶模型和硬件本质的比喻,揭示ARR如何作为定时器的'心跳节拍器',并详细探讨其在动态调频、死区时间配置和高精度PWM中的关键作用。特别针对编码器模式下的ARR配置和溢出补偿算法进行优化建议,帮助工程师提升系统性能和实时性。

weixin_33734785的博客 379

国民技术N32G45X SysTick定时器实战:从1us到100ms的精准延迟实现(附完整代码)

本文详细解析了国民技术N32G45X芯片中SysTick定时器的工作原理,并提供了从1微秒到100毫秒的高精度延迟实现方案。通过对比官方库函数的局限性,文章重点介绍了无中断查询模式、时钟源选择策略以及完整的代码实现,帮助嵌入式开发者精准控制时序,适用于LED控制、软件模拟通信协议等多种实战场景。

weixin_29190573的博客 374

【题解】[HNOI2013] 切糕

sol: 比较难的网络流题目。 我们考虑,对于一个 (i,j) 的块拆分成 r 个串联,每个点向前一个连边,容量为 a[r][i][j] 。 那么选择一个点相当于割掉它面前的那条边。 以 v2 为例。假设选了 v2 点,那么 {p1,p2,p3} 是合法的。 为了保证割边在 {p1,p2,p3} 面前的边中,我们添加一条边: 当然 p2 同理也这样添。 最后网络流跑最小割即可。 #include<bits/stdc++.h> #define INF 0x3f3f3f3f using na.

cqbzlydd的博客 642

避坑指南:时间序列互相关分析(CCF)常见的5个误用场景

本文详细解析了时间序列互相关分析(CCF)中常见的5个误用场景,包括忽视平稳性检验、混淆同期相关与因果关联、误读滞后阶数、忽略自相关干扰以及样本量不足等问题。通过实际案例和技术建议,帮助数据分析师避免这些陷阱,确保CCF分析的准确性和可靠性。

weixin_29064009的博客 428

【BZOJ3144】[HNOI2013]切糕

【BZOJ3144】[HNOI2013]切糕 题面 题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B。出于美观考虑,小 A 希望切面能尽量光滑且和谐。于是她找到你,希望你能帮她找出最好的切割方案。 出于简便考虑,我们将切糕视作一个长 P、宽 Q、高 R 的长方体点阵。我们将位于第 z层中第 x 行、第 y 列上(1≤x≤P, 1≤...

163

软考嵌入式 第五讲 嵌入式Linux系统技术

5.1 inittab配置文件 Linux实时操作系统开机引导时首先启动内核,由内核检查和初始化硬件设备,载入设备的驱动程序模块,安装root文件系统,然后内核将启动一个名为init的进程,它是系统运行的第一个进程,进程号为1。在init运行完成并启动其他必要的后续进程后,系统开始运行,引导过程结束。 在任何时候,可以在文件inittab中添加新的记录项。重新检查inittab文件时,可以通过命令:init q/ Q使init进程立即重新读取并处理文件inittab。 5.1.1 inittab文件记录

Leon的博客 526

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

8.26华为OD机试真题 新系统 - 字符串回文判 (Java/Py/C/C++/Js/Go)

算法大师! 1230

BZOJ 3144: [Hnoi2013]切糕

3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 915  Solved: 511 [Submit][Status][Discuss] Description Input 第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。第二行有一个非负整数D,表示光滑性要求。接下来是R个P

蘑菇--走在通往梦想的道路上。 417

华为OD新系统机试真题 - API请求日志去重分析

华为OD新系统机试真题【API请求日志去重分析】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD4月15号机试真题【API请求日志去重分析】

qq_45776114的博客 914

BZOJ 3144: [Hnoi2013]切糕 题解

3144: [Hnoi2013]切糕Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1936 Solved: 1049DescriptionInput第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。第二行有一个非负整数D,表示光滑性要求。接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤P, 1≤y≤

Monica 640

WINCC7.3破解文件

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

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

bzoj 3144: [Hnoi2013]切糕 最小割

3144: [Hnoi2013]切糕 Time Limit:10 SecMemory Limit:128 MBSubmit:681Solved:375[Submit][Status] Description Input 第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。第二行有一个非负整数D,表示光滑性要求。接下来是R个P行Q列的...

alex151194310的博客 171

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[BZOJ3144][最小割]HNOI2013:切糕

BZOJ3144 要求每个竖着的列选一条边出来,而且选择的权值和最小,那就直接上最小割 具体的,我们把每一列的所有边依次连接成为一条s到t的路径,做最小割即可 考虑怎么满足d的限制,也就是选了一条边必须选与这列相邻的列的某个连续范围的边 那么就从这条边的两个端点分别连对应的可选区间的两端,这样就限制了最小割必须割选定范围内的边,否则就不能割开 Code: #include<bits/stdc...

romiqi 161

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

BZOJ 3144: [Hnoi2013]切糕 最小割

title BZOJ 3144 LUOGU 3227 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P、 宽Q、高R。第二行有一个非负整数D,表示光滑性要求。接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤P, 1≤y≤Q, 1≤z≤R)。 100%的数据满足P,Q,R≤40,0≤D≤R,且给出的所有的不和谐值不超过...

dilu0653的博客 168

BZOJ 3144: [Hnoi2013]切糕 [最小割]

3144: [Hnoi2013]切糕 题意:略 省选之前口胡过~ 每个点拆成r个点 题目要求 \[ \mid f(x,y) - f(x',y') \mid \le D \] 我们可以对每个点都考虑上界,这样其实也把下界考虑了 \((x,y,k)\)向\((x,y,k+1)\)连\(val(x,y,k)\)的边,向\((x,y,k-D)\)连inf #include <iostream&gt...

weixin_30533797的博客 73

[最小割] BZOJ 3144: [Hnoi2013]切糕

SolutionSolution建立超级源汇,超级源连到切糕的顶部,切糕的底部连到超级汇,流量无穷大。 对于(x,y,∗)(x,y,*)从上到下连边,这里的边就相当于原来要切的点,标上流量。 如果不考虑f(x,y)−f(x′,y′)≤Df(x,y)-f(x',y')\le D的话,最小割就是答案。 那么可以这么连。 如果选取的点不在区间[z−D,z+D][z-D,z+D]里就会存在无穷大

Vectorxj的博客 409
上一篇: bzoj3140: [Hnoi2013]消毒
下一篇: bzoj2733: [HNOI2012]永无乡
thy_asdf
博客等级 码龄12年 16粉丝 186原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值