【bzoj题解】1001 狼抓兔子

题目描述

现在小朋友们最喜欢"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形:
 左上角点为(1,1),右下角点为(N,M)(上图中N=3,M=4).有以下三种类型的道路
1:(x,y)<==>(x+1,y)
2:(x,y)<==>(x,y+1)
3:(x,y)<==>(x+1,y+1)
道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的。左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现在它们要跑到右下角(N,M)的窝中去,狼王开始伏击这些兔子。当然为了保险起见,如果一条道路上最多通过的兔子数为K,狼王需要安排同样数量的K只狼,才能完全封锁这条道路,你需要帮助狼王安排一个伏击方案,使得在将兔子一网打尽的前提下,参与的的数量要最小。因为狼还要去找喜羊羊麻烦。
输入
第一行为N,M.表示网格的大小,N,M均小于等于1000。
接下来分三部分
第一部分共N行,每行M-1个数,表示横向道路的权值。
第二部分共N-1行,每行M个数,表示纵向道路的权值。
第三部分共N-1行,每行M-1个数,表示斜向道路的权值。
输出
输出一个整数,表示参与伏击的狼的最小数量。
样例输入
3 4
5 6 4
4 3 1
7 5 3
5 6 7 8
8 7 6 5
5 5 5
6 6 6
样例输出
14
题解
裸的最小割,我转了转最大流跑Dinic。
记得连双向边。发现当前弧优化很优秀……
 1 #include<cstdio>
 2 #include<cstring>
 3 #define F(i,a,b) for(int i=a;i<=b;++i)
 4 #define F2(i,a,b) for(int i=a;i<b;++i)
 5 #define v(a,b) ((a-1)*m+b)
 6 int n,m,S,T;
 7 int h[1000001],nxt[6000001],to[6000001],cap[6000001],tot=1;
 8 inline void ins(int x,int y,int c){nxt[++tot]=h[x];to[tot]=y;cap[tot]=c;h[x]=tot;nxt[++tot]=h[y];to[tot]=x;cap[tot]=c;h[y]=tot;}
 9 int iter[1000001],lv[1000001],que[1000001],l,r;
10 inline int Min(int p,int q){return p<q?p:q;}
11 void init(){
12     int x;
13     scanf("%d%d",&n,&m); S=1, T=v(n,m);
14     F(i,1,n) F2(j,1,m)
15         scanf("%d",&x), ins(v(i,j),v(i,j+1),x);
16     F2(i,1,n) F(j,1,m)
17         scanf("%d",&x), ins(v(i,j),v(i+1,j),x);
18     F2(i,1,n) F2(j,1,m)
19         scanf("%d",&x), ins(v(i,j),v(i+1,j+1),x);
20 }
21 bool lvl(){
22     memset(lv,0,sizeof lv);
23     lv[S]=1; que[1]=S; l=r=1;
24     int u;
25     while(l<=r){
26         u=que[l++];
27         for(int i=h[u];i;i=nxt[i])
28             if(cap[i]&&!lv[to[i]]) lv[to[i]]=lv[u]+1, que[++r]=to[i];
29     } if(!lv[T]) return 0;
30     F(i,S,T) iter[i]=h[i];
31     return 1;
32 }
33 int flow(int u,int f){
34     if(u==T) return f;
35     int d,sum=0;
36     for(int&i=iter[u];i;i=nxt[i]){
37         if(cap[i]&&lv[to[i]]>lv[u]){
38             d=flow(to[i],Min(cap[i],f));
39             sum+=d; f-=d;
40             cap[i]-=d; cap[i^1]+=d;
41             if(!f) return sum;
42         }
43     }
44     return sum;
45 }
46 int Dinic(){
47     int sum=0;
48     while(lvl())
49         sum+=flow(S,999999999);
50     return sum;
51 }
52 int main(){
53     init();
54     printf("%d",Dinic());
55     return 0;
56 }

 

转载于:https://www.cnblogs.com/PinkRabbit/p/7327131.html

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

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

相关文章

计算机网络宽带接入,计算机网络(宽带接入技术).ppt

