Bzoj1324 Exca王者之剑
Submit: 591 Solved: 296
Description
Input
Output
Sample Input
1 2
2 1
Sample Output
HINT
Source
2007Amber国家队论文
图论 网络流
将图二分染色
求最大点权独立集
最大点权独立集就等于总权值和减去最小权值覆盖
最小权值覆盖就是建好二分图以后的最小割
也就是说这是道模板题
然而我居然没有1A,原因是反向弧的流量建成了w而不是0
真鸡儿丢人,我退群吧
1 /*by SilverN*/ 2 #include<algorithm> 3 #include<iostream> 4 #include<cstring> 5 #include<cstdio> 6 #include<cmath> 7 #include<vector> 8 #include<queue> 9 using namespace std; 10 const int INF=0x3f3f3f3f; 11 const int mxn=100010; 12 const int mx[5]={0,1,0,-1,0}; 13 const int my[5]={0,0,1,0,-1}; 14 int read(){ 15 int x=0,f=1;char ch=getchar(); 16 while(ch<'0' || ch>'9'){if(ch=='-')f=-1;ch=getchar();} 17 while(ch>='0' && ch<='9'){x=x*10+ch-'0';ch=getchar();} 18 return x*f; 19 } 20 struct edge{ 21 int v,nxt,f; 22 }e[mxn<<1]; 23 int hd[mxn],mct=1; 24 void add_edge(int u,int v,int w){ 25 e[++mct].v=v;e[mct].nxt=hd[u];e[mct].f=w; hd[u]=mct;return; 26 } 27 void insert(int u,int v,int w){ 28 add_edge(u,v,w);add_edge(v,u,0);return; 29 } 30 queue<int>q; 31 int d[mxn]; 32 int n,m,S,T; 33 bool BFS(){ 34 memset(d,0,sizeof d); 35 d[S]=1; 36 q.push(S); 37 while(!q.empty()){ 38 int u=q.front();q.pop(); 39 for(int i=hd[u];i;i=e[i].nxt){ 40 int v=e[i].v; 41 if(e[i].f && !d[v]){ 42 d[v]=d[u]+1; 43 q.push(v); 44 } 45 } 46 } 47 return d[T]; 48 } 49 int DFS(int u,int lim){ 50 if(u==T)return lim; 51 int f=0,tmp; 52 for(int i=hd[u],v;i;i=e[i].nxt){ 53 v=e[i].v; 54 if(d[v]==d[u]+1 && e[i].f && (tmp=DFS(v,min(lim,e[i].f)))){ 55 e[i].f-=tmp; e[i^1].f+=tmp; 56 lim-=tmp; f+=tmp; 57 if(!lim)return f; 58 } 59 } 60 d[u]=0; 61 return f; 62 } 63 int Dinic(){ 64 int res=0; 65 while(BFS())res+=DFS(S,0x3f3f3f3f); 66 return res; 67 } 68 int id[120][120]; 69 int mp[120][120]; 70 int smm=0,dt=0; 71 void solve(){ 72 int i,j; 73 for(i=1;i<=n;i++) 74 for(j=1;j<=m;j++) 75 id[i][j]=++dt; 76 S=0;T=dt+1; 77 for(i=1;i<=n;i++) 78 for(j=1;j<=m;j++){ 79 if((i+j)&1){ 80 insert(S,id[i][j],mp[i][j]); 81 for(int k=1;k<=4;k++){ 82 int nx=i+mx[k],ny=j+my[k]; 83 if(nx>0 && nx<=n && ny>0 && ny<=m) 84 insert(id[i][j],id[nx][ny],INF); 85 86 } 87 } 88 else insert(id[i][j],T,mp[i][j]); 89 } 90 return; 91 } 92 int main(){ 93 int i,j; 94 n=read();m=read(); 95 for(i=1;i<=n;i++) 96 for(j=1;j<=m;j++){ 97 mp[i][j]=read(); 98 smm+=mp[i][j]; 99 } 100 solve(); 101 int res=Dinic(); 102 // printf("Res:%d\n",res); 103 printf("%d\n",smm-res); 104 return 0; 105 }
转载于:https://www.cnblogs.com/SilverNebula/p/6629250.html
Bzoj1324 Exca王者之剑相关推荐
- [bzoj1324]Exca王者之剑_最小割
Exca王者之剑 bzoj-1324 题目大意:题目链接. 注释:略. 想法: 最小割经典模型. 所有格子向源点连权值为格子权值的边. 将棋盘黑白染色后白点反转源汇. 如果两个格子相邻那么黑点向白点连 ...
- [bzoj1324]Exca王者之剑
Exca王者之剑 Time Limit: 10 Sec Memory Limit: 162 MB [Submit][Status][Discuss] Description Input 第一行给 ...
- bzoj1324: Exca王者之剑
传送门 将图染色后大力跑最小点权点覆盖(四个方向) 答案=总权值-最小点权点覆盖. #include<cmath> #include<cstdio> #include<c ...
- bzoj1324 Exca王者之剑(构造+最小割)
论文题. 大概就是首先可以发现只有偶数时刻才有可能吃到宝石,然后相邻的格子内的宝石不可能都吃到.然后就想到了最大点权独立集,然后构造证明任意独立集都可以实现.详见2007Amber国家队论文. #in ...
- [BZOJ1324]Exca王者之剑(最小割)
=== === 这里放传送门 === === 题解 一开始写这个题的时候看到什么"可以任意选择起点"还"可以停一秒"还有什么"奇数秒偶数秒" ...
- BZOJ 1324: Exca王者之剑/BZOJ 1475: 方格取数 最大权独立集 最小割
1324: Exca王者之剑 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 618 Solved: 310 [Submit][Status][Di ...
- 【bzoj1324】Exca王者之剑(8-9 方格取数问题)
*题目描述: 在一个有m*n (m,n<=100)个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意2 个数所在方格没有公共边,且取出的数的总和最大.试设计一个满足要求的取数算法, ...
- [BZOJ]1324: Exca王者之剑
题目大意:在一个N*M的网格之中,每个格子上都有一定价值的宝石,Amber可以任意选则一个起始点.并且Amber可以瞬间取走当前所在格子中的宝石,Amber每秒可以走一步,在偶数秒时他周围4格中的宝石 ...
- [颓废史]蒟蒻的刷题记录
QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...
- Cocos2d-html5《王者之剑》实现 (1)
前面,< 手把手,快速搭建 Cocos2d-HTML5 开发调试环境> 与 < 如何自定义 Cocos2d-HTML5 Loading 界面> 两篇文章,帮助了我们搭建了其开发 ...
最新文章
- 机器学习常用损失函数小结
- JDK1.5 新特性
- RabbitMQ 一二事 - 简单队列使用
- Tomcat绿色版启动startup.bat一闪问题的解决方法!
- php cms 插件开发,phpcms编辑器插件最新版——ckeditor4.5
- OPPO尝鲜android版本更新,安卓11迎来四大贴心升级,OPPO小米率先尝鲜
- 关于switch-case问题
- 【C语言】时间操作,把1970年开始秒数计算的时间,转换为字符串格式输出
- vue计算多列和_解决vue 表格table列求和的问题
- java拖动图片拼图_求教,我的这个拼图程序中的移动图片的改怎么做
- sh mysql config_解决python安装mysqlclient出现“/bin/sh:1:mysql_config:not found”错误...
- 抖音神器---python实现图片转字符
- 用计算机计算根号2^2-1÷,2根号2(万能计算器在线使用)
- 127.0.0.1 zxt.php_php单文件版在线代码编辑器使用方法
- alios下载_AliOS Studio
- intelx86为何从0xFFFF0处执行
- 从零开始搭建自己的网站一:整体步骤
- 行人重识别(ReID) ——技术实现及应用场景
- gedit文本编辑器的设置
- WireShark找不到360wifi如何解决
热门文章
- UVa232.Crossword Answers
- C# 判断字符中是否包含中文
- 英文写作的25个黄金加分句型
- Visual Studio(Year)编辑器调试在IIS发布的Web程序出现错误的解决
- python学习-(__new__方法和单例模式)
- 介绍下Javascript原型和原型链的特点?
- cf. Lengthening Sticks 组合数学
- C#中数据库备份还原
- 基于R语言绘制BBC风格图表
- MySQL的约束、事务、字符串、日期、数学相关及其他补充