【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,一经查实,立即删除!

相关文章

nginx设置 二级域名 指定端口

我的服务器跑着不同的应用&#xff0c;今天在做微信相关的程序&#xff0c;所以需要配置二级域名wx&#xff0c;配置如下&#xff0c;重启nginx生效。 server {listen 80;server_name wx.caowei.wang;location / { proxy_set_header X-Real-IP $remote_addr;proxy_set_header …

计算机网络宽带接入,计算机网络(宽带接入技术).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;那么它会尝试从父元…

PHP实现敏感词过滤系统

PHP实现敏感词过滤系统 安装说明 安装PHP扩展 trie_filter&#xff0c;安装教程 http://blog.41ms.com/post/39.html 安装PHP扩展 swoole&#xff0c;安装教程 http://www.swoole.com/ 代码说明 1、敏感词库维护更新脚本&#xff1a; reload_dict.php&#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…

CentOS环境下tomcat启动超级慢的解决方案

tomcat日志中的其中一行: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [341,502] milliseconds 总启动时间: INFO: Starting ProtocolHandler ["http-bio-8080"] Aug 05, 2017 12:11:35 PM org.apache.coyote.AbstractProto…

计算机准考证打印山东省招生教育,山东省教育招生考试院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;默认情况下关闭状态&#…

mongoose populate 返回 指定 字段

1、mongoose中一个数据模型Product(商品)关联另外一个数据模型Brand(品牌)需要使用ref&#xff0c;关联查询使用populate Product模型 new mongoose.Schema({// 商品名称name: { type: String, required: true, validate: /\S/ },// 商品内容content: { type: String, requir…

凯斯西储大学计算机工程排名,[转载]凯斯西储大学排名及世界排名【研究生】...

商学院工商管理托福90分或雅思7分&#xff0c;GMAT&#xff0c;GPA要求3.0以上&#xff0c;学费$37,500/年&#xff0c;申请截止日期6月1日会计托福100分或雅思7分&#xff0c;GMAT&#xff0c;GMAT阅读百分比排名在50%以上&#xff0c;写作在4.0分以上&#xff0c;GPA要求2.0以…