[费用流对偶LP 单纯形] HihoCoder #1464 Challenge 26 Rikka with Flow
2017-02-15 12:28
423 查看
直接上dls的solution
关于我的单纯形TLE的问题 在这里讨论过了
关于对偶的问题 在这里放出来过
关于我的单纯形TLE的问题 在这里讨论过了
关于对偶的问题 在这里放出来过
#include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> using namespace std; const int N=505; const int M=505; const double eps=1e-8; int n,m; int nxt ; double a[M] ; inline void PIVOT(int l,int e){ int last=-1; for (int i=0;i<=n;i++) if (i!=e) a[l][i]/=a[l][e]; a[l][e]=1/a[l][e]; memset(nxt,-1,sizeof(nxt)); for (int i=0;i<=n;i++) if (i!=e && (a[l][i]>eps||a[l][i]<-eps)) nxt[i]=last,last=i; for (int i=0;i<=m;i++){ if (i==l || (a[i][e]<eps && a[i][e]>-eps)) continue; for (int j=last;~j;j=nxt[j]) a[i][j]-=a[i][e]*a[l][j]; a[i][e]=-a[i][e]*a[l][e]; } } inline double Simplex(){ while (1){ int l=0,e=0; double mn=1e15; double mx=eps; for (int i=1;i<=n;i++) if (a[0][i]>mx) { mx=a[0][i]; e=i; } if (!e) return -a[0][0]; for (int i=1;i<=m;i++) if (a[i][e]>eps && a[i][0]/a[i][e]<mn) mn=a[i][0]/a[i][e],l=i; PIVOT(l,e); } } int main(){ int _n,_m,_c,_u,_v,_w,_f; double Ans=0; freopen("t.in","r",stdin); freopen("t.out","w",stdout); scanf("%d%d%d",&_n,&_m,&_c); n=_n+2*_m; m=2*_m+1; for (int i=1;i<=_m;i++){ scanf("%d%d%d%d",&_u,&_v,&_f,&_w); Ans+=_w; a[i][_v]=1; a[i][_u]=-1; a[i][_n+i]=1; a[i][_n+_m+i]=-1; a[_m+i][_n+i]=1; a[_m+i][0]=_w; a[2*_m+1][_n+_m+i]=_f; a[0][_n+i]=1; } a[2*_m+1][0]=_c; Ans-=Simplex(); printf("%.10lf\n",Ans); return 0; }
相关文章推荐
- [点分治] HihoCoder #1462 Challenge 26 Rikka with Tree IV
- [随机化 || 黄金分割] HihoCoder #1461 Challenge 26 Rikka with Number
- [LP对偶费用流] SRM 676 div1 Farmville
- [LP对偶费用流] BZOJ 3112 [Zjoi2013]防守战线
- [LP对偶费用流] JAG Practice Contest 2015 J Longest Shortest Path
- [LP对偶 & 最大费用可行流] TopCoder SRM 676 div1 Farmville
- [LP对偶][含正权环的最大费用流] SRM 676 div1 1000pts Farmville
- 《Hands-on Machine Learning with Scikit-Learn and TensorFlow》 读书笔记
- [git] HOWTO work with git flow
- HDU 5630 Rikka with Chess
- HDOJ 5631 Rikka with Graph(图论)
- BestCoder Round #73 (div.2) Rikka with Graph 1002
- 并查集-HDU-5631-Rikka with Graph
- hdu 5631 Rikka with Graph(图)
- 【LeetCode Weekly Contest 26 Q4】Split Array with Equal Sum
- HDU 6090 Rikka with Graph (图论规律题)
- HDU 5630 Rikka with Chess
- 杭电5630 Rikka with Chess
- Word2Vec (Part 1): NLP With Deep Learning with Tensorflow (Skip-gram)
- HDU 5422:Rikka with Graph