传送门

由于这道题标程GG了所以必不可能AC嘛2333

单纯形法是一个很玄学的东西qwq

就是 非标准型 -> 标准型 -> 规范型 -> 松弛型

一个玄学操作——转轴操作(privot)

等着学习笔记到时候再补吧先把程序放出来

写了一些注释方便理解qwq

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<ctime>
#define inf 20021225
#define ll long long
#define db double
#define eps 1e-8
using namespace std; db ans[51],a[51][51];int id[51];int n,m,t; void privot(int x,int y)
{
swap(id[n+x],id[y]);
// 把基变量和非基变量只交换编号
// 相当于 id[n+x] x∈(1,m) 存基变量的编号
db tmp=1.0/a[x][y];
a[x][y]=1.0;// 原先基变量系数为1
for(int i=0;i<=n;i++) a[x][i]*=tmp;
// 非基变量化基变量系数化一 类似解方程代入法之前的系数化一
for(int i=0;i<=m;i++)
{
if(i==x||abs(a[i][y])<eps) continue;
db cur=a[i][y]; a[i][y]=0.0;
for(int j=0;j<=n;j++)
a[i][j]-=a[x][j]*cur;
}
// 利用新的基变量消元
} bool prework()
{
// 规范型线性规划要求b[i]非负 但是标准型没有这个要求 所以需要预处理
// 把所有b[i]是负的随机匹配几个a[i]是负的然后替换一下 b[i]就变成正的了
while(1)
{
int x=0,y=0,i;
for(i=1;i<=m;i++) if(a[i][0]<-eps && (!x || rand()&1)) x=i;
if(!x) return true;
for(i=1;i<=n;i++) if(a[x][i]<-eps && (!y || rand()&1)) y=i;
if(!y){printf("Infeasible\n");return false;}//只能取负数无可行域
privot(x,y);
}
return true;
} bool simplex()
{
while(1)
{
int i,x=0,y=0; double mn=1e15;
for(i=1;i<=n;i++) if(a[0][i]>eps){y=i;break;}
// 找一个目标系数>0的
if(!y) break;
for(i=1;i<=m;i++)
if(a[i][y]>eps&&a[i][0]/a[i][y]<mn)
mn=a[i][0]/a[i][y],x=i;
// 找限制最严格的
if(!x){printf("Unbounded\n");return false;}
// 没有限制直接上天(划)无穷大
privot(x,y);
}
return true;
} int main()
{
srand(time(0));
scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++) scanf("%lf",&a[0][i]),id[i]=i;
//初始非基变量i 基变量n+i
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++) scanf("%lf",&a[i][j]);
scanf("%lf",&a[i][0]);
}
if(prework()&&simplex())
{
printf("%.8lf\n",-a[0][0]);
if(t)
{
for(int i=1;i<=m;i++) ans[id[n+i]]=a[i][0];
for(int i=1;i<=n;i++) printf("%.8lf ",ans[i]);
}
}
return 0;
}

