【BZOJ3112】[Zjoi2013]防守战线 单纯形法
2017-06-20 14:45
281 查看
【BZOJ3112】[Zjoi2013]防守战线
题解:依旧是转化成对偶问题,然后敲板子就行了~
建完表后发现跟志愿者招募的表正好是相反的,感觉很神奇~
#include <cstdio> #include <cstring> #include <iostream> #include <cmath> using namespace std; const double inf=1e12; const double eps=1e-6; double A[1010][10010]; int p[10010]; int n,m; int rd() { int ret=0,f=1; char gc=getchar(); while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();} while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar(); return ret*f; } void pivot(int l,int e) { double t=A[l][e];A[l][e]=1; int i,j; for(j=0;j<=n;j++) A[l][j]/=t; for(p[0]=j=0;j<=n;j++) if(fabs(A[l][j])>eps) p[++p[0]]=j; for(i=0;i<=m;i++) if(i!=l&&fabs(A[i][e])>eps) { t=A[i][e],A[i][e]=0; for(j=1;j<=p[0];j++) A[i][p[j]]-=t*A[l][p[j]]; } } void simplex() { while(1) { double mn=inf; int i,l=0,e=0; for(i=1;i<=n;i++) if(A[0][i]>eps) { e=i; break; } if(!e) return; for(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; if(!l) return; pivot(l,e); } } int main() { m=rd(),n=rd(); int i,j,l,r; for(i=1;i<=m;i++) A[i][0]=rd(); for(i=1;i<=n;i++) { l=rd(),r=rd(),A[0][i]=rd(); for(j=l;j<=r;j++) A[j][i]=1; } simplex(); printf("%d",int(-A[0][0]+0.5)); return 0; }
相关文章推荐
- 【BZOJ3112】防守战线(ZJOI2013)-单纯形法+对偶理论
- BZOJ 3112: [Zjoi2013]防守战线 [单纯形法]
- BZOJ 3112([Zjoi2013]防守战线-单纯形)
- BZOJ 3112 Zjoi2013 防守战线 单纯形
- 【差分+费用流|单纯形】BZOJ3112 [Zjoi2013]防守战线
- BZOJ 3112 [Zjoi2013]防守战线
- [单纯形 || 差分费用流 || 辅助变量费用流] BZOJ 3112 [Zjoi2013]防守战线
- 【ZJOI2013】bzoj3112 防守战线
- BZOJ 3112 [Zjoi2013]防守战线 线性规划
- bzoj3112 [Zjoi2013]防守战线(线性规划)
- [bzoj3112][Zjoi2013]防守战线
- BZOJ 3265 志愿者招募(BZOJ 1061)加强版 && BZOJ 3112 [Zjoi2013]防守战线 单纯形
- 【bzoj3112】[Zjoi2013]防守战线 单纯形
- [LP对偶费用流] BZOJ 3112 [Zjoi2013]防守战线
- BZOJ 3112 [Zjoi2013]防守战线 线性规划
- 线性规划单纯型法(bzoj 3112: [Zjoi2013]防守战线)
- bzoj 3112: [Zjoi2013]防守战线 (单纯形)
- bzoj3112 [Zjoi2013]防守战线
- bzoj 3112: [Zjoi2013]防守战线 单纯形
- [BZOJ3112][ZJOI2013]防守战线(单纯形)