[NOI2010]:海拔
来源:互联网 发布:烧饼修改器源码 编辑:程序博客网 时间:2024/04/27 21:27
传送门
想了想就发现其实就是求一个最小割,然后dinic直接上,只有90分
好像正解是对偶图SPFA最短路,以后再来补吧。。
代码:(dinic)
#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define R registerusing namespace std;inline int read(){ int x=0;char ch=' ';int f=1; while(ch!='-'&&(ch<'0'||ch>'9'))ch=getchar(); if(ch=='-')f=-1,ch=getchar(); while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar(); return x*f;}const int N=5e5+5,M=N*40;int n,tot=-1,s,t;int head[N],to[M],Next[M],flow[M],d[N],q[N],cur[N];inline void addedge(int x,int y,int c){ to[++tot]=y;Next[tot]=head[x];head[x]=tot;flow[tot]=c; to[++tot]=x;Next[tot]=head[y];head[y]=tot;flow[tot]=0;}inline int id(int x,int y){return (x-1)*n+y;}inline bool bfs(){ for(R int i=s;i<=t;++i)d[i]=0x3f3f3f3f; int l=1,r=1;q[1]=s;d[s]=0; while(l<=r){ int x=q[l++]; for(int i=head[x];~i;i=Next[i]){ int u=to[i]; if(flow[i]&&d[u]>d[x]+1){ d[u]=d[x]+1; q[++r]=u; } } } return d[t]!=0x3f3f3f3f;}inline int dfs(int x,int a){ if(x==t||!a)return a; int F=0,f; for(int &i=cur[x];~i;i=Next[i]){ int u=to[i]; if(flow[i]&&d[u]==d[x]+1&&(f=dfs(u,min(a,flow[i])))>0){ flow[i]-=f; flow[i^1]+=f; F+=f;a-=f; if(!a)return F; } } return F;}inline int dinic(){ int F=0; while(bfs()){ for(R int i=s;i<=t;++i)cur[i]=head[i]; F+=dfs(s,0x3f3f3f3f); } return F;}int main(){ memset(head,-1,sizeof(head)); n=read()+1;s=1;t=n*n; for(R int i=1;i<=n;++i)for(R int j=1;j<n;++j){int v=read();addedge(id(i,j),id(i,j+1),v);} for(R int i=1;i<n;++i)for(R int j=1;j<=n;++j){int v=read();addedge(id(i,j),id(i+1,j),v);} for(R int i=1;i<=n;++i)for(R int j=1;j<n;++j){int v=read();addedge(id(i,j+1),id(i,j),v);} for(R int i=1;i<n;++i)for(R int j=1;j<=n;++j){int v=read();addedge(id(i+1,j),id(i,j),v);} printf("%d",dinic()); return 0;}
阅读全文
0 0
- [NOI2010]海拔
- 【NOI2010】海拔
- NOI2010 海拔
- NOI2010 海拔
- [NOI2010]:海拔
- BZOJ 2007: [Noi2010]海拔
- bzoj 2007:[noi2010]海拔
- 【bzoj2007】【NOI2010】【海拔】
- 2007: [Noi2010]海拔
- 2007: [Noi2010]海拔
- 【NOI2010】bzoj2007 海拔
- BZOJ 2007: [Noi2010]海拔
- bzoj2007 [Noi2010]海拔
- BZOJ2007: [Noi2010]海拔
- BZOJ 2007: [Noi2010]海拔
- [NOI2010]海拔(最小割)
- 【NOI2010】海拔【平面图最小割】
- BZOJ2007——[Noi2010]海拔
- 程序员偷偷深爱的9个不良编程习惯
- 重大改革!教育部将Python纳入全国计算机等级考试科目
- 一个php 英汉词典
- Python字符串
- Spring Cloud构建微服务架构(三)服务消费者(Feign)
- [NOI2010]:海拔
- 从零开始教你训练神经网络(附公式&学习资源)
- 近期活动盘点:智慧园区大数据精准招商思享会、数据法学研讨会、海外学者短期讲学(12.21-12.24)
- 如何从中兴员工跳楼看背后的本质问题?
- 番外1-6——《地与光》
- 英专家警告称:无人驾驶汽车或将成为黑客下一个目标
- 重大发现!NASA借助谷歌AI技术发现:第二个太阳系!
- 2017英国AI形势报告:认知鸿沟、新商业模式和当下的挑战
- 「快哥评测」人工智能根基——分钟带你看懂从沙子到芯片过程