博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SRM577]BoardPainting
阅读量:6701 次
发布时间:2019-06-25

本文共 1736 字,大约阅读时间需要 5 分钟。

题意:一个全白的网格,你要将一些格子涂黑,每次只能选一行或一列中的连续白格涂黑,问最小操作次数

先假装我们一次涂一个联通块,那么答案就是联通块个数,然后在这个基础上增加一些代价让方案变得合法

考虑这样建图:对两个水平相邻的要涂黑的格子$x,y$,建新点$u$,连$(S,u,1),(u,x,\infty),(u,y,\infty)$,对两个竖直相邻的要涂黑的格子$x,y$,建新点$v$,连$(x,v,\infty),(y,v,\infty),(v,T,1)$

如果存在一条$S\rightarrow u\rightarrow x\rightarrow v\rightarrow T$的路径,说明当前的涂色方案并不合法(染色转弯),于是我们需要把这条路径割掉,代表从联通块中分出一部分让答案变得合法,所以答案还要加上这个图的最小割

#include
#include
#include
#include
#include
using namespace std;const int inf=2147483647;int h[7510],nex[40010],to[40010],cap[40010],M=1,S,T;void ins(int a,int b,int c){ M++; to[M]=b; cap[M]=c; nex[M]=h[a]; h[a]=M;}void add(int a,int b,int c){ ins(a,b,c); ins(b,a,0);}int dis[7510],q[7510];bool bfs(){ int head,tail,x,i; memset(dis,-1,sizeof(dis)); head=tail=1; q[1]=S; dis[S]=0; while(head<=tail){ x=q[head++]; for(i=h[x];i;i=nex[i]){ if(cap[i]&&dis[to[i]]==-1){ dis[to[i]]=dis[x]+1; if(to[i]==T)return 1; q[++tail]=to[i]; } } } return 0;}int cur[7510];int dfs(int x,int flow){ if(x==T)return flow; int us=0,i,t; for(i=cur[x];i&&flow;i=nex[i]){ if(cap[i]&&dis[to[i]]==dis[x]+1){ t=dfs(to[i],min(flow,cap[i])); cap[i]-=t; cap[i^1]+=t; us+=t; flow-=t; if(cap[i])cur[x]=i; } } if(us==0)dis[x]=-1; return us;}int dicnic(){ int ans=0; while(bfs()){ memcpy(cur,h,sizeof(h)); ans+=dfs(S,inf); } return ans;}int id[60][60];class BoardPainting{ public: int minimalSteps(vector
mp){ int n,m,i,j,N,ans; n=mp.size(); m=mp[0].length(); N=2; S=1; T=2; ans=0; for(i=0;i
v; char s[110]; for(scanf("%s",s);s[0]!='E';scanf("%s",s))v.push_back(s); printf("%d",cl.minimalSteps(v));}*/

转载于:https://www.cnblogs.com/jefflyy/p/9679504.html

你可能感兴趣的文章
C#接口-接口作用
查看>>
POJ 2479 Maximum sum (动态规划)
查看>>
PHP——上传头像(2)
查看>>
01-Java基础知识:数据类型与变量、标识符、运算符、表达式
查看>>
连接SQLServer时,因启用连接池导致孤立事务的原因分析和解决办法
查看>>
【转】iOS开发笔记--识别单击还是双击
查看>>
手工创建非singleton 的TopComponent
查看>>
分享一个自己写的table表格排序js插件(高效简洁)
查看>>
三十二、Android上传文件至服务器
查看>>
论文中要用到的SPSS基础分析
查看>>
word中交叉引用不能更新的解决方法
查看>>
Silverlight企业应用框架设计【六】自定义系统菜单(使用自己的DataForm)
查看>>
jQuery插件-轻量图片轮换-UISlide
查看>>
在线购物系统权限模块
查看>>
浅谈SQL Server 2008中的Hints(提示)
查看>>
Async Concurrent Queue 2012-04-29 add stop Threads
查看>>
NuGet学习笔记(1) 初识NuGet及快速安装使用
查看>>
PHP笔试题——遍历文件目录
查看>>
2012 人民搜索 实习生招聘 笔试题(转)
查看>>
phpcms 二次代码心得
查看>>