单纯形求解线性规划(BZOJ1061)
推荐一篇论文:http://wenku.baidu.com/view/ce5784754a7302768f99391d
我们设xi为第i个志愿者的招募次数,以样例为例,则不难列出如下的线性规划方程:
min{2x1+5x2+2x3}
x1+0+0>=2
x1+x2+0>=3
0+x2+x3>=4
那么,根据论文,这个方程等价于:
max{2x1+3x2+4x3}
x1+x2+0<=2
0+x2+x3<=5
0+0+x3<=2
我们发现,这是一个线性规划方程的基本形式,基本解为{0,0,0}
然后套模板就可以了。
#include <cstdio> const int N=,M=;
int n,m,x,y,p,id;
double ans,c[N],b[M],a[M][N]; void pvt(int id,int p) {
a[id][p]=/a[id][p],b[id]*=a[id][p];
for(int i=;i<=n;i++) if(i^p) a[id][i]*=a[id][p];
for(int i=;i<=m;i++) if((i^id)&&a[i][p]) {
for(int j=;j<=n;j++) if(j^p) a[i][j]-=a[i][p]*a[id][j];
b[i]-=a[i][p]*b[id],a[i][p]*=-a[id][p];
}
for(int i=;i<=n;i++) if(i^p) c[i]-=c[p]*a[id][i];
ans+=c[p]*b[id],c[p]*=-a[id][p];
}
double sol() {
while() {
for(p=;p<=n;p++) if(c[p]>) break;
if(p==n+) return ans;
double fz=0x3f3f3f3f;
for(int i=;i<=m;i++) if(a[i][p]>&&b[i]/a[i][p]<fz) fz=b[i]/a[i][p],id=i;
if(fz==0x3f3f3f3f) return fz;
pvt(id,p);
}
} int main() {
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++) scanf("%lf",&c[i]);
for(int i=;i<=m;i++) {
scanf("%d%d%lf",&x,&y,&b[i]);
for(int j=x;j<=y;j++) a[i][j]=;
}
printf("%.0f",sol());
return ;
}
单纯形求解线性规划(BZOJ1061)的更多相关文章
- matlab学习笔记之求解线性规划问题和二次型问题
一.线性规划问题 已知目标函数和约束条件均为线性函数,求目标函数的最小值(最优值)问题. 1.求解方式:用linprog函数求解 2.linprog函数使用形式: x=linprog(f,A,b) ...
- matlab 求解线性规划问题
线性规划 LP(Linear programming,线性规划)是一种优化方法,在优化问题中目标函数和约束函数均为向量变量的线性函数,LP问题可描述为: minf(x):待最小化的目标函数(如果问题本 ...
- Python求解线性规划——PuLP使用教程
简洁是智慧的灵魂,冗长是肤浅的藻饰.--莎士比亚<哈姆雷特> 1 PuLP 库的安装 如果您使用的是 Anaconda[1] 的话(事实上我也更推荐这样做),需要先激活你想要安装的虚拟环境 ...
- Lingo求解线性规划案例4——下料问题
凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 造纸厂接到定单,所需卷纸的宽度和长度如表 卷纸的宽度 长度 5 7 9 10000 30000 20000 工 ...
- Lingo求解线性规划案例3——混料问题
凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 某糖果厂用原料A.B和C按不向比率混合加工而成甲.乙.丙三种糖果(假设混合加工中不损耗原料).原料A.B.C ...
- Lingo求解线性规划案例1——生产计划问题
凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 说明: Lingo版本: 某工厂明年根据合同,每个季度末 ...
- Lingo求解线性规划案例2——多阶段投资问题
凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 某公司现有资金30万元可用于投资,5年内有下列方案可供采纳: 1号方案:在年初投资1元,2年后可收回1. ...
- 用Lingo求解线性规划问题
第一步:输入目标条件和约束条件.每行以分号隔开.然后点击工具栏上的Solve按钮,或Lingo菜单下的Solve子菜单. 第二步:检查report中的结果. 默认情况下,Lingo不进行灵敏度分析. ...
- MATLAB求解线性规划
随机推荐
- nyoj 聪明的kk
聪明的kk 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 聪明的"KK"非洲某国展馆的设计灵感源于富有传奇色彩的沙漠中陡然起伏的沙丘,体现出本国 ...
- NYOJ 炫舞家st
#include <iostream>#include <cstring>#include <algorithm>using namespace std; cons ...
- Centos7 Yum方式安装Mysql7
不废话,直奔主题,可以覆盖安装. 下载并安装MySQL官方的 Yum Repository [root@localhost ~]# wget -i -c http://dev.mysql.com/ge ...
- appiun滑动的简单封装
import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.test ...
- ASP.NET 访问项目网站以外的目录文件
简单的说,可以通过在 IIS 添加虚拟目录的方法做到,获取访问路径的时候就用 HttpContext.Current.Server.MapPath("~/xxx"); 的方式. 下 ...
- ( 转 ) 聊一聊C#的Equals()和GetHashCode()方法
聊一聊C#的Equals()和GetHashCode()方法 博客创建一年多,还是第一次写博文,有什么不对的地方还请多多指教. 关于这次写的内容可以说是老生长谈,百度一搜一大堆.大神可自行绕路. ...
- 解决IE8下CSS3选择器 :nth-child() 不兼容的问题
1.定义和用法 :nth-child(n) 选择器匹配属于其父元素的第 N 个子元素,不论元素的类型. n 可以是数字.关键词或公式. <ul> <li>1</li> ...
- Jenkins中展示HTML测试报告
背景:测试报告是用reportNG生成的,属于java自动化测试项目. 1) 安装插件 首先要安装HTML Publisher plugin,这个在插件管理里面搜索并安装即可,如下我已 ...
- Mego开发文档 - 数据属性生成值
数据属性生成值 该功能用于在数据插入或更新时为指定属性生成期望的值,Mego提供了非常灵活的实现方式以满足各种数据提交时的自动赋值问题. 生成值目的及模式 在Mego中生成值的目的一定是插入数据或更新 ...
- 一种dubbo逻辑路由方案
背景介绍 现在很多的公司都在用dubbo.springcloud做为服务化/微服务的开发框架,服务化之后应用越来越多,链路越来越长,服务环境的治理变的很困难.比如:研发团队的人很多的,同时有几个分支在 ...