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 Linear_Programming{
	double A[10100][1010],b[10100],c[1010],v;
	void Pivot(int l,int e)
	{
		int i,j;

		b[l]/=A[l][e];
		for(i=1;i<=n;i++)
			if(i!=e)
				A[l][i]/=A[l][e];
		A[l][e]=1/A[l][e];

		for(i=1;i<=m;i++)
			if(i!=l&&fabs(A[i][e])>EPS)
			{
				b[i]-=A[i][e]*b[l];
				for(j=1;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(i=1;i<=n;i++)
			if(i!=e)
				c[i]-=c[e]*A[l][i];
		c[e]=-c[e]*A[l][e];
	}
	double Simplex()
	{
		int i,l,e;
		while(1)
		{
			for(i=1;i<=n;i++)
				if(c[i]>EPS)
					break;
			if((e=i)==n+1)
				return v;
			double temp=INF;
			for(i=1;i<=m;i++)
				if( A[i][e]>EPS && b[i]/A[i][e]<temp )
					temp=b[i]/A[i][e],l=i;
			if(temp==INF) return INF;
			Pivot(l,e);
		}
	}
}
int main()
{
	using namespace Linear_Programming;
	int i,j,k,x,y;
	cin>>n>>m;
	for(i=1;i<=n;i++)
		scanf("%lf",&c[i]);
	for(i=1;i<=m;i++)
	{
		scanf("%d",&k);
		for(j=1;j<=k;j++)
		{
			scanf("%d%d",&x,&y);
			for(;x<=y;x++)
				A[i][x]+=1.0;
		}
		scanf("%lf",&b[i]);
	}
	double ans=Simplex();
	printf("%d\n",int(ans+0.5));
	return 0;
}
时间: 2024-11-05 19:34:47

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 志愿者招募加强版

就是个裸题了 #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)

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 #

系统垃圾清理利器CCleaner v5.30.6063绿色单文件版(增强版)

系统垃圾清理利器CCleaner现已更新至v5.30.6063,此次更新为Edge.IE浏览器提供了更好的清理功能,更新了Windows Explorer MRU清理功能,同时改善了应用程序中的SSD检测.5.0版全新Modren UI界面设计,简洁大气!内部框架大优化,性能大提升!支持主动防御及监控! CCleaner是梨子公司Piriform最为著名广受好评的软件,系统垃圾清理工具,免费的系统清理优化和隐私保护工具,也是该公司主打和首发产品!它体积小巧.运行速度极快,具有强大的自定义清理规则

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 类志愿者可以招募.其中