【UOJ#179】线性规划 单纯形
题目链接:
Solution
就是单纯形模板题,这篇博客就是存一下板子。
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
#define eps 1e-9
inline int read()
{
int x=0,f=1; char ch=getchar();
while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
return x*f;
} int N,M,id[11000];
double a[1100][1100],c[1100],b[1100],v,ans[1100];
inline void Pivot(int l,int e)
{
swap(id[e],id[N+l]); double r=a[l][e]; a[l][e]=1;
for (int i=1; i<=N; i++) a[l][i]/=r;
b[l]/=r; for (int i=1; i<=M; i++)
if (i!=l) {
r=a[i][e]; a[i][e]=0,b[i]-=r*b[l];
for (int j=1; j<=N; j++) a[i][j]-=r*a[l][j];
} r=c[e];
c[e]=0;
for (int i=1; i<=N; i++) c[i]-=r*a[l][i]; v+=r*b[l];
} inline int Simplex()
{
int l,e; double k;
while (1) {
l=e=0; k=-eps;
for (int i=1; i<=M; i++)
if (b[i]<k) k=b[i],l=i;
if (!l) break;
k=-eps;
for (int i=1; i<=N; i++)
if (a[l][i]<k && (!e || (rand()&1))) k=a[l][i],e=i;
if (!e) {puts("Infeasible"); return 1;}
Pivot(l,e);
}
while (1) {
for (int i=1; i<=N; i++) {
if (c[i]>eps) {e=i; break;}
if (i==N) {printf("%.8lf\n",v); return 0;}
}
double re=1e18; l=0; for (int i=1; i<=M; i++)
if (a[i][e]>eps && b[i]/a[i][e]<re)
re=b[i]/a[i][e],l=i; if (!l) {puts("Unbounded"); return 2;}
Pivot(l,e);
} } int main()
{
N=read(),M=read(); int type=read(); for (int i=1; i<=N; i++) scanf("%lf",&c[i]),id[i]=i;
for (int i=1; i<=M; i++) {
for (int j=1; j<=N; j++) scanf("%lf",&a[i][j]);
scanf("%lf",&b[i]);
} int flag=Simplex(); if (flag || !type) return 0; for (int i=1; i<=M; i++) ans[id[N+i]]=b[i];
for (int i=1; i<=N; i++) printf("%.8lf ",ans[i]); return 0;
}
【UOJ#179】线性规划 单纯形的更多相关文章
- UOJ.179.线性规划(单纯形)
题目链接 这写得还不错:http://www.cnblogs.com/zzqsblog/p/5457091.html 引入基变量\(x_{i+n}\),将约束\(\sum_{i=1}^m a_{ij} ...
- UOJ#179. 线性规划[模板]
传送门 http://uoj.ac/problem/179 震惊,博主竟然还不会线性规划! 单纯形实在学不会啊……背个板子当黑盒用…… 学(chao)了NanoApe dalao的板子 #includ ...
- UOJ#179. 线性规划(线性规划)
描述 提交 自定义测试 这是一道模板题. (这个题现在标程挂了..哪位哥哥愿意提供一下靠谱的标程呀?) 本题中你需要求解一个标准型线性规划: 有 nn 个实数变量 x1,x2,…,xnx1,x2,…, ...
- uoj#179 线性规划
这是一道模板题. 本题中你需要求解一个标准型线性规划: 有nn个实数变量x1,x2,⋯,xnx1,x2,⋯,xn和mm条约束,其中第ii条约束形如∑nj=1aijxj≤bi∑j=1naijxj≤bi. ...
- 【UOJ #179】线性规划 单纯形模板
http://uoj.ac/problem/179 终于写出来了单纯性算法的板子,抄的网上大爷的qwq 辅助线性规划找非基变量时要加个随机化才能A,我也不知道为什么,卡精度吗? 2017-3-6UPD ...
- 【UOJ 179】 #179. 线性规划 (单纯形法)
http://uoj.ac/problem/179 补充那一列修改方法: 对于第i行: $$xi=bi-\sum Aij*xj$$ $$=bi-\sum_{j!=e} Aij*xj-Aie*xe ...
- UVA 10498 Happiness(线性规划-单纯形)
Description Prof. Kaykobad has given Nasa the duty of buying some food for the ACM contestents. Nasa ...
- Note -「线性规划」学习笔记
\(\mathcal{Definition}\) 线性规划(Linear Programming, LP)形式上是对如下问题的描述: \[\operatorname{maximize}~~~~z= ...
- 线性规划VB求解
线性规划VB求解 Rem 定义动态数组 Dim a() As Single, c() As Single, b() As Single, cb() As Single Dim aa() As Sing ...
随机推荐
- spring注解 @Scheduled(cron = "0 0 1 * * *")实现定时的执行任务
@Scheduled(cron = "0 0 1 * * *") 在使用该注解以前请做好以下准备工作,配置好相应的xm文件. 配置定时注解的步骤:http://blog.csdn. ...
- java取得当前日期增加一天或多天
代码如下: SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getI ...
- Zookeeper笔记之quota
一.节点配额概述 zookeeper中可以往节点存放数据,但是一般来说存放数据总是要有个度量的对吧,不然空间就那么大,如果某个节点将空间全占用了其它节点没得用了,所以zookeeper提供了一个对节点 ...
- 在Windows 2008上安装Windows Mobile设备中心
我在windows2008系统上安装Microsoft Windows Mobile Device Center v6.1时,老是弹出对话框提示缺少一个Windows Mobile设备中心所需要的Wi ...
- Python 入门基础7 --文件操作
今日目录: 一.文件处理 1.什么是文件 2.为何用文件 3.如何用文件 4.文件操作 5.常用方法 6.文件内指针的移动 7.with的使用 一.文件处理 1. 什么是文件 文件是操作系统为用户/应 ...
- [转]CMake cache
CMakeCache.txt 可以将其想象成一个配置文件(在Unix环境下,我们可以认为它等价于传递给configure的参数). CMakeLists.txt 中通过 set(... CACHE . ...
- 一份最中肯的Java学习路线+资源分享(拒绝傻逼式分享)
这是一篇针对Java初学者,或者说在Java学习路线上出了一些问题(不知道该学什么.不知道整体的学习路线是什么样的) 第一步:Java基础(一个月左右) 推荐视频: 下面的是黑马内部视频,我比较推荐的 ...
- word技巧
1.插入注解(脚注和尾注) 2.复制的图片显示不全怎么办? 横向显示,或者图片另存为然后保存为PPT 3.word修订标记的添加和删除(最终版) 4.word中表格样式调整 5.修改标题的样式和标题的 ...
- python3解析库pyquery
pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语 ...
- 环形缓冲区-模仿linux kfifo【转】
转自:https://blog.csdn.net/vertor11/article/details/53741681 struct kfifo{ uint8_t *buffer; uint32_t i ...