Main topic:
Simple form ...
#include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include < algorithm> #define EPS 1e-7#define INF 1e10using namespace Std;int n,m;namespace linear_programming{double A[1010][ 10100],b[1010],c[10100],v;void Pivot (int l,int e) {int i,j;b[l]/=a[l][e];for (i=1;i<=n;i++) if (i!=e) A[l][i]/=A[l][ E]; A[l][e]=1/a[l][e];for (i=1;i<=m;i++) if (I!=l&&fabs (A[i][e]) >eps) {b[i]-=a[i][e]*b[l];for (j=1;j<= n;j++) if (j!=e) a[i][j]-=a[i][e]*a[l][j]; A[i][e]=-a[i][e]*a[l][e];} V+=c[e]*b[l];for (i=1;i<=n;i++) if (i!=e) c[i]-=c[e]*a[l][i];c[e]=-c[e]*a[l][e];} Double Simplex () {int I,l,e;while (1) {for (i=1;i<=n;i++) if (c[i]>eps) break;if ((e=i) ==n+1) return v;double temp= Inf;for (i=1;i<=m;i++) if (a[i][e]>eps && b[i]/a[i][e]<temp) temp=b[i]/a[i][e],l=i;if (Temp==INF) return INF; Pivot (l,e);}}} int main () {using namespace Linear_programming;int i,j,x,y,z;cin>>m>>n;for (i=1;i<=m;i++) scanf ("%lf", &b[i]); for (i=1;i<=n;i++) {scanf ("%d%d%d ", &x,&y,&z); for (j=x;j<=y;j++) a[j][i]=1;c[i]=z;} Double Ans=simplex ();cout<< (Long Long) (ans+0.5) <<endl;return 0;}
Bzoj 3112 Zjoi2013 defensive front Simple form