UOJ197 线性规划的更多相关文章

  1. 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)

    函数格式 scipy.optimize.linprog(c, A_ub=None, b_ub=None, A_eq=None, b_eq=None, bounds=None, method='simp ...

  2. java 线性规划 和lingo 比较

    model:max=13*A+ 23*B; 5*A + 15*B <480 ; 4*A + 4 *B <160 ; 35* A + 20 *B <1190 ; end Variabl ...

  3. 对偶理论、拉格朗日对偶问题、LP线性规划对偶性质

    Lagrange 对偶问题 定义其的对偶问题: Lagrange函数 考虑线性规划问题 若取集合约束D={x|x≥0},则该线性规划问题的Lagrange函数为 线性规划的对偶问题为: 对偶定理原问题 ...

  4. 用Microsoft.Solver.Foundation进行线性规划,为WPF应用添加智能

    在管理信息系统的开发过程中,往往会涉及到一些线性规划数学模型,例如资源配置优化.微软的Microsoft.Solver.Foundation是一个数学库,可以很好的对线性规划问题进行求解.关于它的细节 ...

  5. 【线性规划与网络流 24题】已完成(3道题因为某些奇怪的原因被抛弃了QAQ)

    写在前面:SDOI2016 Round1滚粗后蒟蒻开始做网络流来自我拯救(2016-04-11再过几天就要考先修课,现在做网络流24题貌似没什么用←退役节奏) 做的题目将附上日期,见证我龟速刷题. 1 ...

  6. matlab绘图--线性规划图解法示意

    matlab绘图--线性规划图解法示意 图解法 matlab绘图 区域填充 线性规划问题: matlab绘图 L1=[4,0;4,4];  plot(L1(:,1),L1(:,2));hold on  ...

  7. hdu 4091 线性规划

    分析转自:http://blog.csdn.net/dongdongzhang_/article/details/7955136 题意 :  背包能装体积为N,  有两种宝石, 数量无限, 不能切割. ...

  8. 建模算法(一)——线性规划

    一.解决问题 主要是安排现有资源(一定),取得最好的效益的问题解决,而且约束条件都是线性的. 二.数学模型 1.一般数学模型 2.MATLAB数学模型 其中c,x都是列向量,A,Aeq是一个合适的矩阵 ...

  9. UVA 10498 Happiness(线性规划-单纯形)

    Description Prof. Kaykobad has given Nasa the duty of buying some food for the ACM contestents. Nasa ...

随机推荐

  1. python爬虫 1.自己定义类实现scrapy框架的基本功能

    1.定义调度器,引擎,下载器,爬虫器,管道器 # 调度器,下载器,爬虫器,引擎,管道类 class Scheduler(): """调度器类""&qu ...

  2. python关于window文件写入后,换行默认\r\n的问题

    因为python兼容各种平台,所以当在window打开文本文件写入后,换行会默认写成\r\n linux是\n 如果想去掉换行的\r 解决方法:在open函数里写入换行要求即可 with open(f ...

  3. Linux 多个cpp文件的编译(Makefile)

    打包so文件: CC = g++ CFLAGS=-Wall -O2 -fPIC TARGET = libbg.so SRCS := $(wildcard *.cpp) OBJS := $(patsub ...

  4. .NET Core 构建跨平台的桌面应用

    1.运行环境 开发工具:Visual Studio 2017 JDK版本:.NET Core 2.0 项目管理工具:nuget 2.GITHUB地址 https://github.com/nbfujx ...

  5. spring-boot整合Mybatis多数据源案例

    1.运行环境 开发工具:intellij idea JDK版本:1.8 项目管理工具:Maven 4.0.0 2.GITHUB地址 https://github.com/nbfujx/springBo ...

  6. 4412 PWM

    一.PWM原理 1.有源蜂鸣器和无源蜂鸣器的概念 有源蜂鸣器高电平就响,无源蜂鸣器需要PWM波才响. 2.PWM脉冲波 PWM = 定时器 + 定时器中断(重载) + IO输出(翻转) 3.分析原理图 ...

  7. 黄金含量版本——KTV

    呀,进来的都是盆友,首先先给大家拜年了,祝大家新年快乐,万事如意,家和万事兴~! 大家看了标题进来就不能让大家白进来,一定会让大家带着满满的果实. 下面我们就来讨论讨论KTV这个项目: (1)KTV的 ...

  8. codeforces 582A GCD Table

    题意简述: 给定一个长度为$n$的序列 将这个序列里的数两两求$gcd$得到$n^2$个数 将这$n^2$个数打乱顺序给出 求原序列的一种可能的情况 ------------------------- ...

  9. 基础复习之HTML (doctype、标签语义化)

    这段时间找实习看的眼花缭乱的,然后也被拒得落花流水,啊哈哈-还是写博客好玩儿-嘿嘿,下面正题 一.doctype 标准模式 (Full Standards Mode) 接近标准模式 (Almost S ...

  10. SPRING CLOUD微服务DEMO-下篇

    目录 1 Hystix 1.1 简介 1.2 配置并测试 2. Feign 2.1 简介 2.2 使用Feign 2.3 负载均衡 2.4 Hystrix支持 2.5.请求压缩 3. Zuul网关 3 ...