计算机网络(宽带接入技术).ppt (26页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分计算机网络 Computer Networks第六章 宽带接入技术宽带接入技术随着通信需求的发展&#xff0c;居民的通…

hapi返回xml格式 微信开发 node

圈内&#xff0c;使用Koa2、express比较多&#xff0c;而我hapi使用比较多。目前在做微信公众号开发&#xff0c;要求返回数据是xml格式。 1、之前的返回&#xff0c;直接return Json2Xml: async function (request, h) {const data <xml><ToUserName>< ![CD…

html css控制优先级,css权重及优先级问题_html/css_WEB-ITnose

css权重及优先级问题几个值的对比初始值指定值计算值应用值CSS属性的 指定值 (specified value)会通过下面3种途径取得&#xff1a; 在当前文档的样式表中给这个属性赋的值&#xff0c;会被优先使用。如果在当前文档的样式表中没有给这个属性赋值&#xff0c;那么它会尝试从父元…

Hbase集群监控

Hbase集群监控 Hbase Jmx监控 监控每个regionServer的总请求数&#xff0c;readRequestsCount&#xff0c;writeRequestCount&#xff0c;region分裂&#xff0c;region合并&#xff0c;Store 数据来源&#xff1a; /jmx?qryHadoop:serviceHBase,nameRegionServer,subServer 设…

学校计算机二级模拟上机能看分数吗,全国计算机二级考试机试考完怎么储存的...

全国计算机二级考试机试考完怎么储存的以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;全国计算机二级考试机试考完怎么储存的自动储存在系统里面&#xff0c;考试结束后上传&#xff0c;分数…

宝塔面板 创建 二级域名 Unable to round-trip http request to upstream

1、我的服务器是阿里云&#xff0c;安装了宝塔面板&#xff0c;直接使用宝塔面板创建二级域名bike.caowei.wang。 2、然后就想访问了&#xff0c;对不起&#xff0c;直接给你报错Unable to round-trip http request to upstream: dial tcp: lookup bike.caowei.wang: no suc…

计算机准考证打印山东省招生教育,山东省教育招生考试院2020高考准考证打印入口:wsbm.sdzk.cn...

免费申请学习规划请选择在读年级学前小学初中高中大学留学其他已为30154位学员提供学习规划*验证码*短信验证码{"text1":{"label":"薄弱科目","placeholder":"请输入你的薄弱科目","required":1,"formType&q…

webpack-dev-server 本地文件 发布 网站 域名 根目录

我在做微信开发的时候&#xff0c;官方要求能在网站根域名下访问一下鉴权文件。说白了&#xff0c;就是根目录下可以直接访问资源。所以我们需要copy-webpack-plugin这个包。 1、首先引入 const CopyWebpackPlugin require(copy-webpack-plugin) 2、配置toType: file ne…

Java 同步器

CyclicBarrier是什么 CyclicBarrier也叫同步屏障&#xff0c;在JDK1.5被引入&#xff0c;可以让一组线程达到一个屏障时被阻塞&#xff0c;直到最后一个线程达到屏障时&#xff0c;所以被阻塞的线程才能继续执行。CyclicBarrier好比一扇门&#xff0c;默认情况下关闭状态&#…

SMB MS17-010 利用(CVE-2017-0144 )

exploit-db : https://www.exploit-db.com/exploits/42315/ 该漏洞的影响版本很广泛&#xff1a;Microsoft Windows Windows 7/8.1/2008 R2/2012 R2/2016 R2 - EternalBlue SMB Remote Code Execution (MS17-010) 具体请查看公告&#xff1a;Microsoft 安全公告 MS17-010 - 严重…

计算机硬盘的主流型号,四款主流2.5英寸笔记本机械硬盘性能对比

虽说固态硬盘已经逐渐成为了主流&#xff0c;但是对于普通的笔记本用户来说&#xff0c;传统的2.5英寸机械硬盘则是笔记本扩容的首选&#xff0c;毕竟现在一款1TB的笔记本机械硬盘价格不到400元&#xff0c;而1TB的固态硬盘无论是什么接口&#xff0c;价格都能买好几个机械硬盘…

研究人员用数据统计的方法来做文学研究

研究人员用数据统计的方法来做文学研究 大数据与文学&#xff0c;一个是理性工具&#xff0c;一个是感性思维&#xff0c;看起来似乎不沾边。但如今&#xff0c;二者的联系却日渐紧密起来&#xff0c;也由此引发了不少争议。 谁是最爱往外跑的诗人&#xff1f; 唐宋时期最爱往外…