双倍经验题,BZOJ3265。
先用对偶原则转换成求对偶问题的解,这样直接转化成了标准型,然后跑Simplex就好了。
下面是对样例的一个计算过程。
/* Footprints In The Blood Soaked Snow */
#include <cstdio>
#include <cmath>
typedef double DB;
typedef long long LL;
const int maxn = 1005, maxm = 10005;
const DB inf = 0x3f3f3f3f3f3f3f3f, eps = 1e-7;
int n, m;
DB b[maxm], c[maxn], cof[maxm][maxn], ans;
inline void pivot(int id, int pos) {
b[id] /= cof[id][pos];
cof[id][pos] = 1 / cof[id][pos];
for(int i = 1; i <= n; i++) if(i != pos) cof[id][i] *= cof[id][pos];
for(int i = 1; i <= m; i++) if(i != id && fabs(cof[i][pos]) > eps) {
b[i] -= cof[i][pos] *