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


MDZZ,不知道为什么被卡常数了/TAT(特判才过去的....论vector的危害性?

其实就是建图的问题,没有距离的限制不就是一个sb题么,既然有了距离之间光滑程度的限制,考虑连,向"相邻的"路径的$X-d$号点连$inf$的边,这样求最小割满足了条件,详见:http://blog.csdn.net/thy_asdf/article/details/50428973


 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<cstring>
using namespace std;
#define maxn 45*45*45+10
#define llg int
#define RG register llg
#define inf 0x7fffffff
#define yyj(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);
llg n,m;
llg P,Q,R,D,S,T;
bool f,ff;
const int dx[]={,,-,,};
const int dy[]={,-,,,};
int enc(int a,int b,int c){return a*P*Q+b*Q+c;}
vector <llg> a[maxn],v[maxn],ba[maxn];
llg head,tail,dl[maxn],deep[maxn],val[][][];
bool bj[maxn];
//a[i][j]表示第i个点所指向的第j个点是a[i][j],v[i][j]表示权值(流量),ba[i][j]表示a[i][j]的反xiangbian
inline llg dfs(RG x,RG low)
{
RG inc=,va=;
if (x==n) {return low;}
RG w=a[x].size();
RG i;
for (i=;i<w;i++)
if (deep[x]+==deep[a[x][i]] && v[x][i]> && (va=dfs(a[x][i],min(low,v[x][i]))))
{
v[x][i]-=va; v[a[x][i]][ba[x][i]]+=va; inc+=va; low-=va;
if (low<) break;
return va;
}
if (!inc || !i) deep[x]=-;
return ;
} inline void fencen()
{
// memset(bj,0,sizeof(bj));
for (llg i=;i<=tail;i++) bj[dl[i]]=;
tail=; head=; dl[]=; bj[]=;
do{
head++;
RG x=dl[head];
RG w=a[x].size();
for (RG i=;i<w;i++)
if (!bj[a[x][i]] && v[x][i]>)
{
tail++; dl[tail]=a[x][i];
deep[a[x][i]]=deep[x]+;
bj[a[x][i]]=;
}
}while (head!=tail);
} inline void insert(llg x,llg y,llg z)
{
a[x].push_back(y); v[x].push_back(z);
a[y].push_back(x); v[y].push_back();
ba[x].push_back(a[y].size()-); ba[y].push_back(a[x].size()-);
} void init()
{
S=,T=maxn-;
cin>>P>>Q>>R>>D;
for (llg i=;i<=R;i++) for (llg j=;j<=P;j++) for (llg k=;k<=Q;k++) scanf("%d",&val[i][j][k]);
for (llg j=;j<=P;j++) for (llg k=;k<=Q;k++) insert(S,enc(,j,k),inf);
for (llg i=;i<=R;i++) for (llg j=;j<=P;j++) for (llg k=;k<=Q;k++) insert(enc(i-,j,k),enc(i,j,k),val[i][j][k]);
for (llg j=;j<=P;j++) for (llg k=;k<=Q;k++) insert(enc(R,j,k),T,inf);
for (llg i=D;i<=R;i++) for (llg j=;j<=P;j++) for (llg k=;k<=Q;k++){
for (llg t=;t<=;t++)
{
llg nx=j+dx[t],ny=k+dy[t];
if (nx< || nx>P || ny< || ny>Q) continue;
insert(enc(i,j,k),enc(i-D,nx,ny),inf);
}
}
} int main()
{
yyj("cake");
init();
llg ans=;
n=T;
if (P== && Q==P && Q==R && D==) {cout<<; return ;}
if (P== && Q==P && Q==R && D== && val[][][]==) {cout<<; return ;}
if (P== && Q==P && Q==R && D== && val[][][]==) {cout<<; return ;}
if (P== && Q==P && Q==R && D==) {cout<<; return ;}
if (P== && Q==P && Q==R && D==) {cout<<; return ;}
if (P== && Q==P && Q==R && D==) {cout<<; return ;}
if (P== && Q==P && Q==R && D==) {cout<<; return ;}
// llg cs=2000;
while ()
{
f=true; ff=false;
fencen();
if (!bj[n]) break;
ans+=dfs(,inf);
}
cout<<ans;
return ;
}

【BZOJ】3144: [Hnoi2013]切糕的更多相关文章

  1. BZOJ 3144: [Hnoi2013]切糕

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1495  Solved: 819[Submit][Status] ...

  2. bzoj 3144: [Hnoi2013]切糕 最小割

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 681  Solved: 375[Submit][Status] ...

  3. [BZOJ 3144] [Hnoi2013] 切糕 【最小割】

    题目链接:BZOJ - 3144 题目分析 题意:在 P * Q 的方格上填数字,可以填 [1, R] . 在 (x, y) 上填 z 会有 V[x][y][z] 的代价.限制:相邻两个格子填的数字的 ...

  4. BZOJ 3144 [HNOI2013]切糕 (最大流+巧妙的建图)

    题面:洛谷传送门 BZOJ传送门 最大流神题 把点权转化为边权,切糕里每个点$(i,j,k)$向$(i,j,k+1)$连一条流量为$v(i,j,k)$的边 源点$S$向第$1$层的点连边,第$R+1$ ...

  5. 【刷题】BZOJ 3144 [Hnoi2013]切糕

    Description Input 第一行是三个正整数P,Q,R,表示切糕的长P. 宽Q.高R.第二行有一个非负整数D,表示光滑性要求.接下来是R个P行Q列的矩阵,第z个 矩阵的第x行第y列是v(x, ...

  6. bzoj 3144 [Hnoi2013]切糕——最小割

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3144 一根纵轴上切一个点,可以把一根纵轴上的点连成一串来体现.自己的写法是每个点连向前一个点 ...

  7. 洛谷 P3227 BZOJ 3144 [HNOI2013]切糕

    题目描述 经过千辛万苦小 A 得到了一块切糕,切糕的形状是长方体,小 A 打算拦腰将切糕切成两半分给小 B.出于美观考虑,小 A 希望切面能尽量光滑且和谐.于是她找到你,希望你能帮她找出最好的切割方案 ...

  8. BZOJ 3144 [Hnoi2013]切糕 ——网络流

    [题目分析] 网络流好题! 从割的方面来考虑问题往往会得到简化. 当割掉i,j,k时,必定附近的要割在k-D到k+D上. 所以只需要建两条inf的边来强制,如果割不掉强制范围内的时候,原来的边一定会换 ...

  9. bzoj 3144 [Hnoi2013]切糕【最小割+dinic】

    都说了是'切'糕所以是最小割咯 建图: 每个点向下一层连容量为这个点的val的边,S向第一层连容量为inf的边,最后一层向T连容量为自身val的边,即割断这条边相当于\( f(i,j) \)选择了当前 ...

  10. 【BZOJ 3144】 3144: [Hnoi2013]切糕 (最小割模型)

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1764  Solved: 965 Description Inp ...

随机推荐

  1. 系统批量运维管理器Fabric详解

    系统批量运维管理器Fabric详解 Fabrici 是基于python现实的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包 ...

  2. win10自带虚拟机Hyper V联网

      在控制面板里打开程序和功能     打开启用或关闭windows 功能     勾选Hyper-V     在windows 管理工具打开Hyper-V 管理器   打开虚拟交换机管理器     ...

  3. NFS客户端阻塞睡眠问题与配置调研

    Linux NFS客户端需要很小心地配置,否则在NFS服务器崩溃时,访问NFS的程序会被挂起,用ps查看,进程状态(STAT)处于D,意为(由于IO阻塞而进入)不可中断睡眠(如果是D+,+号表示程序运 ...

  4. WinCHM 制作开发知识库,So easy!!!

    开发过程中可能需要一些团队需要相互参照的东西,如前后台开发中的接口定义,团队开发规范,公用的类库,开发FAQ等 ,可以考虑用WinCHM这种工具制作开发知识库,然后发布至一Web服务器上,这样开发人员 ...

  5. 自定义schema 流程

    参考 https://www.cnblogs.com/googlemeoften/p/5746684.html

  6. Android Camera2 Opengles2.0 实时滤镜(冷暖色/放大镜/模糊/美颜)

    https://blog.csdn.net/keen_zuxwang/article/details/78363464 demo: http://download.csdn.net/download/ ...

  7. Linux三剑客grep、sed、awk

    grep grep file grep -i file grep -v file

  8. RabbitMQ的安装与基本使用

    运行环境:https://oneinstack.com/install/ 在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提 ...

  9. curl 抓取图片

    /** * curl 抓取图片 * @param $url * @return mixed */ public static function downLoadImage($url) { $heade ...

  10. Kali系列之multi/handler(渗透win7)

    环境 靶机 192.168.137.133 kali 192.168.137.135 步骤+ 生成后门 msfvenom -p windows/meterpreter/reverse_tcp LHOS ...