博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ1061 NOI2008 志愿者招募
阅读量:6509 次
发布时间:2019-06-24

本文共 821 字,大约阅读时间需要 2 分钟。

本来是费用流神建模但是被单纯形搞定了鸭2333

\\m_{1,1}x_1 +m_{1,2}x_2 +...+m_{1,m}x_m\geq A_1 \\... \\m_{n,1}x_1 +m_{n,2}x_2 +...+m_{n,m}x_m\geq A_n

\forall i \epsilon [1,m]\ x_i\geq 0

mi,j表示第i天第j种志愿者能否工作 Ai表示第i天至少要用的人数

minimize\ \sum_{i=1}^n C_ix_i

要最小化代价(目标函数) 不是标准型所以根据线性规划的对偶性就可以做了qwqqq

线性规划的对偶性:

如果

\\maximize\ c^T x \\subject\ to\ Ax \preceq b \\x\succeq0\\minimize\ b^T x \\subject\ to\ A^Tx \preceq c \\x\succeq 0

均有可行解,则他们最优解相同或同时为Unbounded

 

这个题需要满足最优解是整数(你又不可能把人劈开)

但是实际上这个矩阵的性质就保证了 最优解是整数 (证明可戳洛咕题解)

 

扔代码。

#include
#include
#include
#include
#define inf 2002122500#define ll long long#define db double#define mxn 1010#define mxm 10100#define eps 1e-8using namespace std;db M[mxm][mxn];int n,m;void privot(int x,int y){ db tmp=1.0/M[x][y]; M[x][y]=1.0; for(int i=0;i<=m;i++) M[x][i]*=tmp; for(int i=0;i<=n;i++) { if(i==x||abs(M[i][y])
eps){y=i;break;} //printf("%d %lf\n",y,M[0][y]); if(!y) return true; for(int i=1;i<=n;i++) { if(M[i][y]>eps && M[i][0]/M[i][y]

 

转载于:https://www.cnblogs.com/hanyuweining/p/10321940.html

你可能感兴趣的文章
离线安装Android开发环境的方法
查看>>
VC常用代码之创建进程
查看>>
对比语法错误、语义错误以及运行时错误
查看>>
Linux性能测试 uptime命令
查看>>
argparse–Parser for command-line options
查看>>
iphone three20详解 ppt
查看>>
winform 牛人
查看>>
正则表达式
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
BigPipe
查看>>
大数据——基础概念
查看>>
第六次上机实验
查看>>
机器学习温和指南
查看>>
Django之ModelForm(二)-----ModelForm组件
查看>>
解决Geoserver请求跨域的几种思路,第二种思路用过
查看>>
横向评测常见的优秀国外5个域名注册商
查看>>
fs检测文件夹状态
查看>>