单纯形模板
来源:互联网 发布:js正则表达式可以为空 编辑:程序博客网 时间:2024/06/01 09:48
学习UOJ上dalao们的初始化黑科技
#include <cstdio>#include <cstring>#include <algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long double db;const int N=25;db a[N][N],eps=1e-9;int id[N*2],n,m,t,x;double ans[N*2];bool pd;db abs(db x) {return x<0?-x:x;}void pivot(int l,int e) { swap(id[n+l],id[e]); db t=a[l][e];a[l][e]=1; fo(i,0,n) a[l][i]/=t; fo(i,0,m) if (i!=l&&abs(a[i][e])>eps) { db t=a[i][e];a[i][e]=0; fo(j,0,n) a[i][j]-=t*a[l][j]; }}void prepare() { while (1) { int l=0,e=0; fo(i,1,m) if (a[i][0]<-eps&&(!l||(rand()&1))) l=i; if (!l) break; fo(i,1,n) if (a[l][i]<-eps&&(!e||(rand()&1))) e=i; if (!e) {pd=1;return;} pivot(l,e); }}void solve() { while (1) { int l=0,e=0;db mn=1e18; fo(i,1,n) if (a[0][i]>eps) {e=i;break;} if (!e) break; fo(i,1,m) if (a[i][e]>eps&&a[i][0]/a[i][e]<mn) { mn=a[i][0]/a[i][e]; l=i; } if (!l) {pd=1;return;} pivot(l,e); }}int main() { srand(233); scanf("%d%d%d",&n,&m,&t); fo(i,1,n) scanf("%d",&x),a[0][i]=x; fo(i,1,m) { fo(j,1,n) scanf("%d",&x),a[i][j]=x; scanf("%d",&x);a[i][0]=x; } fo(i,1,n+m) id[i]=i; prepare(); if (pd) { printf("Infeasible\n"); return 0; } pd=0; solve(); if (pd) { printf("Unbounded\n"); return 0; } printf("%.15lf\n",-(double)a[0][0]); if (t) { fo(i,1,m) ans[id[i+n]]=a[i][0]; fo(i,1,n) printf("%.15lf ",ans[i]); }}
0 0
- 单纯形模板
- 线性规划单纯形模板
- 单纯形模板
- [单纯形 模板题] UOJ #179 线性规划
- [BZOJ1061][NOI2008]志愿者招募 单纯形模板
- uoj#179 线性规划 单纯形法の模板
- bzoj1061 [Noi2008]志愿者招募 单纯形(模板)
- 单纯形和单纯复形
- 线性规划 单纯形算法
- 单纯形法
- 单纯形的实现
- 单纯形法
- 单纯形法
- 单纯形法 学习
- 单纯形法
- 单纯形法
- 【ural1764】单纯形
- ##单纯形法##
- 前端工作流全解析
- Spring的jdbcTemplate查询执行原生sql
- 深度学习之Caffe框架
- BurnCtrl刻录控制系统
- 设计模式:对象创建(原型,单例,简单工厂,工厂方法,抽象工厂,生成器)
- 单纯形模板
- 尚硅谷自定义View学习笔记-小白到实战
- 字符串替换
- I/O字符流
- Huffman树的创建
- faster rcnn论文
- Docker命令介绍
- 如何查找Oracle Data Integrator和Oracle GoldenGate的支持列表
- MyBatis传入多个参数的问题