思路:
最大独立集嘛 用nlogn的Dinic做

//By SiriusRen
#include <queue>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 888888
int n,re[205][205],cnt,first[40050],next[N],v[N],w[N],vis[40050],tot,T,jy,ans;
char a[205][205],xx[]={1,-1,2,-2,1,-1,2,-2},yy[]={2,-2,1,-1,-2,2,-1,1};
void Add(int x,int y,int z){w[tot]=z,v[tot]=y,next[tot]=first[x],first[x]=tot++;}
void add(int x,int y,int z){Add(x,y,z),Add(y,x,0);}
bool tell(){memset(vis,-1,sizeof(vis)),vis[0]=0;queue<int>q;q.push(0);while(!q.empty()){int t=q.front();q.pop();for(int i=first[t];~i;i=next[i])if(!~vis[v[i]]&&w[i])vis[v[i]]=vis[t]+1,q.push(v[i]);}return ~vis[T];
}
int zeng(int x,int y){if(x==T)return y;int r=0;for(int i=first[x];~i&&y>r;i=next[i])if(vis[v[i]]==vis[x]+1&&w[i]){int t=zeng(v[i],min(y-r,w[i]));w[i]-=t,w[i^1]+=t,r+=t;}if(!r)vis[x]=-1;return r;
}
int main(){memset(first,-1,sizeof(first));scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",a[i]+1);for(int j=1;j<=n;j++){a[i][j]-='0';if(!a[i][j])re[i][j]=++cnt;}}T=cnt+1;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(re[i][j]){if((i+j)&1){add(0,re[i][j],1);for(int k=0;k<8;k++){int dx=i+xx[k],dy=j+yy[k];if(dx>=1&&dy>=1&&re[dx][dy])add(re[i][j],re[dx][dy],1);}}else{add(re[i][j],T,1);for(int k=0;k<8;k++){int dx=i+xx[k],dy=j+yy[k];if(dx>=1&&dy>=1&&re[dx][dy])add(re[dx][dy],re[i][j],1);}}}while(tell())while(jy=zeng(0,0x3fffffff))ans+=jy;printf("%d\n",cnt-ans);
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532072.html

BZOJ 3175 最大独立集相关推荐

  1. [bzoj 4808]马

    众所周知,马后炮是中国象棋中很厉害的一招必杀技."马走日字".本来,如果在要去的方向有别的棋子挡住(俗称"蹩马腿"),则不允许走过去.为了简化问题,我们不考虑这 ...

  2. BZOJ 1143 祭祀 river(最大独立集)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1143 题意:给出一个有向无环图.在其中找出一个最大的点集使得点集中任意两个点之间不可达. ...

  3. BZOJ 4808 二分图最大独立集

    思路: 棋盘是个二分图 那就把一个可以走的白点  向所有可以走的黑点连边 跑一个最大匹配   (匹配上了就代表这两个点不能共存) 最大独立集=sum-最大匹配 //By SiriusRen #incl ...

  4. BZOJ 4808(马-二分图最大独立集)

    4808: 马 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 111 Solved: 46 [Submit][Status][Discuss] Des ...

  5. BZOJ刷题记录---提高组难度

    BZOJ刷题记录---提高组难度 总目录详见https://blog.csdn.net/mrcrack/article/details/90228694 序号 题号 算法 思想难度 实现难度 总难度 ...

  6. bzoj 4808: 马

    题意: 在图上放最多马,使它们不能相互攻击. 题解: 同bzoj 攻击装置.3175 一开始狂T,抄了个偏移量竟然快了10几倍? 玄学-- code: #include<cstdio> # ...

  7. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)

    BZOJ 洛谷 首先可以把原序列\(A_i\)转化成差分序列\(B_i\)去做. 这样对于区间加一个等差数列\((l,r,a_0,d)\),就可以转化为\(B_{l-1}\)+=\(a_0\),\(B ...

  8. S-T平面图中利用最短路求最小割(BZOJ 1001)

    BZOJ 1001: [BeiJing2006]狼抓兔子 最小割 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现在小朋友们最喜欢 ...

  9. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

最新文章

  1. 【组合数学】递推方程 ( 递推方程示例 1 | 列出递推方程 )
  2. 判断浮点数溢出的方法
  3. 祖父元素_帮助祖父母建立Skype帐户的UX经验教训
  4. 12-----存储过程
  5. PowerPC处理器数字仿真测试软件工具——天目全数字实时仿真软件SkyEye
  6. 软件制胜之道精彩观点聚合
  7. ASN.1编解码:asn1c-ORAN-E2AP
  8. 什么叫做项目孵化_什么叫创业孵化服务?
  9. 黑马程序员Java零基础视频教程(2022最新Java)B站视频学习笔记-Day2-Java基础概念
  10. 电力系统及其自动化毕业论文题目【精选】
  11. python程序设计基础电子书_python程序设计基础 pdf下载
  12. 明解C语言第三章习题
  13. Python实现熵值法
  14. 普通打印机如何在A4纸上打印不同内容的标签
  15. Linux中alias设置重命名出现 -bash: alias :XXX :not found 问题的解决
  16. 降维技术 (Dimensionality Reduction)
  17. Sublime的实用汉化方法
  18. 水滴舆情关于山西体育一周舆情总结
  19. 深入浅出理解SerDes
  20. LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档

热门文章

  1. jQuery源码分析-each函数
  2. springside3.3.4部署小结
  3. 黄聪:在C#中如何使用资源中的图片
  4. ElasticSearch之Java Api 测试
  5. 实验8-SPSS交叉表分析
  6. lombok 不用再写pojo的getset
  7. 远程调用RestTemplate
  8. mysql数据库基本操作练习
  9. 图形验证码最佳攻略2
  10. 7.Array 数组对象