单纯形法

BZOJ3265题意:

单纯形法_第1张图片

输入:

单纯形法_第2张图片

输出:

#include
using namespace std;
typedef long long LL;
const int maxn = 1005, maxm = 10005;
const double inf = 0x3f3f3f3f3f3f3f3f, eps = 1e-7;
int n, m;
double b[maxm], c[maxn], cof[maxm][maxn], ans;
void check(){
    for(int i=1;i<=3;i++){
        for(int j=1;j<=3;j++)
            cout<

Sample Input

3 3

2 3 4

1 1 2 2

1 2 3 5

1 3 3 2

Sample Output

14

题解:

单纯形法解线性规划,这里是最小化目标函数,并且限制条件是大于等于。用对偶原理可以转化为标准的线性规划。

对偶原理: 将限制矩阵转置一下,就是a[i,j]变成a[j,i],然后目标函数的系数和每个限制的那个常数也互换一下。就可以将大于等于变为小于等于,将最小化变为最大化。

单纯形法_第3张图片这里设志愿者数量的向量为X , 每天需要人数的向量为Y , 目标最小值的系数向量为C , 便可以得到一个最小化目标值的线性规划:

AX≥Y,求MIN(CX),

但这线性规划不好找基本解所以把这玩意对偶:

A(T)X’≤C,求MAX(YX’)

式中(T)是转置的意思。

         最后一句:题型识别!

你可能感兴趣的:(ACM笔记-5代数)