ZOJ 2314 上下界最大流

STM32与SD卡SPI接口硬件设计:从原理图到调试的完整指南 SPI(串行外设接口)作为一种广泛应用的同步串行通信协议,以其接线简单、驱动成熟的特点,成为连接微控制器与各类外设的经典方案。其工作原理基于主从架构,通过时钟、数据线和片选信号实现全双工通信,在嵌入式系统中具有极高的技术价值,常用于连接传感器、存储设备和显示模块等。在数据存储场景中,SD卡凭借其大容量和便携性成为首选,而通过SPI模式驱动SD卡,则平衡了性能与设计复杂度。本文聚焦于使用Altium Designer进行硬件设计的工程实践,详细解析了STM32微控制器与SD卡通过SPI通信时,电源管理、上拉电 阅读详情

增加源和汇,所有边按照上界-下界作为上界,无下界建图,然后所有点的流入和流出统计,点流入的与源连上容量为流入量的边,流出的连上汇就行,做一次最大流,如果所有连接源点的边都满流就是有解,否则无解,解即当前边的流量加上原来的下界

错误n次~ 坑爹啊 以后要小心 注意未知数组尽量开到最大 本以为n为200 开10000不会有问题 结果100000才过。。。。


#include<cstdio>
#include<cstring>
#include<vector>
#include<algorithm>
#include<queue>
#include<memory.h>
using namespace std;

const int maxn=1007,
		maxm=100007,
		inf=1<<30;
vector<int> next[maxn];
int b[maxn][maxn],flow[maxn][maxn];
int x[maxm],y[maxm];
int out[maxn];
int d[maxn];

bool bfs(int s,int t)
{
	memset(d,0,sizeof(d));
	d[s]=1;
	queue<int> q;
	q.push(s);
	int i,u,v;
	while(!q.empty())
	{
		u=q.front();
		q.pop();
		for(i=0;i<next[u].size();i++)
		{
			v=next[u][i];
			if(flow[u][v]>0 && d[v]==0)
			{
				d[v]=d[u]+1;
				if(v == t)
				{
					return true;
				}
				q.push(v);
			}
		}
	}
	return false;
}

int dfs(int u,int t,int limit)
{
	if(u == t)
	{
		return limit;
	}
	int i,v,cost=0;
	for(i=0;i<next[u].size();i++)
	{
		v=next[u][i];
		if(flow[u][v]>0 && d[v]==d[u]+1)
		{
			int tmp = dfs(v,t,min(limit-cost,flow[u][v]));
			if(tmp>0)
			{
				flow[u][v] -= tmp;
				flow[v][u] += tmp;
				cost += tmp;
				if(cost == limit)
				{
					break;
				}
			}
			else
			{
				d[v] = -1;
			}
		}
	}
	return cost;
}

int Dinic(int s,int t)
{
	int ret=0;
	while(bfs(s,t))
	{
		ret += dfs(s,t,inf);
	}
	return ret;
}

int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		int i,n,m,u,v,l,c,s,t;
		scanf("%d%d",&n,&m);
		s=0,t=n+1;
		memset(out,0,sizeof(out));
		memset(flow,0,sizeof(flow));
		memset(b,0,sizeof(b));
		for(i=0;i<=t;i++)
		{
			next[i].clear();
		}

		for(i=0;i<m;i++)
		{
			scanf("%d%d%d%d",&u,&v,&l,&c);
			next[u].push_back(v);
			next[v].push_back(u);
			out[u] -= l;
			out[v] += l;
			flow[u][v]=c-l;
			b[u][v]=l;
			x[i]=u;
			y[i]=v;
		}

		int sum=0;
		for(i=1;i<=n;i++)
		{
			if(out[i]>0)
			{
				next[s].push_back(i);
				next[i].push_back(s);
				flow[s][i]=out[i];
				sum += out[i];
			}
			else if(out[i]<0)
			{
				next[i].push_back(t);
				next[t].push_back(i);
				flow[i][t] = -out[i];
			}
		}

		if(Dinic(s,t) == sum)
		{
			puts("YES");
			for(i=0;i<m;i++)
			{
				u=x[i],v=y[i];
				printf("%d\n",flow[v][u]+b[u][v]);
			}
		}
		else
		{
			puts("NO");
		}
		puts("");
	}
	return 0;
}


2022年12月机器人技术等级考试试卷(三级实操) 试题解析 阅读详情

相关推荐

VN5620硬件接口介绍

