【bzoj1066】: [SCOI2007]蜥蜴

把石柱拆点,流量为高度

然后S与蜥蜴连流量1的边

互相能跳到的石柱连inf的边

石柱能到边界外的和T连inf的边

然后跑dinic就好了

 /* http://www.cnblogs.com/karl07/ */
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
using namespace std;
const int N=;
const int inf=1e9;
struct edge{
int next,to,c;
}e[N+];
int ade=,S=,T=,n,m,c,d,CNT=;
int first[N+],dis[N+],now[N+],mp[][],I[][],O[][];
queue <int> Q; void addedge(int x,int y,int cap){
e[++ade].next=first[x];
e[ade].to=y;
e[ade].c=cap;
first[x]=ade;
e[++ade].next=first[y];
e[ade].to=x;
e[ade].c=;
first[y]=ade;
} #define s e[x].to
#define cap e[x].c
#define CAP e[x^1].c
bool bfs(){
for (int i=;i<=CNT;i++) dis[i]=inf;
Q.push(S);
dis[S]=;
while (!Q.empty()){
int p=Q.front();
Q.pop();
for (int x=first[p];x;x=e[x].next){
if (dis[s]>dis[p]+ && cap>){
Q.push(s);
dis[s]=dis[p]+;
}
}
}
return dis[T]!=inf;
} int dfs(int p,int mf){
if (p==T) return mf;
for (int x=now[p];x;x=e[x].next){
now[p]=x;
if (dis[s]==dis[p]+ && cap>){
int f=dfs(s,min(mf,cap));
if (f){
cap-=f;
CAP+=f;
return f;
}
}
}
return ;
}
#undef s
#undef cap
#undef CAP int dinic(){
int ans=,f;
while (bfs()){
for (int i=;i<=CNT;i++) now[i]=first[i];
while (f=dfs(S,inf)){
ans+=f;
}
}
return ans;
} void make_p(){
for (int i=;i<=n;i++){
for (int j=;j<=m;j++){
if (mp[i][j]){
addedge(I[i][j],O[i][j],mp[i][j]);
for (int x=i-d;x<=i+d;x++){
for (int y=j-d;y<=j+d;y++){
if (abs(i-x)+abs(j-y)>d) continue;
if (x< || x>n || y< || y>m) {addedge(O[i][j],T,inf); continue;}
if (mp[x][y] && (x!=i || y!=j)){addedge (O[i][j],I[x][y],inf); }
}
}
}
}
}
} int main(){
scanf("%d%d%d",&n,&m,&d);
for (int i=;i<=n;i++){
char s[];
scanf("%s",s+);
for (int j=;j<=m;j++){
mp[i][j]=s[j]-'';
if (mp[i][j]) I[i][j]=++CNT,O[i][j]=++CNT;
}
}
make_p();
for (int i=;i<=n;i++){
char s[];
scanf("%s",s+);
for (int j=;j<=m;j++){
if (s[j]=='L'){
addedge(S,I[i][j],);
c++;
}
}
}
printf("%d\n",c-dinic());
return ;
}

