BZOJ 3265 志愿者招募加强版(单纯形)
3265: 志愿者招募加强版
Time Limit: 20 Sec Memory Limit: 512 MB
Submit: 848 Solved: 436
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
2 3 4
1 1 2 2
1 2 3 5
1 3 3 2
Sample Output
HINT
#include<bits/stdc++.h>
using namespace std;
#define cls(x, val) memset(x,val,sizeof(x))
#define RI register int
#define eps 1e-6
typedef long long ll;
typedef unsigned long long ull;
const int INF=0x3f3f3f3f;
inline int read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>'') {if(ch=='-') f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
const int N=;
const int M=;
int n,m;
double a[M][N],b[M],c[M],v;
inline void pivot(int l,int e)//矩阵的转秩
{
b[l]/=a[l][e];
for(int j=;j<=n;++j)
{
if(j!=e) a[l][j]/=a[l][e];
}
a[l][e]=/a[l][e];
for(int i=;i<=m;++i)
{
if(i!=l&&fabs(a[i][e])>)
{
b[i]-=a[i][e]*b[l];
for(int j=;j<=n;++j)
{
if(j!=e) a[i][j]-=a[i][e]*a[l][j];
}
a[i][e]=-a[i][e]*a[l][e];
}
}
v+=c[e]*b[l];
for(int j=;j<=n;++j)
{
if(j!=e) c[j]-=c[e]*a[l][j];
}
c[e]=-c[e]*a[l][e];
} inline double simplex()
{
while()
{
int e=,l=;
for(e=;e<=n;++e)
{
if(c[e]>eps) break;
}
if(e==n+) return v;
double mn=INF;
for(int i=;i<=m;++i)
{
if(a[i][e]>eps&&mn>b[i]/a[i][e]) mn=b[i]/a[i][e],l=i;
}
if(mn==INF) return INF;
pivot(l,e);
}
} int main()
{
n=read(),m=read();
for(RI i=;i<=n;++i) c[i]=read();
for(RI i=;i<=m;++i)
{
RI k=read();
while(k--)
{
int s,t;
s=read(),t=read();
for(RI j=s;j<=t;++j) a[i][j]=1.0;
}
b[i]=read();
}
printf("%d\n",(int)(simplex()+0.5));
return ;
}
BZOJ 3265 志愿者招募加强版(单纯形)的更多相关文章
- BZOJ.3265.志愿者招募加强版(费用流SPFA)
题目链接 见上题. 每类志愿者可能是若干段,不满足那个...全幺模矩阵(全单位模矩阵)的条件,所以线性规划可能存在非整数解. 于是就可以用费用流水过去顺便拿个rank2 233. //20704kb ...
- BZOJ 3265: 志愿者招募加强版 [单纯形法]
传送门 一个人多段区间,一样.... 不过国家队论文上说这道题好像不能保证整数解.... #include <iostream> #include <cstdio> #incl ...
- BZOJ 3265 志愿者招募增强版 单
标题效果:同1061 只是间隔为每种类型的志愿工作是多级 这是卡网络流量?未知 所有在所有的1061您将可以更改为在稍微改变- - #include <cmath> #include &l ...
- BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
1061: [Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 4813 Solved: 2877[Submit][Stat ...
- 【BZOJ1061/3265】[Noi2008]志愿者招募/志愿者招募加强版 单纯形法
[BZOJ1061][Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募 ...
- bzoj3265: 志愿者招募加强版(线性规划+单纯形法)
传送门 鉴于志愿者招募那题我是用网络流写的所以这里还是写一下单纯形好了-- 就是要我们求这么个线性规划(\(d_{ij}\)表示第\(i\)种志愿者在第\(j\)天能不能服务,\(x_i\)表示第\( ...
- bzoj 1061 志愿者招募(最小费用最大流)
[Noi2008]志愿者招募 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3792 Solved: 2314[Submit][Status][Di ...
- 突然想看单纯形 BZOJ3265 志愿者招募加强版
本来的版本是可以差分之后建图利用网络流,这个题是板子题,就当存个板子,嘻嘻嘻 讲解可以到卿学姐的算法讲堂 https://www.bilibili.com/video/av7847726?from=s ...
- bzoj 1061 志愿者招募 有上下界费用流做法
把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf). 对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf.这样 ...
随机推荐
- [ISE调试] 在ISE调试过程中,遇到过的warning以及消除办法
1.在generate的过程中,在Map环节遇到了下面这个warning 意思:告诉你是黑盒子,而且他本来在设计里面就是黑盒子. 解决办法:点击图中的,会弹出一个代码文件,是声明这个IP核的文件,代码 ...
- PageHelper分页+排序
使用pageHelper插件来分页,只需在执行sql前用即可 String orderBy = 排序字段 + " desc";//按照(数据库)排序字段 倒序 排序 PageHel ...
- jquery 判断数组是否为空
jquery 判断数组是否为空 if (data.length === 0) { console.log("数组为空"); }
- package.json文件内容介绍
概述 每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称.版本.许可证等元数据).npm install命令根据这个配置文件, ...
- Ubuntu 16.04 安装Docker
1 更改apt源,更改前先对sources.list文件进行备分 ccskun@test:~$ sudo cp /etc/apt/sources.list /etc/apt/sources.list. ...
- Maven 无法下载依赖包的解决方法---三步dao!!!
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明. 本文链接:https://www.cnblogs.com/WLCYSYS/p/11932157.html maven 自动下载依赖包出现 ...
- GentOS 7 安装步骤
附上原作者的博客网址: https://blog.csdn.net/qq_42570879/article/details/82853708 1.CentOS下载CentOS是免费版,推荐在官网上直接 ...
- Android View 的添加绘制流程 (二)
概述 上一篇 Android DecorView 与 Activity 绑定原理分析 分析了在调用 setContentView 之后,DecorView 是如何与 activity 关联在一起的,最 ...
- mysql的事物,外键,与常用引擎
### part1 时间类型 date YYYY-MM-DD 年月日 (出现日期) time HH:MM:SS 时分秒 (竞赛时间) year YYYY 年份值 (红酒年份 82年矿泉水) datet ...
- php弹出确认框
下面的代码只需要放在同一个文件中就可以运行了~~ html<a href="__URL__/shanchu/id/{$vo.id}" onclick='return del( ...