当前位置: 首页 > news >正文

可以做装修效果图的网站商城网站代理系统

可以做装修效果图的网站,商城网站代理系统,开发公司组织员工办按揭,wordpress上传失败P2598 [ZJOI2009]狼和羊的故事 题目描述 “狼爱上羊啊爱的疯狂#xff0c;谁让他们真爱了一场#xff1b;狼爱上羊啊并不荒唐#xff0c;他们说有爱就有方向#xff0e;#xff0e;#xff0e;#xff0e;#xff0e;#xff0e;” Orez听到这首歌#xff0c;心想谁让他们真爱了一场狼爱上羊啊并不荒唐他们说有爱就有方向” Orez听到这首歌心想狼和羊如此和谐为什么不尝试羊狼合养呢说干就干 Orez的羊狼圈可以看作一个n*m个矩阵格子这个矩阵的边缘已经装上了篱笆。可是Drake很快发现狼再怎么也是狼它们总是对羊垂涎三尺那首歌只不过是一个动人的传说而已。所以Orez决定在羊狼圈中再加入一些篱笆还是要将羊狼分开来养。 通过仔细观察Orez发现狼和羊都有属于自己领地若狼和羊们不能呆在自己的领地那它们就会变得非常暴躁不利于他们的成长。 Orez想要添加篱笆的尽可能的短。当然这个篱笆首先得保证不能改变狼羊的所属领地再就是篱笆必须修筑完整也就是说必须修建在单位格子的边界上并且不能只修建一部分。 输入输出格式 输入格式 文件的第一行包含两个整数n和m。接下来n行每行m个整数1表示该格子属于狼的领地2表示属于羊的领地0表示该格子不是任何一只动物的领地。 输出格式 文件中仅包含一个整数ans代表篱笆的最短长度。 分析 要保证篱笆长最小而把狼和羊分开来我们可以联想到最小割模型。一个图的最小割就是把图分为两个部分源点及汇点不在同一部的边权和。最小割可以用最大流算法求得。 建模 要说到网络流重点就在于建模了我们怎么把此网格图转换为最大流网络流呢其实对于一个格子我们可以把它看做与上下左右四个方向都有一条连边而把这个格子抽象成一个点如下图 依据题意和最大流的经验我们可以连边了我以羊的一部作为源点所以源点连羊狼连汇点若相邻的点事狼则连一条容量为1的边他的模型意义是把羊和狼分开【割】需要消耗“1” 但是对于0怎么办呢这是本题的难点 可以思索一下若是把0全部归为狼或者羊吧感觉又会有更优解事实也是这样因为狼和羊是等价的【把狼从羊中隔离开来等价于把羊从狼中隔离开来】所以这样单方面划分是肯定不正确的那么怎么办呢 你可能不会但你的最大流算法一定知道怎么做 我们这样连源点---羊--边Ac1--0--边B, c1--狼---汇点 试想一下你的篱笆的作用是分割狼和羊0这些格子要么被划分到狼的领地要么被划分到羊的领地若是划分到狼那边你的算法会割开靠近羊的那条边 A 要是划分到羊这边他会自动割开靠近狼的边 B 。一定不存在一种割的方式使 A 和 B 同时被割开因为你的算法知道割一条就足以分开两点不需要割第二条。 所以放手给程序去跑吧 Code #includeiostream #includecstdio #includequeue #includecstring #includealgorithm #define ll long long using namespace std; int RD(){int out 0,flag 1;char c getchar();while(c 0 || c 9){if(c -)flag -1;c getchar();}while(c 0 c 9){out out * 10 c - 0;c getchar();}return flag * out;} const int maxn 100019,INF 1e9; int nume 1; int lenx,leny; int map[190][190]; int mx[4] {1,-1,0,0}; int my[4] {0,0,1,-1}; int s,t,maxflow; int head[maxn]; struct Node{int v,dis,nxt;}E[maxn 2]; void add(int u,int v,int dis){E[nume].nxt head[u];E[nume].v v;E[nume].dis dis;head[u] nume;} int lev[maxn]; bool bfs(){queueintQ;memset(lev,0,sizeof(lev));Q.push(s);lev[s] 1;while(!Q.empty()){int u Q.front();Q.pop();for(int i head[u];i;i E[i].nxt){int v E[i].v;if(E[i].dis !lev[v]){lev[v] lev[u] 1;Q.push(v);if(v t)return 1;}}}return 0;} int Dinic(int u,int flow){if(u t)return flow;int rest flow,k;for(int i head[u];i;i E[i].nxt){int v E[i].v;if(E[i].dis lev[v] lev[u] 1 rest){k Dinic(v,min(rest,E[i].dis));if(!k)lev[v] 0;E[i].dis - k;E[i ^ 1].dis k;rest - k;}}return flow - rest;} int getindex(int x,int y){return (x - 1) * leny y;} bool judge(int x,int y){if(x 1 || x lenx || y 1 || y leny)return 0;return 1;} /*for(int i 1;i lenx;i){for(int j 1;j leny;j){}}*/ void build(){for(int i 1;i lenx;i){for(int j 1;j leny;j){if(map[i][j] 2){add(s,getindex(i,j),INF);add(getindex(i,j),s,0);}else if(map[i][j] 1){add(getindex(i,j),t,INF);add(t,getindex(i,j),0);}}}for(int i 1;i lenx;i){for(int j 1;j leny;j){if(map[i][j] 2 || map[i][j] 0){for(int k 0;k 4;k){int nx i mx[k],ny j my[k];if(!judge(nx,ny))continue;if(map[nx][ny] 1 || map[nx][ny] 0){add(getindex(i,j),getindex(nx,ny),1);add(getindex(nx,ny),getindex(i,j),0);}}}}}} int main(){lenx RD();leny RD();for(int i 1;i lenx;i){for(int j 1;j leny;j){map[i][j] RD();}}s lenx * leny 1,t s 1;build();int flow 0;while(bfs())while(flow Dinic(s,INF))maxflow flow;printf(%d\n,maxflow);return 0;} 转载于:https://www.cnblogs.com/Tony-Double-Sky/p/9285535.html
http://www.zqtcl.cn/news/844172/

