bzoj 1497 NOI2006最大获利

我对题意的理解:给出一堆公司和一堆用户,我们买公司需要花钱,每个用户会支付报酬当且仅当他所钟爱的两个公司我都买了,问最大获利

最大权闭合子图= =好厉害的样子 首先我们连边最小割ans 答案就是sum-ans 这个可以想,sum表示在不需要支出的情况下的获利,现在我们需要支出,所以要跑一遍最小割。感觉就是 我们挣的钱可以通过一个途径跑掉,就挣不到,但是一个途径跑掉的钱是有限的。(怎么会有我这么愚蠢的理解呢) 建立源S,汇T 然后由S向所有用户连长度为报酬的边,用户向喜欢的公司连inf(表示一些疯狂的女人为了买衣服会花好多好多钱),然后公司向汇点连长度为价格的边。看着好奇怪啊,但是我想明白啦!

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
# define inf 1e9
using namespace std;
const int maxn=600000;
struct node{int to,next,len;}table[maxn<<2];
int tot=1,head[maxn];
void add(int a,int b,int c)
{
	table[++tot]=(node){b,head[a],c};
	head[a]=tot;
	table[++tot]=(node){a,head[b],0};
	head[b]=tot;
}
int n,m,S,T,a[maxn],ans,sum;
int q[maxn],h,t,d[maxn];
bool bfs()
{
	h=t=0;
	memset(d,0,sizeof d);
	q[++t]=S; d[S]=1;
	while(h!=t)
	{
		int x=q[++h];
		for(int i=head[x];i;i=table[i].next)
		if(!d[table[i].to]&&table[i].len)
		{
	 		d[table[i].to]=d[x]+1;
	 		q[++t]=table[i].to;
		}
	}
	return !!d[T];
}
int dfs(int x,int f)
{
	if(x==T||!f) return f;
	int cnt=0;
	for(int i=head[x];i;i=table[i].next)
	if(d[table[i].to]==d[x]+1)
	{
		int hh=dfs(table[i].to,min(f,table[i].len));
		table[i].len-=hh;
		table[i^1].len+=hh;
		cnt+=hh;
		f-=hh;
		if(!f) break;
	}
	return cnt;
}
int main()
{
	scanf("%d%d",&n,&m);
	S=n+m+1,T=n+m+2;
	for(int i=1;i<=n;i++) 
	{
		scanf("%d",&a[i]);
		add(m+i,T,a[i]);
	}
	int a,b,c;
	for(int i=1;i<=m;i++)
	{
		scanf("%d%d%d",&a,&b,&c); sum+=c;
		add(S,i,c);
		add(i,m+a,inf);
		add(i,m+b,inf);
	}
	while(bfs()) ans+=dfs(S,inf);
	cout<<sum-ans;
	return 0;
}


利用 TensorFlow 训练自己的目标识别器。本文内容来自于我的毕业设计,基于 TensorFlow 1.15.0,其他 TensorFlow 版本运行可能存在问题。.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值