BZOJ3144: [Hnoi2013]切糕

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3144

把每一条z轴都拿出来,s->(x,y,1),c=f[x][y][1];(x,y,k)->(x,y,k+1),c=f[x][y][k];(x,y,r)->t,c=inf

然后对于四联通的点,(x,y,z)->(x',y’,z-d)

似乎这叫经典的最小割模型?

#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<iostream>
#include<queue>
#define rep(i,l,r) for (int i=l;i<=r;i++)
#define down(i,l,r) for (int i=l;i>=r;i--)
#define clr(x,y) memset(x,y,sizeof(x))
#define maxn 100050
#define ll long long
#define inf int(1e9)
#define eps 1e-6
using namespace std;
struct data{int obj,pre,c;
}e[1000500];
int n,tot=1,m,r,t,d,f[45][45][45],uu[maxn];
int head[maxn],cur[maxn],dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
int read(){int x=0,f=1; char ch=getchar();while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}while (isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}return x*f;
}
int p(int x,int y,int z){if (z==0) return 0;return (z-1)*n*m+(x-1)*m+y;
}
void insert(int x,int y,int z){e[++tot].obj=y; e[tot].pre=head[x]; e[tot].c=z; head[x]=tot;e[++tot].obj=x; e[tot].pre=head[y]; e[tot].c=0; head[y]=tot;
}
bool jud(int x,int y){if (x<1||y<1||x>n||y>m) return 0;return 1;
}
void build(){rep(i,1,n) rep(j,1,m){rep(k,1,r) insert(p(i,j,k-1),p(i,j,k),f[i][j][k]); insert(p(i,j,r),t,inf);rep(k,0,3){int x=i+dx[k],y=j+dy[k];if (jud(x,y)) rep(o,d+1,r) insert(p(i,j,o),p(x,y,o-d),inf);}}   
}
bool bfs(){queue<int >q;clr(uu,-1); q.push(0); uu[0]=0; while (!q.empty()){int u=q.front(); q.pop();for (int j=head[u];j;j=e[j].pre){int v=e[j].obj;if (uu[v]==-1&&e[j].c){uu[v]=uu[u]+1;q.push(v);}}}if (uu[t]==-1) return 0;return 1;
}
int dfs(int x,int mx){if (x==t) return mx;int used=0;for (int j=cur[x];j;j=e[j].pre){int v=e[j].obj;if (uu[v]==uu[x]+1){int w=dfs(v,min(e[j].c,mx-used));used+=w; e[j].c-=w; e[j^1].c+=w;if (e[j].c) cur[x]=j;if (used==mx) return mx; }}if (!used) uu[x]=-1;return used;
}
int dinic(){int ans=0;while (bfs()){rep(i,0,t) cur[i]=head[i];ans+=dfs(0,inf);}return ans;
}
int main(){n=read(); m=read(); r=read(); t=n*m*r+1;d=read();rep(i,1,r)rep(j,1,n) rep(k,1,m) f[j][k][i]=read();build();printf("%d\n",dinic()); return 0;
}

 

转载于:https://www.cnblogs.com/ctlchild/p/5020142.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/272664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通俗地解释 C、C++、C#、Java、JavaScript、HTML、Python的用处

世界上本来没有计算机&#xff0c;工程师创造了它。为了让告诉计算机需要做什么事情&#xff0c;工程师发明了程序设计语言。简单粗暴的编程&#xff1a;C语言&#xff1a;用来学编程&#xff1b;C语言&#xff1a;用来使劲儿学编程&#xff1b;C#&#xff1a;用来在windows操作…

安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链

本文主要介绍使用Android NDK生成独立交叉编译链&#xff0c;然后使用独立交叉编译链编译Android程序下载NDK下载与自己操作系统相吻合的版本 下载地址解压到安装目录(如~/myndk):tar -zxvf android-ndk-r14b-linux-x86_64将NDK的根目录生成一个环境变量打开~/.bashrcw文件&…

数据结构——各排序算法的比较

1.从时间复杂度比较   从平均时间复杂度来考虑&#xff0c;直接插入排序、冒泡排序、直接选择排序是三种简单的排序方法&#xff0c;时间复杂度都为O(n2)&#xff0c;而快速排序、堆排序、二路归并排序的时间复杂度都为O(nlog2n)&#xff0c;希尔排序的复杂度介于这两者之间。…

将c程序移植到linux,各位大侠:我把原来在linux运行的c程序移植到HPUNIX上出现了错误...

各位大侠&#xff1a;我把原来在linux运行的c程序移植到HPUNIX上出现了错误(2012-04-11 00:43:47)标签&#xff1a;linuxc程序杂谈各位大侠&#xff1a;我把原来在linux运行的c程序移植到HP_UNIX上出现了错误makefileCC aCC -AA W829 DD64 DAportable-I/ods/app/oracle/produc…

数据库学习建议之提高数据库速度的十条建议

很多网站的重要信息都是保存在数据库中的&#xff0c;用户通过提交访问数据库来获取用户信息。如果数据库速度非常的快&#xff0c;有助于节省服务器的资源&#xff0c;在这篇文章中&#xff0c;我收集了十个优化数据库速度的技巧。0. 小心设计数据库第一个技巧也许看来理所当然…

Java中数据类型的取值范围

整数数据类型的取值范围 我们都知道计算机的底层是二进制&#xff0c;也知道不同的整数类型存储值的范围不同&#xff0c;可这些数值在计算机底层是怎样存储的呢&#xff1f;数值范围又是怎么计算出来的呢&#xff1f; 下面以java来进行举例&#xff1a; byte 1个字节 (8bit…