相关文章:

  • 上海外贸网站推广方法爱站关键词
  • 网站页面框架设计企业建设流程
  • 网站做留言板如何推广小程序商城
  • 金融社区类网站建设鞍山58同城招聘网
  • 网站搭建策划书wordpress 屏蔽插件更新
  • 做网上购物网站杭州房产网官方网站
  • 汕头市网站建设分站公司站长网站大全
  • c2c的网站名称和网址深圳设计公司办公室
  • 建设银行企业版网站做微网站平台
  • 北京企业网站建设电话长沙建设工程信息网
  • 大型综合门户网站开发扁平化个人网站
  • 怎么做代理人金沙网站长沙 网站运营
  • 商城网站开发的目的和意义鲜花类网站建设策划书范文
  • 什么类型的公司需要做建设网站的iis7 网站权限设置
  • 信誉好的商城网站建设火车头 wordpress 发布
  • 龙岩做网站抚顺 网站建设
  • wordpress怎么设置广告位青州网站优化
  • 网站的备案编号高端网站建设谷美
  • 佛山智能网站建设地址设计资溪做面包招聘的网站
  • 荆州网站建设多少钱国外网站设计理念
  • 网站备案成功后wordpress文字加框
  • 中小企业怎么优化网站西安网站建设求职简历
  • 网站开发者模式怎么打开商城网站建设特点有哪些
  • 网站登录按纽是灰色的做网站的前途怎么样
  • 常州城乡建设局网站霸榜seo
  • 网站响应样式如何制作自己的公众号
  • 网站的友情连接怎么做免费收录链接网
  • 太原网站设计排名wordpress 设置语言
  • 南京模板建站定制网站网站单页面怎么做的
  • 宁夏住房建设厅网站石家庄最新今天消息