传送门 http://uoj.ac/problem/179

震惊,博主竟然还不会线性规划!

单纯形实在学不会啊……背个板子当黑盒用……

学(chao)了NanoApe dalao的板子

 #include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const double eps=1e-;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} int n,m,t;
double c[mxn];
double a[mxn][mxn];
int idx[mxn],idy[mxn];
int st[mxn],top=;
void Pivot(int x,int y){//用idy代换idx
swap(idy[x],idx[y]);
double tmp=a[x][y];a[x][y]=/a[x][y];
int i,j;top=;
for(i=;i<=n;i++)if(y!=i)a[x][i]/=tmp;
for(i=;i<=n;i++)if((y!=i) && fabs(a[x][i])>eps)st[++top]=i;
for(i=;i<=m;i++){
if((i==x)||(fabs(a[i][y])<eps))continue;
for(j=;j<=top;j++)a[i][st[j]]-=a[x][st[j]]*a[i][y];
a[i][y]=-a[i][y]/tmp;
}
return;
}
void Simplex(){
int i,j;
while(){
int x=,y=;double mn=1e15;
for(i=;i<=n;i++)if(a[][i]>eps){y=i;break;}
if(!y)break;
for(i=;i<=m;i++){
if(a[i][y]>eps && (a[i][]/a[i][y]<mn)){
mn=a[i][]/a[i][y];
x=i;
}
}
if(!x){printf("Unbounded\n");exit();}
Pivot(x,y);
}
return;
}
int main(){
int i,j;
n=read();m=read();t=read();
for(i=;i<=n;i++)a[][i]=read();//目标函数
for(i=;i<=m;i++){
for(j=;j<=n;j++)a[i][j]=read();
a[i][]=read();
}
for(i=;i<=n;i++)idx[i]=i;//基变量
for(i=;i<=m;i++)idy[i]=i+n;//非基变量
while(){
int x=,y=;
for(i=;i<=m;i++)if(a[i][]<-eps && ((!x)||(rand()&)))x=i;
if(!x)break;
for(i=;i<=n;i++)if(a[x][i]<-eps && ((!y)||(rand()&)))y=i;
if(!y){printf("Infeasible\n");return ;}
Pivot(x,y);
}
Simplex();
printf("%.8f\n",-a[][]);
if(!t)return ;
for(i=;i<=n;i++)a[][i]=;
for(i=;i<=m;i++)if(idy[i]<=n)a[][idy[i]]=a[i][];
for(i=;i<=n;i++)printf("%.8f ",a[][i]);puts("");
return ;
}

UOJ#179. 线性规划[模板]的更多相关文章

  1. uoj#179 线性规划

    这是一道模板题. 本题中你需要求解一个标准型线性规划: 有nn个实数变量x1,x2,⋯,xnx1,x2,⋯,xn和mm条约束,其中第ii条约束形如∑nj=1aijxj≤bi∑j=1naijxj≤bi. ...

  2. UOJ#179. 线性规划(线性规划)

    描述 提交 自定义测试 这是一道模板题. (这个题现在标程挂了..哪位哥哥愿意提供一下靠谱的标程呀?) 本题中你需要求解一个标准型线性规划: 有 nn 个实数变量 x1,x2,…,xnx1,x2,…, ...

  3. UOJ.179.线性规划(单纯形)

    题目链接 这写得还不错:http://www.cnblogs.com/zzqsblog/p/5457091.html 引入基变量\(x_{i+n}\),将约束\(\sum_{i=1}^m a_{ij} ...

  4. 【UOJ #179】线性规划 单纯形模板

    http://uoj.ac/problem/179 终于写出来了单纯性算法的板子,抄的网上大爷的qwq 辅助线性规划找非基变量时要加个随机化才能A,我也不知道为什么,卡精度吗? 2017-3-6UPD ...

  5. 【UOJ#179】线性规划 单纯形

    题目链接: http://uoj.ac/problem/179 Solution 就是单纯形模板题,这篇博客就是存一下板子. Code #include<iostream> #includ ...

  6. 【UOJ 179】 #179. 线性规划 (单纯形法)

    http://uoj.ac/problem/179 补充那一列修改方法: 对于第i行: $$xi=bi-\sum Aij*xj$$    $$=bi-\sum_{j!=e} Aij*xj-Aie*xe ...

  7. UOJ#34 FFT模板题

    写完上一道题才意识到自己没有在博客里丢过FFT的模板-- 这道题就是裸的多项式乘法,可以FFT,可以NTT,也可以用Karasuba(好像有人这么写没有T),也可以各种其他分治乘法乱搞-- 所以我就直 ...

  8. [UOJ#35] [UOJ后缀数组模板题] 后缀排序 [后缀数组模板]

    后缀数组,解决字符串问题的有利工具,本题代码为倍增SA算法 具体解释详见2009年国家集训队论文 #include <iostream> #include <algorithm> ...

  9. Note -「线性规划」学习笔记

    \(\mathcal{Definition}\)   线性规划(Linear Programming, LP)形式上是对如下问题的描述: \[\operatorname{maximize}~~~~z= ...

随机推荐

  1. Java微笔记(3)

    Java 中的 static 使用之静态变量 Java 中被 static 修饰的成员称为静态成员或类成员. 它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享. 静态成员可以使用类名直接访 ...

  2. Java容器之Set接口

    Set 接口: 1. Set 接口是 Collection 的子接口,Set 接口没有提供额外的方法,但实现 Set 接口的容器类中的元素是没有顺序的,且不可以重复: 2. Set 容器可以与数学中的 ...

  3. Swift-map()跟flatMap()区别

    map()方法介绍 map() 是  Array 提供的方法,通过接收一个函数作为传入参数,对数组中每个元素进行函数变换得到新的结果值.这样只需要提供  X->Y 的映射关系,就能将数组  [X ...

  4. Spring IOC原理简析

    所谓IoC, 就是一个用XML来定义生成对象的模式. 1.现有三个类,Human是接口,Chinese是一个实现类,American是另一个实现类. 2.获取以上对象采用工厂模式的用法如下: 创建一个 ...

  5. input 元素 相对父元素错位

    <div class="recommend"> <i class="iconfont icon-user"></i> < ...

  6. BZOJ 1787 紧急集合(LCA)

    转换成抽象模型,就是要求一棵树(N个点,有N-1条边表示这个图是棵树)中某一点满足给定三点a,b,c到某一点的距离和最小.那么我们想到最近公共祖先的定义,推出只有集合点在LCA(a,b).LCA(a, ...

  7. 【bzoj1076】[SCOI2008]奖励关 期望dp+状态压缩dp

    题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...

  8. sqlserver修改sa密码(在windows登陆没有权限的情况下)

    对于windows用户没有权限执行alter login sa enable的情况下,采用如下方法可以成功修改sa密码登陆. . 用Run as a administrator打开命令提示符里输入NE ...

  9. 【转】PowerDesigner中Table视图同时显示Code和Name

    为避免图片失效,文字描述, Tools-Display Preference-->左侧Table-->右下角Advanced-->左侧树Columns-->右侧上面第一个放大镜 ...

  10. BZOJ3123:[SDOI2013]森林——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=3123 https://www.luogu.org/problemnew/show/P3302 树上主 ...