linux的cpu信息怎么理解,理解Linux下的CPU信息:lscpu cpuinfo

通过lscpu命令&#xff0c;可以看到CPU的一些基本信息。如下所示&#xff0c;可以很清楚的看到这台服务器使用两个物理socket&#xff0c;每个socket上有6个core&#xff0c;每个core上有两个线程(超线程)&#xff0c;所以一共有2 * 6 * 2 24个逻辑CPU。Architecture: x86_64C…

如何降低SQL语句复杂度

SQL语句复杂度的优化就是在结果正确的前提下&#xff0c;将复杂、难以维护的SQL语句拆分成独立、易懂的SQL片段&#xff0c;当然也要充份利用索引&#xff0c;减少表描的I/O次数&#xff0c;尽量避免表搜索的发生。下面介绍降低SQL语句复杂度的几个建议1、动态查询语句一些应用…

提高程序员工作效率的11个技巧

“吃苦耐劳”真的是优良品质吗&#xff0c;与你怎么做相比&#xff0c;老板们应该更关心你做了什么、达到的效果。所以&#xff0c;效率&#xff0c;还是效率&#xff0c;希望这些实用小技巧对大家有所帮助。1、两分钟法则如果一件事可以在两分钟内完成&#xff0c;比如回复邮件…

tq3358 linux 串口驱动编程,TQ335x——spidev驱动的生成

kernel&#xff1a;CD盘的kernel3.2包环境&#xff1a;vmware10&#xff0c;ubuntu14.04修改的部分&#xff1a;arch/arm/mach-omap2/board-am335xevm.c文件中static struct spi_board_info am335x_spi1_slave_info[] {{.modalias "smb380",.platform_data &A…

Linux下显示ip所属位置

在linux下&#xff0c;要是网络出现延迟&#xff0c;通常我们需要分析自己到对端的服务器的网络环境 1 例&#xff1a;ping www.baidu.com 2 traceroute www.baidu.com 通过分析来确定大概是什么问题&#xff0c;可当我们去跟踪某个ip的时候不知道来源&#xff0c;假如每一个…

C#程序集相关的概念

程序集包含&#xff1a;类型元数据&#xff08;描述在代码中定义的每一类型和成员&#xff0c;二进制形式&#xff09;。程集元数据&#xff08;程序集清单、版本号、名称等&#xff09;、IL代码&#xff08;这些都被装在exe或dll中&#xff09;、资源文件。每个程序集都有自己…

linux+删除乱码的文件,linux 下删除乱码文件-乾颐堂

在linux下删除文件&#xff0c;遇到特殊字符是一件非常头疼的事情。1. 如果文件名带 ‘-’ 或者‘--’这样的字符删除办法为&#xff1a;rm -- 文件名如文件名为&#xff1a;-pythontab.tgz如果用普通方法去删除&#xff1a;1rm -pythontab.tgz结果错误&#xff1a;rm: invalid…

程序员如何保护自己的颈椎

我们程序员天天对着电脑&#xff0c;眼睛&#xff0c;颈椎等等&#xff0c;都会落下不少的职业病。来说说怎么治疗自己的颈椎病。1、颈椎病是怎么产生的形成颈椎病的核心原因是&#xff1a;不良生活习惯我们身体的绝大部分疾病都是来自不良的生活习惯&#xff0c;生活习惯不改&…

如何改变XCode的默认设置

改变bundle ID 进入 /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Project Templates/Application 目录然后进入各个子目录(Navigation-based ApplicationOpenGL ES ApplicationSplit View-based ApplicationTab Bar ApplicationUtility ApplicationView-b…

linux关机时循环输出脚本,Linux关机时执行指定脚本功能实现

1.关机时执行某个脚本的具体思路(1)在文件夹/etc/init.d/下创建关机时需要执行的脚本file_name&#xff1b;(2)分别在文件夹/etc/rc0.d/和/etc/rc6.d/下创建该该脚本文件的链接文件K07file_name&#xff1a;sudo ln -s /etc/init.d/file_name /etc/rc0.d/K07file_namesudo ln -…

URI和URL及URN的区别

对于URL,大家都比较熟悉&#xff0c;其他两个词就比较陌生了。URI、URL和URN是识别、定位和命名互联网上的资源的标准途径。1989年Tim Berners-Lee发明了互联网&#xff08;World Wide Web&#xff09;。WWW被认为是全球互连的实际的和抽象的资源的集合–它按需求提供信息实体–…

Linux基础-目录与路径

今天我们一起来认识下linux中的目录与路径及操作其的一些常用命令。 说起路径就有绝对与相对之分&#xff0c;虽然简单&#xff0c;我们还是再啰嗦一下&#xff1a; 绝对路径&#xff0c;从系统的根目录/开始的目录都是相对路径&#xff0c;比如/usr/bin、/usr/local 相对路径…

螺旋图形Linux,Canvas 螺旋线几何图形绘制

JavaScript语言&#xff1a;JaveScriptBabelCoffeeScript确定window.requestAnimFrame (function() {return window.requestAnimationFrame ||window.webkitRequestAnimationFrame ||window.mozRequestAnimationFrame ||window.oRequestAnimationFrame ||window.msRequestAnim…

28家知名IT公司名称的由来

28家IT公司名称由来&#xff0c;你知道吗&#xff1f;EMC、VMware、IBM、Oracle、NetApp、Citrix、Cisco、Google、Amazon、Alibaba、UCloud、Tencent、Baidu等著名的存储、备份或云计算行业的IT公司&#xff0c;相信你我都是耳熟能详&#xff0c;但这些公司的名称是如何而来的…