bzoj 3144 切糕 —— 最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3144
每个点拆成 R 个,连成一条链,边上是权值,割掉代表选这一层;
然后每个点的第 t 层向四周的点的第 t-d 层连边,就能达到选了第 i 条边,则四周的点必须选 i-d ~ T 范围的边,而对方反过来一连,就限制在 i-d ~ i+d 了;
竟然因为忘记 ct=1 而调了一小时呵呵...
代码如下:
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<queue>
- using namespace std;
- int const xn=,xm=xn*,inf=1e9;
- int n,m,H,hd[xn],ct=,to[xm],nxt[xm],c[xm],dis[xn],cur[xn],S,T;
- queue<int>q;
- int rd()
- {
- int ret=,f=; char ch=getchar();
- while(ch<''||ch>''){if(ch=='-')f=; ch=getchar();}
- while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
- return f?ret:-ret;
- }
- void ade(int x,int y,int z){to[++ct]=y; nxt[ct]=hd[x]; hd[x]=ct; c[ct]=z;}
- void add(int x,int y,int z){ade(x,y,z); ade(y,x,);}
- int id(int x,int y,int k){return ((x-)*m+y-)*H+k;}
- bool bfs()
- {
- for(int i=S;i<=T;i++)dis[i]=;
- dis[S]=; q.push(S);
- while(q.size())
- {
- int x=q.front(); q.pop();
- for(int i=hd[x],u;i;i=nxt[i])
- if(!dis[u=to[i]]&&c[i])dis[u]=dis[x]+,q.push(u);
- }
- return dis[T];
- }
- int dfs(int x,int fl)
- {
- if(x==T)return fl;
- int ret=;
- for(int &i=cur[x],u;i;i=nxt[i])
- {
- if(dis[u=to[i]]!=dis[x]+||!c[i])continue;
- int tmp=dfs(u,min(fl-ret,c[i]));
- if(!tmp)dis[u]=;
- c[i]-=tmp; c[i^]+=tmp;
- ret+=tmp; if(ret==fl)break;
- }
- return ret;
- }
- int main()
- {
- n=rd(); m=rd(); H=rd(); int d=rd(); S=; T=n*m*H+;
- for(int t=;t<=H;t++)
- for(int i=;i<=n;i++)
- for(int j=,x;j<=m;j++)
- {
- x=rd(); int nw=id(i,j,t);
- if(t==)add(S,nw,x); else add(id(i,j,t-),nw,x);
- if(t==H)add(nw,T,inf);
- if(t<=d)continue; int k=t-d;//
- if(i>)add(nw,id(i-,j,k),inf);
- if(j>)add(nw,id(i,j-,k),inf);
- if(i<n)add(nw,id(i+,j,k),inf);
- if(j<m)add(nw,id(i,j+,k),inf);
- }
- int ans=;
- while(bfs())
- {
- memcpy(cur,hd,sizeof hd);
- ans+=dfs(S,inf);
- }
- printf("%d\n",ans);
- return ;
- }
bzoj 3144 切糕 —— 最小割的更多相关文章
- BZOJ 3144 切糕 最小割
题意: 一个矩阵,每个格子分配一个数,不同的数字,代价不同,要求相邻格子数字差小等于d 求最小代价. 分析: 我猜肯定有人看题目就想到最小割了,然后一看题面理科否决了自己的这个想法…… 没错,就是最小 ...
- bzoj3144 [HNOI2013]切糕(最小割)
bzoj3144 [HNOI2013]切糕(最小割) bzoj Luogu 题面描述见上 题解时间 一开始我真就把这玩意所说的切面当成了平面来做的 事实上只是说相邻的切点高度差都不超过 $ d $ 对 ...
- bzoj 3144: [Hnoi2013]切糕 最小割
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 681 Solved: 375[Submit][Status] ...
- BZOJ 3144 切糕(最小割)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=3144 题意: 思路:我们假设没有那个D的限制.这样就简 单了.贪心的话,我们只要在每一个 ...
- 【BZOJ-3144】切糕 最小割-最大流
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1261 Solved: 700[Submit][Status] ...
- [BZOJ 3144] 切糕
Link: BZOJ 3144 传送门 Solution: 发现要把点集分成不连通的两部分,最小割的模型还是很明显的 首先我们将原图转化为$R+1$层,从而将点权化为边权 关键还是在于建图是怎么保证$ ...
- BZOJ3144[Hnoi2013]切糕——最小割
题目描述 输入 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x,y,z) (1≤x≤ ...
- 【BZOJ3144】[Hnoi2013]切糕 最小割
[BZOJ3144][Hnoi2013]切糕 Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q ...
- spoj 839 OPTM - Optimal Marks&&bzoj 2400【最小割】
因为是异或运算,所以考虑对每一位操作.对于所有已知mark的点,mark的当前位为1则连接(s,i,inf),否则连(i,t,inf),然后其他的边按照原图连(u,v,1),(v,u,1),跑最大流求 ...
随机推荐
- php数据类型的true和false
- nginx + uWSGI 为 django 提供高并发
django 的并发能力真的是令人担忧,这里就使用 nginx + uwsgi 提供高并发 nginx 的并发能力超高,单台并发能力过万(这个也不是绝对),在纯静态的 web 服务中更是突出其优越的地 ...
- unix网络编程笔记(二)
第四章笔记 1. 基本Tcpclient/server程序的套接字函数 2. socket函数: int socket(int family,int type,int protocol); (1)so ...
- php7下 xhprof安装与使用
需要测试下 代码的性能,使用了 xhprof + xhgui 1. 下载xhprof, 这里下载吧 :https://github.com/longxinH/xhprof.git 2, 安装 cd x ...
- Android Studio support 26.0.0-alpha1 Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方法
AS下如何生成自定义的.jks签名文件, 以及如何生成数字签名 链接:http://www.cnblogs.com/smyhvae/p/4456420.html 链接:http://blog.csdn ...
- 深入理解利用new创建对象的执行过程以Person p=new Person("张三",20);为例
代码如下: class Person { private String name="haha"; private int age; private static String co ...
- 【DP】最长不下降子序列问题(二分)
Description 给你一个长度为n的整数序列,按从左往右的顺序选择尽量多的数字并且满足这些数字不下降. Thinking 朴素dp算法:F[i]表示到第i位为止的最长不下降子序列长度 F[i]= ...
- HTTPS协议原理透析
1.HTTPS本身并非协议,而是标准的HTTP协议架在SSL/TLS协议之上的一种结构.(一种不太合适的说法可以认为是两种协议的叠加).HTTP是工作在OSI7层模型的最上层,就是第7层:Applic ...
- NetBeans字体设置
01.找到自己java字体目录.我的目录是[C:\Program Files\Java\jdk1.7.0_21\jre\lib] 02.复制fontconfig.properties.src, 重命名 ...
- Android平台及其架构(部分转载)
一.Android的系统架构 1. 应用程序 同Android系统一起发布的核心应用程序,如email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等. 这些应用程序都是用 ...