bzoj1497 NOI2006 最大获利 最小割
来源:互联网 发布:网络上签的合同有效吗 编辑:程序博客网 时间:2024/05/19 12:18
woc我真的想打人了,inf值如果不调到最大就tle是什么鬼?????我整整调了将近一个小时啊淦!
。。
连边的话,看amber的论文就好了,然后形成最大权封闭子图,s向正权点连边,负权点向t连边,容量都为权值,可以证明一个方案和一个割一一对应。
/************************************************************** Problem: 1497 User: NamlessYang Language: C++ Result: Accepted Time:652 ms Memory:7856 kb****************************************************************/#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define T n+m+1#define inf 0x7fffffffusing namespace std;int n,m;const int N=5e5+5;int head[60001],next[N],go[N],val[N];int h[60005],tot=1,q[60001],ans=0; void ins(int x,int y,int z){ go[++tot]=y; val[tot]=z; next[tot]=head[x]; head[x]=tot; go[++tot]=x; next[tot]=head[y]; head[y]=tot;} bool bfs(){ int now,t=0,w=1,p,i; memset(h,-1,sizeof(h)); q[t]=h[0]=0; while(t<w) { now=q[t];t++; i=head[now]; while(i) { if(val[i]&&h[go[i]]<0) { q[w++]=go[i]; h[go[i]]=h[now]+1; } i=next[i]; } } if(h[n+m+1]==-1)return 0; return 1;}int dfs(int x,int f){ if(x==n+m+1)return f; int i=head[x]; int w,used=0; while(i) { if(val[i]&&h[go[i]]==h[x]+1) { w=f-used; w=dfs(go[i],min(w,val[i])); val[i]-=w; val[i^1]+=w; used+=w; if(used==f)return f; } i=next[i]; } if(!used)h[x]=-1; return used;} void dinic(){ while(bfs())ans+=dfs(0,inf);}int main(){ int sum=0; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { int a; scanf("%d",&a); ins(0,i,a); } for(int i=1;i<=m;i++) { int a,b,c; scanf("%d%d%d",&a,&b,&c); ins(a,n+i,inf); ins(b,n+i,inf); ins(n+i,n+m+1,c); sum+=c; } dinic(); printf("%d",sum-ans); return 0;}
0 0
- [BZOJ1497][NOI2006]最大获利(最小割)
- bzoj1497 NOI2006 最大获利 最小割
- BZOJ1497 NOI2006最大获利
- [BZOJ1497][NOI2006]最大获利
- bzoj1497[NOI2006]最大获利
- bzoj1497【NOI2006】最大获利
- 【bzoj1497】NOI2006最大获利
- 【NOI2006】BZOJ1497最大获利
- BZOJ1497: [NOI2006]最大获利
- bzoj1497 [NOI2006]最大获利
- [NOI2006]最大获利 BZOJ1497
- bzoj1497: [NOI2006]最大获利
- BZOJ1497 [NOI2006] 最大获利
- BZOJ1497: [NOI2006]最大获利
- bzoj1497 [NOI2006]最大获利
- bzoj1497: [NOI2006]最大获利(最大权闭合子图,最小割)
- 最小割模型——最大权闭合子图 【NOI2006】bzoj1497 最大获利
- [最大权闭合子图 & 最小割] BZOJ1497: [NOI2006] 最大获利
- 串口波特率计算
- Android--ListView的使用与常用数据适配器(Adapter)--案例《应用市场》
- 《疯狂JAVA讲义》之九——Java数据类型分类
- java中创建string的方法
- 使用Vue.js和Laravel构建的开源博客。
- bzoj1497 NOI2006 最大获利 最小割
- BZOJ 1031 字符加密【后缀数组】
- 摄像机的跟随
- [SMOJ1775]岛和桥
- Python进阶(三十九)-数据可视化の使用matplotlib进行绘图分析数据
- linux下find命令的使用小结
- Deep Residual Learning for Image Recognition(ResNet)残差网络解读
- XGBoost原理解析
- 单元格的边框没有被显示出来