宝石只能在偶数秒取到,假设有一个宝石在奇数秒取到了,那么上一秒是偶数秒,在上一秒的时候这里的宝石就没了。

相邻的两个宝石不能同时取,很显然,先取一块,那么这是偶数秒,取完了这一块之后相邻的都没了。

只要不取相邻两个宝石,一定能构造出一种合法的方案(为什么?看胡伯涛的论文

所以答案就是二分图最小点权覆盖

#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){int x=0,f=1;char ch=getchar();while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(isdigit(ch))x=x*10+ch-'0',ch=getchar();return x*f;
}
int num[101][101],fir[10010],dep[10010],head[10010],dis[1000010],nxt[1000010],w[1000010],id=1,S,T;
il vd link(int a,int b,int c){nxt[++id]=fir[a],fir[a]=id,dis[id]=b,w[id]=c;nxt[++id]=fir[b],fir[b]=id,dis[id]=a,w[id]=0;
}
il bool BFS(){memset(dep,0,sizeof dep);static int que[10010],hd,tl;hd=tl=0,que[tl++]=S;dep[S]=1;while(hd^tl){int x=que[hd++];for(int i=fir[x];i;i=nxt[i])if(w[i]&&!dep[dis[i]])dep[dis[i]]=dep[x]+1,que[tl++]=dis[i];}return dep[T];
}
il int Dinic(int x,int maxflow){if(x==T)return maxflow;int ret=0;for(int&i=head[x];i;i=nxt[i])if(w[i]&&dep[dis[i]]==dep[x]+1){int d=Dinic(dis[i],std::min(maxflow-ret,w[i]));w[i]-=d,w[i^1]+=d,ret+=d;if(ret==maxflow)break;}return ret;
}
int main(){
#ifndef ONLINE_JUDGEfreopen("4474.in","r",stdin);freopen("4474.out","w",stdout);
#endifint n=gi(),m=gi(),ans=0,W,cnt=0;S=++cnt,T=++cnt;for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){W=gi();ans+=W;num[i][j]=++cnt;if((i+j)&1)link(S,num[i][j],W);else link(num[i][j],T,W);}for(int i=1;i<=n;++i)for(int j=1;j<=m;++j)if((i+j)&1){if(i<n)link(num[i][j],num[i+1][j],1e9);if(j<m)link(num[i][j],num[i][j+1],1e9);if(i>1)link(num[i][j],num[i-1][j],1e9);if(j>1)link(num[i][j],num[i][j-1],1e9);}while(BFS())memcpy(head,fir,sizeof head),ans-=Dinic(S,1e9);printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/xzz_233/p/10123713.html

洛咕 P4474 王者之剑相关推荐

  1. (最小割)洛谷P4474 王者之剑

    洛谷P4474 王者之剑 思路: 显然求二分图最大权独立点集. 把点进行黑白染色. SSS向白点建边,权值为vi,jv_{i,j}vi,j​; 白点向周围的黑点建边,权值为infinfinf; 黑点向 ...

  2. 洛谷P4474 王者之剑(吾王的题目!!!)

    蒟蒻第一次发题解,看官点个赞再走QwQ 题目链接 https://www.luogu.org/problem/P4474 题目描述 这是在阿尔托利亚·潘德拉贡成为英灵前的事情,她正要去拔出石中剑成为亚 ...

  3. 洛咕P3250 [HNOI2016]网络 整体二分

    这题太神仙了必须写博客... 显然可以想到二分答案.二分一个答案mid,如果所有长度\(\geq mid\)的路径都过x,那么答案一定\(<mid\),否则答案\(\geq mid\). 那么就 ...

  4. P4474 王者之剑

    P4474 王者之剑 题目大意 n*m的带权网格,任意选择起点 开始时刻为0秒.以下操作,每秒按顺序执行 在第i秒开始的时候,在方格(x,y)上,获得(x,y)的值 在偶数秒,周围四格的值清零 每秒可 ...

  5. 洛咕11月月赛部分题解 By cellur925

    听说是你谷史上最水月赛?我不听我最菜 T1:终于结束的起点 月天歌名好评 给你一个模数 \(M\),请你求出最小的 \(n > 0\),使得\(fib(n)\) \(mod\) \(m=0\), ...

  6. 洛咕 P2465 [SDOI2008]山贼集团

    裸的状压dp. 设f[i][j]表示在i字数内放j集合的分部,直接sb转移. // luogu-judger-enable-o2 #include<bits/stdc++.h> #defi ...

  7. 【洛咕P3400】仓鼠窝【单调栈】

    死灵复活时间ouo 闲的没事儿才写博客的死鸽子 这道题为P5300埋下了很好的伏笔qwq解法是差不多的. 一个矩阵里面的子矩阵有多少个很好求 如果加上了一些限制,我们就要重新考虑. 第一个逻辑是把大问 ...

  8. 洛咕 P3964 [TJOI2013]松鼠聚会

    有个结论就是把坐标\((x,y)\)变形成\(((x+y)/2,(x-y)/2)\),切比雪夫距离就变成了曼哈顿距离. 所以变换一下坐标直接统计答案即可. // luogu-judger-enable ...

  9. 洛咕 P2463 [SDOI2008]Sandy的卡片

    哈希水过. 首先这是一段delta相同的序列,按照套路差分一下,b[i]=a[i]-a[i-1],然后就是这些序列的最长公共子段 由于数据范围很小,就可以二分,枚举第一个序列的子段然后每个子序列暴力c ...

最新文章

  1. Maven的配置文件pom.xml
  2. 【SeeMusic】购买付费版本 ( 进入购买页面 | 购买流程 )
  3. linux环境中,top命令中,对command的命令进行扩展查看详情?
  4. EOJ_1017_座位分配
  5. 【Boost】boost库中thread多线程详解10——condition条件变量
  6. delphi 执行长时间存储过程 显示进度_项目管理_十大管理体系之「项目进度管理」知识整理及心得分享...
  7. 如何让程序集在每次编译时自动产生不同的版本号
  8. python基础补漏-03-函数
  9. Mysql数据库一个表字段中存了id,并以逗号分隔,id对应的详细信息在另一个表中,实现查询的方法...
  10. matlab冲激函数的傅里叶变换,信号与系统课件14.ppt
  11. KVM虚拟化技术原理简介
  12. 商汤科技VS旷视科技VS依图科技(转)
  13. html中ul怎么写,HTML: ul 标签
  14. 电商小程序开发要多少钱?一文看懂电商小程序开发成本
  15. SDHC ADMA和SDMA区别
  16. 从零搭建vue-ssr详细介绍
  17. 车间生产管理系统严格管控生产全过程?7大步骤分享
  18. CSS(列表+表格+链接+自定义鼠标光标)样式
  19. 提升效率之如何打印出漂亮的带颜色的日志(输出高亮)
  20. 域名抢注自动提交程序详解

热门文章

  1. java23中设计模式——行为模式——Memento(备忘机制)
  2. jQuery live事件说明及移除live事件方法
  3. ubuntu declare
  4. Windows-Server下加强系统安全性系列之方案【八】
  5. spring boot configuration annotation processor not found in classpath问题解决
  6. 银行交易系统 TiDB 在线缩容迁移
  7. 关于购买企业邮箱,谨防陷入几大误区
  8. intellij修改编辑器中的注释部分的颜色
  9. 深入理解计算机操作系统:链接
  10. linux创建目录记录日志,创建LVM的日志记录