BZOJ1061: [Noi2008]志愿者招募(线性规划)
2018-07-17 03:56:34来源:博客园 阅读 ()
Submit: 5725 Solved: 3437
[Submit][Status][Discuss]
Description
Input
Output
仅包含一个整数,表示你所设计的最优方案的总费用。
Sample Input
2 3 4
1 2 2
2 3 5
3 3 2
Sample Output
HINT
1 ≤ N ≤ 1000,1 ≤ M ≤ 10000,题目中其他所涉及的数据均 不超过2^31-1。
Source
如果不知道这题是线性规划的话肯定很难看出来,不过知道了就好做多了
若$C_i$为第$i$个人的花费,$a_i$为第$i$天需要的人,$x_i$为第$i$个人的数量
那么我们需要满足对于每一天$i$,$\sum_{i = 1}^{M} x_i >= a_i$,同时$\sum C_i x_i$最小
啥?最小?当时我推出式子来就蒙了qwq。然后跑去膜题解
根据对偶原理,问题相当于使得$\sum_{i = 1}^{M} x_i <= C_i$,的情况下$\sum a_i x_i$最大
仔细一想好像挺有道理
关于最后答案是否为整数的问题
https://www.luogu.org/problemnew/solution/P3980
#include<cstdio> #include<algorithm> #include<cmath> #define LL long long using namespace std; const int MAXN = 51, INF = 1e9 + 10; const double eps = 1e-8; inline int read() { char c = getchar();int x = 0,f = 1; while(c < '0' || c > '9'){if(c == '-')f = -1;c = getchar();} while(c >= '0' && c <= '9'){x = x * 10 + c - '0',c = getchar();} return x * f; } int N, M; LL a[10001][1001]; void Pivot(int l, int e) { double t = a[l][e]; a[l][e] = 1; for(int i = 0; i <= N; i++) a[l][i] /= t; for(int i = 0; i <= M; i++) { if(i != l && abs(a[i][e]) > eps) { t = a[i][e]; a[i][e] = 0; for(int j = 0; j <= N; j++) a[i][j] -= a[l][j] * t; } } } bool simplex() { while(1) { int l = 0, e = 0; double mn = INF; for(int i = 1; i <= N; i++) if(a[0][i] > eps) {e = i; break;} if(!e) break; for(int i = 1; i <= M; i++) if(a[i][e] > eps && a[i][0] / a[i][e] < mn) mn = a[i][0] / a[i][e], l = i; Pivot(l, e); } return 1; } int main() { srand(19260817); N = read(); M = read(); for(int i = 1; i <= N; i++) a[0][i] = read(); for(int i = 1; i <= M; i++) { int S = read(), T = read(), C = read(); for(int j = S; j <= T; j++) a[i][j] = 1; a[i][0] = C; } simplex(); printf("%lld", -a[0][0]); return 0; }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- BZOJ1008: [HNOI2008]越狱(快速幂) 2019-08-26
- 斜率优化dp学习笔记 洛谷P3915[HNOI2008]玩具装箱toy 2019-08-16
- BZOJ1004: [HNOI2008]Cards(Burnside引理 背包dp) 2018-07-12
- BZOJ1008: [HNOI2008]越狱(组合数) 2018-07-11
- bzoj1061 [ NOI2008 ] --线性规划 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash