bzoj1061&&bzoj3256
http://www.lydsy.com/JudgeOnline/problem.php?id=1061
单纯形。。。
先开始我不知道对偶,看着代码不知所措,并不能懂他们写的是什么。。。
单纯形的标准形式是uoj上那样的,限制小于,最大化,但是这道题是最小化,而且系数取负还不行(我的理解是取负了无法正常运行),那么我们引入了对偶
对偶其实就是把矩阵转一下 a[i][j]=b[j][i] swap(n,m)就好了,然后跑单纯形。。。
#include<bits/stdc++.h>
using namespace std;
const int N = ;
const double eps = 1e-;
int n, m, l, e;
double a[N * ][N], b[N][N * ];
void pivot(int l, int e)
{
double r = a[l][e]; a[l][e] = 1.0;
for(int i = ; i <= m; ++i) a[l][i] /= r;
for(int i = ; i <= n; ++i) if(i != l)
{
double r = a[i][e]; a[i][e] = ;
for(int j = ; j <= m; ++j) a[i][j] -= r * a[l][j];
}
}
void simplex()
{
while(true)
{
l = e = ;
for(int i = ; i <= m; ++i) if(a[][i] > eps)
{ e = i; break; }
if(!e) break;
double k = 1e18;
for(int i = ; i <= n; ++i) if(a[i][e] > eps && a[i][] / a[i][e] < k)
{
k = a[i][] / a[i][e];
l = i;
}
if(!l) break;
pivot(l, e);
}
printf("%d\n", (int)(-a[][] + 0.5));
}
int main()
{
// freopen("employee.in", "r", stdin);
// freopen("employee.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = ; i <= n; ++i) scanf("%lf", &b[i][]);
for(int i = ; i <= m; ++i)
{
int s, t; double c; scanf("%d%d%lf", &s, &t, &c);
for(int j = s; j <= t; ++j) b[j][i] += 1.0;
b[][i] += c;
}
swap(n, m);
for(int i = ; i <= n; ++i)
for(int j = ; j <= m; ++j) a[i][j] = b[j][i];
simplex();
// fclose(stdin); fclose(stdout);
return ;
}
bzoj1061&&bzoj3256的更多相关文章
- 【bzoj1061】 Noi2008—志愿者招募
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 (题目链接) 题意 给定n天,第i天需要ai个志愿者,有m类志愿者,每类志愿者工作时间为[l, ...
- [BZOJ1061][Noi2008]志愿者招募
[BZOJ1061][Noi2008]志愿者招募 试题描述 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿 ...
- bzoj1061 志愿者招募
bzoj1061 志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿者.经 ...
- 网络流解线性规划问题 BZOJ1061: [Noi2008]志愿者招募
线性规划定义: 在给定有限的资源和竞争约束情况下,很多问题都可以表述为最大化或最小化某个目标.如果可以把目标指定为某些变量的线性函数,而且如果可以将资源约束指定为这些变量的等式或不等式,则得到了一个线 ...
- BZOJ1061 [Noi2008]志愿者招募 【单纯形】
题目链接 BZOJ1061 题解 今天终于用正宗的线性规划\(A\)了这道题 题目可以看做有\(N\)个限制和\(M\)个变量 变量\(x_i\)表示第\(i\)种志愿者的人数,对于第\(i\)种志愿 ...
- 【BZOJ1061】【NOI2008】志愿者招募
[BZOJ1061][NOI2008]志愿者招募 题面 BZOJ 题解 我们设每类志愿者分别招募了\(B[i]\)个 那么,我们可以得到一系列的方程 \[\sum_{S[i]\leq x\leq T[ ...
- 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
[BZOJ1061][Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募 ...
- 【BZOJ1061】志愿者招募(单纯形,对偶性)
题意: 这个项目需要N 天才能完成,其中第i 天至少需要 Ai 个人. 布布通过了解得知,一共有M 类志愿者可以招募.其中第i 类可以从第Si 天工作到第Ti 天,招募费用 是每人Ci 元.新官上任三 ...
- [BZOJ1061][Noi 2008]志愿者招募(网络流)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1061 分析: 神题不解释,只能欣赏:https://www.byvoid.com/bl ...
随机推荐
- Java基础——工具类
一Java 常用类 Object Object类是所有类.数组.枚举类的父类.位于Java.lang包.也就是说,Java允许把任意类型的对象赋给Object类型的变量. Object类的常用方法 1 ...
- Script:shell脚本生成随机字符串
#!/bin/bash # bash generate random alphanumeric string # # bash generate random character alphanumer ...
- 转载:tomcat实现热部署的配置
tomcat实现热部署的配置 我们实现热部署后,自然就可以通过maven操作tomcat了,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限. 进入tom ...
- 第一章 Linux命令行简介
1 Linux系统命令操作语法的格式 命令_[参数选项]_[文件或路径] 其中 _ 至少一个空格 如:rm -f /etc/hosts 其中/etc/hosts完整路径不带空格 ...
- Python 开发面试题
Python部分 将一个字符串逆序,不能使用反转函数 求从10到100中能被3或5整除的数的和 What is Python? What are the benefits of using Pytho ...
- angular中处理多个异步请求的方法汇总
在实际业务中经常需要等待几个请求完成后再进行下一步操作.但angularjs中$http不支持同步的请求. 解决方法一: $http多层嵌套 $http.get('url1').success(fun ...
- poj 3744 Scout YYF I(递推求期望)
poj 3744 Scout YYF I(递推求期望) 题链 题意:给出n个坑,一个人可能以p的概率一步一步地走,或者以1-p的概率跳过前面一步,问这个人安全通过的概率 解法: 递推式: 对于每个坑, ...
- PAT 1130 Infix Expression
Given a syntax tree (binary), you are supposed to output the corresponding infix expression, with pa ...
- 【BZOJ3790】神奇项链(manacher,树状数组)
题意: 思路:生成一些回文拼起来使生成的段数最小 显然存在一种最优的方案,使生成的那些回文是目标串的极长回文子串 求出对于每个位置的最长回文子串,问题就转化成了: 给定一些已知起始和终止位置的线段,求 ...
- android在listview中放入从sdcard读取的bitmap
重写viewbinder public class viewbinder_bookmark implements SimpleAdapter.ViewBinder{ @Override public ...