3144:[HNOI2013]切糕 - BZOJ


var
map:array[..,-..]of longint;
dis,his,pre:array[..]of longint;
vh:array[..]of longint;
fx:array[-..]of longint;
a,b,c,d,flow:longint; procedure init;
var
i,j,k:longint;
begin
read(b,c,a,d);
for i:= to a do
for j:= to b do
for k:= to c do
begin
read(map[(i-)*b*c+(j-)*c+k,]);
if i>d then
begin
if k> then map[(i-)*b*c+(j-)*c+k,]:=;
if j> then map[(i-)*b*c+(j-)*c+k,]:=;
if k<c then map[(i-)*b*c+(j-)*c+k,]:=;
if j<b then map[(i-)*b*c+(j-)*c+k,]:=;
end;
end;
fx[]:=b*c;
fx[]:=-d*b*c-;
fx[]:=-d*b*c-c;
fx[]:=-d*b*c+;
fx[]:=-d*b*c+c;
for i:= to do
fx[-i]:=-fx[i];
end; function max(x,y:longint):longint;
begin
if x>y then exit(x);
exit(y);
end; procedure work;
var
i,j,aug,min:longint;
flag:boolean;
begin
vh[]:=a*b*c+;
i:=;
aug:=maxlongint;
while dis[]<=a*b*c+ do
begin
flag:=false;
his[i]:=aug;
if i= then
begin
for j:= to b*c do
if dis[]=dis[j]+ then
begin
flag:=true;
pre[j]:=-;
break;
end;
if flag then i:=j;
end
else
for j:=- to do
if i+fx[j]> then
if (map[i,j]>)and(dis[i]=dis[i+fx[j]]+) then
begin
flag:=true;
pre[i+fx[j]]:=-j;
if aug>map[i,j] then aug:=map[i,j];
inc(i,fx[j]);
if i>a*b*c then
begin
inc(flow,aug);
while i<> do
begin
inc(map[i,pre[i]],aug);
dec(map[max(i+fx[pre[i]],),-pre[i]],aug);
inc(i,fx[pre[i]]);
if i< then i:=;
end;
aug:=maxlongint;
end;
break;
end;
if flag then continue;
min:=a*b*c+;
if i= then
begin
for j:= to b*c do
if min>dis[j] then min:=dis[j];
end
else
for j:=- to do
if i+fx[j]> then
if (map[i,j]>)and(dis[i+fx[j]]<min) then min:=dis[i+fx[j]];
dec(vh[dis[i]]);
if vh[dis[i]]= then break;
dis[i]:=min+;
inc(vh[dis[i]]);
if i<> then
begin
inc(i,fx[pre[i]]);
if i< then i:=;
aug:=his[i];
end;
end;
write(flow);
end; begin
init;
work;
end.
3144:[HNOI2013]切糕 - BZOJ的更多相关文章
- BZOJ 3144: [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1495 Solved: 819[Submit][Status] ...
- bzoj 3144: [Hnoi2013]切糕 最小割
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 681 Solved: 375[Submit][Status] ...
- 【BZOJ 3144】 3144: [Hnoi2013]切糕 (最小割模型)
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1764 Solved: 965 Description Inp ...
- 3144: [Hnoi2013]切糕
3144: [Hnoi2013]切糕 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1526 Solved: 827[Submit][Status] ...
- [BZOJ 3144] [Hnoi2013] 切糕 【最小割】
题目链接:BZOJ - 3144 题目分析 题意:在 P * Q 的方格上填数字,可以填 [1, R] . 在 (x, y) 上填 z 会有 V[x][y][z] 的代价.限制:相邻两个格子填的数字的 ...
- BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)
题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$ ...
- 【BZOJ】3144: [Hnoi2013]切糕
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3144 MDZZ,不知道为什么被卡常数了/TAT(特判才过去的....论vector的危害性 ...
- 【刷题】BZOJ 3144 [Hnoi2013]切糕
Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x, ...
- bzoj 3144 [Hnoi2013]切糕——最小割
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3144 一根纵轴上切一个点,可以把一根纵轴上的点连成一串来体现.自己的写法是每个点连向前一个点 ...
随机推荐
- CSS之全屏背景图
吐槽啦:Yeah 明天就是国庆了o(* ̄▽ ̄*)o!哈哈,提前祝福各位园友国庆快乐.假期愉快.生活美满.天天开心!国庆我要回家一趟,把一些不用的东西带回家,走访一下亲朋好友,在家打几天酱油~~~ 言 ...
- Js中把JSON字符串转换为JSON对象(eval()、new Function())
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- js如何检测打开窗口是否存在的三个方法?
js打开窗口一般也就是使用window.open方法: win = window.open(CHILD_WINDOW_URL, CHILD_WINDOW_NAME, CHILD_WINDOW_ATTR ...
- 项目经理PPT演讲意见
1.语速 2.互动 3.平常语气,聊天的感觉去讲解 4.脱稿演讲,不要照着PPT读,PPT展示仅仅是一个重点提示,更多在于自己讲解 5.如果是验收等相关的内容,劲量多讲解用户能够得到的利益,如“钱” ...
- RSA 加解密
#region RSA public static byte[] GetBytes(String num) { BigInteger n = ); String s = n.ToString(); & ...
- (转)hessian源码分析(一)------架构
在计费中心的对外交互这块采用了hessian,有必要对hessian的运行机理和源码做一定的解析. 大致翻了翻源码后,发现hessian的主要结构分客户端与服务端,中间基于http传输.客户端主要做的 ...
- 10款精美的HTML5表单登录联系和搜索表单
1.HTML5/CSS3仿Facebook登录表单 这款纯CSS3发光登录表单更是绚丽多彩.今天我们要分享一款仿Facebook的登录表单,无论从外观还是功能上说,这款登录表单还是挺接近Faceboo ...
- js中字符和数组一些基本算法题
最近在刷 fcc的题,跟升级打怪一样,一关一关的过,还挺吸引我的.今天抽时间把 Basic Algorithm Scritping 这部分题做了,根据一些提示,还是比较简单的.有些题的处理方式 方法 ...
- Java 字符流实现文件读写操作(FileReader-FileWriter)
Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...
- 济南学习 Day 2 T3 am
[问题描述]m× m的方阵上有n棵葱,你要修一些栅栏把它们围起来.一个栅栏是一段沿着网格建造的封闭图形(即要围成一圈) .各个栅栏之间应该不相交.不重叠且互相不包含.如果你最多修k个栅栏,那么所有栅栏 ...