VECTOR, VN5620, 诊断

Fecostar的博客 7488

zoj2314 经典 无源汇有上下界最大流 并输出可行流

ZOJ Problem Set - 2314 Reactor CoolingTime Limit: 5 Seconds      Memory Limit: 32768 KB      Special Judge The terrorist group leaded by a well known international terrorist Ben Bladen is buliding ...

weixin_33872566的博客 155

用Simulink对Carsim车辆进行档位控制

用Simulink对Carsim车辆进行档位控制一、carsim中的档位设置为开环控制二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear三、双击进去设置常量为 0四、输入和输出IO通道五、验证 :输入 为 3 档 ----- 输出 为 3!六、参考 一、carsim中的档位设置为开环控制 二、在Constant目录下面选取一个选项并重新命名为constant :0 Gear 三、双击进去设置常量为 0 四、输入和输出IO通道 五、验证 :输入 为 3 档 -

qq_42027654的博客 2603

有上下界最大流初步zoj2314

题意:    给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。 并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。 题解: 上界用ci表示,下界用bi表示。 下界是必须流满的,那么对于每一条边,去

running_in_dark的博客 237

使用CLion在Window端进行linux开发

        以往不管是开发x86端linux程序还是arm端linux程序,都是使用Source Insight作为源码编辑工具的,如下图      去年底,发现CLion的2018.3更新版本,可以支持remote host开发了,大爱!     我是基于以下几点原因,将开发工具换成CLion 1. 语法高亮较明显、跳转、重构方便(我很看重这个); 2. 可以使用图形界面进行调...

alist的笔记专栏 1万+

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

zoj2314 Reactor Cooling (无源汇的有上下界的最大流)

上界用ci表示,下界用bi表示。下界是必须流满的,那么对于每一条边,去掉下界后,其自由流为ci– bi。主要思想:每一个点流进来的流=流出去的流对于每一个点i,令Mi= sum(i点所有流进来的下界流)– sum(i点所有流出去的下界流)如果Mi大于0,代表此点必须还要流出去Mi的自由流,那么我们从源点连一条Mi的边到该点。如果Mi小于0,代表此点必须还要流进来Mi的自由流,那么我们从该点连一条Mi

Icefox的博客 588

Python之achatbot包语法、参数和实际应用案例

本书是一本PyTorch深度学习实战指南,分为基础(前6章)和进阶(后5章)两大部分。基础部分涵盖张量运算、神经网络、数据预处理及CNN等核心内容;进阶部分则深入图像、文本、音频建模技术,重点解析Transformer架构及大语言模型开发。全书采用"理论+实践"模式,适合从零基础到进阶的PyTorch学习者。

王国平的博客 632

ZOJ 2314 (sgu 194) Reactor Cooling (无源汇有上下界最大流)

题意: 给定n个点和m条边, 每条边有流量上下限[b,c], 求是否存在一种流动方法使得每条边流量在范围内, 而且每个点的流入 = 流出 分析: 无源汇有上下界最大流模板, 记录每个点流的 in 和 out , 然后如果一个点 i 的in > out, 从源点i连一条边到in, out > in 就从i 连一条边到 v. #include <cstdio&...

dixianqi2609的博客 199

【IoT】压力式电子脉搏器设计

智能硬件

产品线负责人 1621

【华为OD机试】真题-小明减肥(Java)

摘要:题目要求从n个可选运动中选取k个,使其卡路里总和等于目标值t,统计可行方案数。输入包含运动数量n、目标t、选择数量k及卡路里数组。采用DFS回溯算法,通过剪枝优化(提前终止无效分支),分别处理选择/不选当前运动的情况。当遍历完所有运动且满足条件时计数。示例输入"4 3 2"和"1 2 3"时,输出2(对应两种选择组合)。Java实现通过递归完成搜索,最终输出符合条件的方案总数。(149字)

u014481728的博客 287

[伪·ZOJ2314] 无源汇有上下界的最大流

因为ZOJ测不了,就乱写了一个#include<iostream> #include<cstring> #include<cstdio> #define INF 0x7fffffff using namespace std; const int N = 100005; int TT,S,T,d[N],b[N],pipe[N],h[N],q[N],ans,sum; int cnt=1,last[N];

Unlimited Code Works 396

MATLAB 与 STK 互联生成Walker并导出轨道数据(CSV导出)