【bzoj1066】: [SCOI2007]蜥蜴 图论-最大流的更多相关文章

  1. bzoj1066: [SCOI2007]蜥蜴(最大流)

    1066: [SCOI2007]蜥蜴 题目:传送门 题解: 哇QTT大佬一眼秒算法...ORT 其实很容易就可以看出来是一道最大流 因为有边的使用限制,那么就可以直接当成是流量来处理嘛 因为是对点进行 ...

  2. BZOJ1066 [SCOI2007]蜥蜴 网络流 最大流 SAP

    由于本题和HDU2732几乎相同,所以读者可以看-> HDU2732题解传送门: http://www.cnblogs.com/zhouzhendong/p/8362002.html

  3. BZOJ1066 SCOI2007 蜥蜴 【网络流-最大流】

    BZOJ1066 SCOI2007 蜥蜴 Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离 ...

  4. 【bzoj1066】[SCOI2007]蜥蜴 网络最大流

    [bzoj1066][SCOI2007]蜥蜴 Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的 ...

  5. P2472 [SCOI2007]蜥蜴(最大流)

    P2472 [SCOI2007]蜥蜴 自己第一道独立做题且一遍AC的网络流题纪念... 看到这道题我就想到网络流建图的方式了... 首先根据每个高度,我们将每个点拆成两个点限流.之后根据跳的最大距离, ...

  6. bzoj千题计划135:bzoj1066: [SCOI2007]蜥蜴

    http://www.lydsy.com/JudgeOnline/problem.php?id=1066 每个柱子拆成两个点 i<<1,i<<1|1,之间连流量为高度的边 如果 ...

  7. 【BZOJ】1066: [SCOI2007]蜥蜴(最大流)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1066 本题想一想应该懂了的. 我们想啊,,每个点都有限制,每个点都可以跳到另一个有限制的点,每个有蜥 ...

  8. BZOJ1066 [SCOI2007]蜥蜴

    首先...这是道(很水的)网络流 我们发现"每个时刻不能有两个蜥蜴在同一个柱子上"这个条件是没有用的因为可以让外面的先跳,再让里面的往外跳 但是还有柱子高度的限制,于是把柱子拆点为 ...

  9. [BZOJ 1066] [SCOI2007] 蜥蜴 【最大流】

    题目链接:BZOJ - 1066 题目分析 题目限制了高度为 x 的石柱最多可以有 x 只蜥蜴从上面跳起,那么就可以用网络流中的边的容量来限制.我们把每个石柱看作一个点,每个点拆成 i1, i2,从 ...

随机推荐

  1. 如何正确且成功破解跨平台数据库管理工具DbVisualizer?(图文详解)

    前期博客 基于JDBC的跨平台数据库管理工具DbVisualizer安装步骤(图文详解)(博主推荐) 上图,所示,说明这个还只是免费版而已,没又破解为Pro版本. 接下来,就是带领大家如何正确且成功破 ...

  2. “Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle)instead”

    “Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(B ...

  3. 转&nbsp;-ALSA&nbsp;配置

    原文地址:-ALSA 配置">转 -ALSA 配置作者:超级大苹果 alsa 音频路径的问题: 在sound/soc/codecs目录中有很多音频codec的codec驱动,我使用的是 ...

  4. linux进行Java开发环境的部署

    一.前言: 今天正式向linux开发进攻了,其中遇到一些问题简单的记录一下,为之后的再次部署提供方便. 二.linux的Java8安装的两种方法: 1.源安装很简单,一个命令搞定. sudo apt- ...

  5. Collection Types

    [Collection Types] 1.Arrays store ordered lists of values of the same type. Value必须是同一类型. 2.Array的原型 ...

  6. omitTermFreqAndPositions设置,词频FQ在打分中默认为1

    compressed=true|false,是否使用gzip压缩(只有TextField和StrField可以压缩) compressThreshold=压缩阀值 multiValued=true|f ...

  7. 【HDU6026】Deleting Edges

    题意 有一个n个节点的无向图,结点编号从0-n-1,每条边的长度时1to9的一个正整数.现在要删除一些边(或者不删),使得到的新图满足下面两个要求. 1.新图是一颗树有n-1条边2.对于每个结点v(0 ...

  8. c++ 组合模式(composite)

    原文地址:http://www.cnblogs.com/jiese/p/3168844.html 当你发现需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用 ...

  9. DEDE 5.7中各函数所在的文件和位置

    /include/taglib/tag.lib.php 2 //function GetTags()/include/payment/yeepay.php 415 function log_resul ...

  10. SpringBoot22 Ajax跨域、SpringBoot返回JSONP、CSRF、CORS

    1 扫盲知识 1.1 Ajax为什么存在跨域问题 因为浏览器处于安全性的考虑不允许JS执行跨域请求. 1.2 浏览器为什么要限制JS的跨域访问 如果浏览器允许JS的跨域请求就很容易造成 CSRF (C ...