[线性规划 对偶原理 单纯形] BZOJ 3265 志愿者招募加强版

就是个裸题了

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#define cl(x) memset(x,0,sizeof(x))
using namespace std;
typedef long long ll;

inline char nc()
{
	static char buf[100000],*p1=buf,*p2=buf;
	if (p1==p2) { p2=(p1=buf)+fread(buf,1,100000,stdin); if (p1==p2) return EOF; }
	return *p1++;
}

inline void read(int &x)
{
	char c=nc(),b=1;
	for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;
	for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;
}

inline void read(ll &x)
{
	char c=nc(),b=1;
	for (;!(c>='0' && c<='9');c=nc()) if (c=='-') b=-1;
	for (x=0;c>='0' && c<='9';x=x*10+c-'0',c=nc()); x*=b;
}

const int N=1005,M=10005;

int n,m;
ll Ans;
ll a[M][N];
int next[N];

inline void PIVOT(int l,int e)
{
	int last=-1;
	for (int i=0;i<=n;i++) if (i!=e) a[l][i]/=a[l][e];
	a[l][e]=1/a[l][e];
	memset(next,-1,sizeof(next));
	for (int i=0;i<=n;i++) if (a[l][i] && i!=e) next[i]=last,last=i;
	for (int i=0;i<=m;i++)
	{
		if (i==l || a[i][e]==0) continue;
		for (int j=last;j!=-1;j=next[j])
			a[i][j]-=a[i][e]*a[l][j];
		a[i][e]=-a[i][e]*a[l][e];
	}
}

inline ll Simplex(){
	int l,e,minimum;
	while (1){
		for (e=1;e<=n && a[0][e]<=0;e++);
		if (e==n+1) return -a[0][0];
		minimum=1<<30;
		for (int i=1;i<=m;i++)
			if (a[i][e]>0 && a[i][0]/a[i][e]<minimum)
				minimum=a[l=i][0]/a[i][e];
		PIVOT(l,e);
	}
}

int main()
{
	int k,s,t;
	freopen("t.in","r",stdin);
	freopen("t.out","w",stdout);
	read(n); read(m);
	for (int i=1;i<=n;i++) read(a[0][i]);
	for (int i=1;i<=m;i++)
	{
		read(k);
		while (k--){
			read(s); read(t);
			for (int j=s;j<=t;j++)
				a[i][j]=1;
		}
		read(a[i][0]);
	}
	Ans=Simplex();
	printf("%lld\n",Ans);
	return 0;
}
时间: 2024-10-12 15:30:25

[线性规划 对偶原理 单纯形] BZOJ 3265 志愿者招募加强版的相关文章

BZOJ 3265 志愿者招募加强版 单纯形

题目大意:同1061 不过每类志愿者能工作的区间是多段 这是卡网络流?不明 总之把1061稍微改改就能过了- - #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define INF 1e10 #define EPS 1e-7 using namespace std; int m,n; namespace

BZOJ 3265 志愿者招募增强版 单

标题效果:同1061 只是间隔为每种类型的志愿工作是多级 这是卡网络流量?未知 所有在所有的1061您将可以更改为在稍微改变- - #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define INF 1e10 #define EPS 1e-7 using namespace std; int m,n;

BZOJ 1061 志愿者招募(最小费用最大流)

题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1061 题意:申奥成功后,布布经过不懈努力,终于 成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人. 布布通过了解得知,一共有M 类志愿者可以招募.其中第i 类可以从第Si 天工作到第Ti 天,招募费用是每人Ci 元.新官上任三把火,为了出色地完成自己的工作,布

bzoj 1061 志愿者招募 有上下界费用流做法

把每一天看作一个点,每一天的志愿者数目就是流量限制,从i到i+1连边,上下界就是(A[i],+inf). 对于每一类志愿者,从T[i]+1到S[i]连边,费用为招募一个志愿者的费用,流量为inf.这样每多1的流量,就多了一个从S[i]到T[i]+1的循环流. 求一遍无源汇的最小费用可行流就可以了. 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cstring>

BZOJ 1061 志愿者招募

http://www.lydsy.com/JudgeOnline/problem.php?id=1061 思路:可以用不等式的改装变成费用流. 将不等式列出,如果有负的常数,那么就从等式连向T,如果是正的就从S连向等式,流量为常数,费用为0. 如果是变量,那么找出都有这个变量的两个等式,从负的连向正的流量为inf的边,如果有费用,那就再加上费用. 1 #include<cstdio> 2 #include<cmath> 3 #include<algorithm> 4 #

BZOJ 1061 [Noi2008]志愿者招募

1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 2547  Solved: 1600[Submit][Status][Discuss] Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人. 布布通过了解得知,一共有M 类志愿者

BZOJ 1061: [Noi2008]志愿者招募 [单纯形法]

1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3975  Solved: 2421[Submit][Status][Discuss] Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要 Ai 个人. 布布通过了解得知,一共有M 类志

【BZOJ 1061】 [Noi2008]志愿者招募

1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MB Submit: 2066  Solved: 1282 [Submit][Status] Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要Ai 个人. 布布通过了解得知,一共有M 类志愿者可以招募.其中

【BZOJ】1061: [Noi2008]志愿者招募

1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3752  Solved: 2298[Submit][Status][Discuss] Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿者.经过估算,这个项目需要N 天才能完成,其中第i 天至少需要 Ai 个人. 布布通过了解得知,一共有M 类志