本文介绍了使用 MATLAB 控制 STK 完成以下自动化流程:打开并连接 STK 场景;自动创建 Delta 型 Walker 星座;添加矩形传感器并配置视场;获取轨道六根数与视场角信息;自动保存至 CSV 文件,供后续使用。

weixin_52370774的博客 737

zoj 2314 Reactor Cooling 有上下界的网络最大流

。。。

禅境花园 848

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

2个经典 zoj2314 无源汇有上下界最大流 并输出可行流 ZOJ3229 有源汇上下界最大流

ZOJ Problem Set - 2314 Reactor Cooling Time Limit: 5 Seconds      Memory Limit: 32768 KB      Special Judge The terrorist group leaded by a well known international terrorist Ben Bladen is

hnust_xiehonghao的专栏 2085

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

学习笔记::有上下界的网络流

1.无源无汇有上下界可行流 zoj2314 做法:每条边的两个顶点分别计算出流入流出的流量之差,记为in[u],如果in[u]<0,说明流出的比流入的多,那么他需要有一些补充,于是我们设立虚拟源汇,把u和T连接,容量为-in[u],如果in[u]>0,说明流进来的多了,需要有去处,就和S连接,容量为in[v]。对于每条边,容量为up[i]-low[i],然后跑最大流,每条...

weixin_30249203的博客 77

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

zoj 2314 Reactor Cooling--无源汇有上下界最大流--递归sap

/* 我也没有读题 刚学就直接搜的这类题 找了个简单的练习 大致上好像是这么个意思 给你一个图 边有上下界 求无源汇最大流 没有输出NO 有则输出 YES 并输出 各边的流量 */ #include #include using namespace std; const int N=205; struct node { int u,v; }e[N*N]; int l

1026

ZOJ 2314 Reactor Cooling (无源汇有上下界的最大流)

模板题 推荐一篇论文: 论文点这里油 代码:  #include&lt;bits/stdc++.h&gt; using namespace std; const int N =405; const int inf =0x3f3f3f3f; struct Edge { int from,to,cap,flow; Edge(int u,int v,int c,int f):...

yjt9299的博客 214

有下界最大流问题

(1)、无源无汇有容量下界的最大流问题;

ZT在努力 751

有上下界的网络流

有上下界的网络流具体可以分为以下三种: 1.无源汇有上下界可行流 例题:ZOJ - 2314 题意:有 nnn 个节点,且有 mmm 条水管,每条水管的流向为单向,且每条水管的流量有限制,第 iii 条水管的流量 fi(li≤fi≤ci)f_i(l_i \leq f_i \leq c_i)fi​(li​≤fi​≤ci​) ,问是否存在一种流量分配,使得这m条水管的流量满足条件,如果存在,则输出每...

a302549450的博客 409

ZOJ_2314_Reactor Cooling_有上下界可行流模板

ZOJ_2314_Reactor Cooling_有上下界可行流模板 The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuclear reactor to produce plutonium for the nuclear bomb they are ...

94

有上下界的网络流问题

有上下界的网络流问题分为无源汇和有源汇两种。 根据周源的《一种简易的方法求解流量有上下界的网络中网络流问题》 无源汇上下界网络流的做法是: 设边u->v的下界是B(u,v),上界是C(u,v)。 设M(i)为对于i结点的流入i的下界总和-流出i的下界总和。 增设源点s和汇点t。 如果M(i)>=0 连边s->i,容量为M(i)。 如果M(i)<0 连边i...

weixin_30699443的博客 184

有上下界网络流学习笔记

有上下界网络流学习笔记 1.有(无)源汇有上下界最小费用可行流:算法的核心思想是补流。先判断原图是否有源汇,若有则连边\(t \to s(\infty/0)\);随后新建超级源汇\(S\),\(T\);然后对于每一条边\(x \to y\),连边\(x \to y(high-low/w)\);接着对每一个点\(x\),计\(\delta\)为该点入边流量下界之和减去该点出边流量下界之和,...

146

ZOJ3229:Shoot the Bullet——题解

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3229 题目大意:射命丸文要给幻想乡的居民照相,共照n天m个人,每天射命丸文照相数不多于d个,且一个人n天一共被拍的照片不能少于g个,且每天可照的人有限制,且这些人今天照的相片必须在[l,r]以内,求是否有可行解,如果有则输出最多照片数,并且输出每天每个可以被照的人的被照的...

weixin_34356310的博客 120
上一篇: POJ 1392 欧拉回路
下一篇: ACM 总结
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值