Codeforces 546E - Soldier and Traveling (网络流输出流量)

2023-11-20 MySQL ARM64 银河麒麟 背景 MySQL是常用数据库,Windows安装比较容易,笔者也有记录。现在国产化系统银河麒麟中安装,不同的是软件安装包不容易下载。一是安装的方式,再一个是MySQL本身的版本,网上很多文档说明其实都是对的,但是为什么那么多都不一样呢?就是MySQL本身的版本差异比较大,这些差异笔者也不是很清楚,但是不要用8和5.7的差异非常大,8即使安装的很顺利,在使用过程也会很多坑,导致我宁愿卸载8,也要重新... 阅读详情

建图:

i点拆成ai,bi两个点。源点到ai连a[i]的流量,ai到bi连INF(表示不动的士兵)bi到汇点连b[i]的流量。对于x到y的每条边连ax到by,ay到bx,流量为INF的边(士兵移动)。跑出最大流看是否等于a[i]或b[i]之和。

重点是输出方案,当最大流跑完后遍历1到N的点(表示初始状态的点)的邻接表,如果有流量flow大于0的边,就说明这个方案中沿着这条边有flow个士兵移动了。


代码:

#include <iostream>
#include <cstdio>
#define LL long long
#include <cstring>
using namespace std;
#include <map>
#include <queue>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#define MAXN 205
#define INF 100000000
struct Edge{
    int from,to,cap,flow;
    Edge(int f,int t,int c,int fl){
        from=f; to=t; cap=c; flow=fl;
    }
};


struct Dinic{
    int n,m,s,t;            //结点数,边数(包括反向弧),源点编号和汇点编号
    vector<Edge> edges;     //边表。edge[e]和edge[e^1]互为反向弧
    vector<int> G[MAXN];    //邻接表,G[i][j]表示节点i和第j条边在e数组中的序号
    bool vis[MAXN];         //BFS使用
    int d[MAXN];            //从起点到i的距离
    int cur[MAXN];          //当前弧下标

    void clear_all(int n){
        for(int i=0;i<n;i++) G[i].clear();
        edges.clear();
    }
    void clear_flow(){
        int len=edges.size();
        for(int i=0;i<len;i++) edges[i].flow=0;
    }
    void add_edge(int from,int to,int cap){
        edges.push_back(Edge(from,to,cap,0));
        edges.push_back(Edge(to,from,0,0));
        m=edges.size();
        G[from].push_back(m-2);
        G[to].push_back(m-1);
    }
    bool BFS(){
        memset(vis,0,sizeof(vis));
        queue<int> q;
        q.push(s);
        d[s]=0;
        vis[s]=1;
        while(!q.empty()){
            int x=q.front();
            q.pop();
            int len=G[x].size();
            for(int i=0;i<len;i++){
                Edge& e=edges[G[x][i]];
                if(!vis[e.to]&&e.cap>e.flow){
                    vis[e.to]=1;
                    d[e.to]=d[x]+1;
                    q.push(e.to);
                }
            }
        }
        return vis[t];
    }
    int DFS(int x,int a){
        if(x==t||a==0) return a;
        int flow=0,f,len=G[x].size();
        for(int& i=cur[x];i<len;i++){
            Edge& e=edges[G[x][i]];
            if(d[x]+1==d[e.to]&&(f=DFS(e.to,min(a,e.cap-e.flow)))>0){
                e.flow+=f;
                edges[G[x][i]^1].flow-=f;
                flow+=f;
                a-=f;
                if(a==0) break;
            }
        }
        return flow;
    }
    int maxflow(int s,int t){
        this->s=s;
        this->t=t;
        int flow=0;
        while(BFS()){
            memset(cur,0,sizeof(cur));
            flow+=DFS(s,INF);
        }
        return flow;
    }
    int mincut(){   //call this after maxflow
        int ans=0;
        int len=edges.size();
        for(int i=0;i<len;i++){
            Edge& e=edges[i];
            if(vis[e.from]&&!vis[e.to]&&e.cap>0) ans++;
        }
        return ans;
    }
    void reduce(){
        int len=edges.size();
        for(int i=0;i<len;i++) edges[i].cap-=edges[i].flow;
    }
}solver;

int N,M;
int a[MAXN];
int b[MAXN];
int mp[MAXN][MAXN];
int main(){

    scanf("%d%d",&N,&M);
    solver.clear_all(N+1);
    int sum1=0,sum2=0;
    for(int i=1;i<=N;i++){
        scanf("%d",&a[i]);
        sum1+=a[i];
        solver.add_edge(0,i,a[i]);
        solver.add_edge(i,i+N,INF);
    }
    for(int i=1;i<=N;i++){
        scanf("%d",&b[i]);
        sum2+=b[i];
        solver.add_edge(i+N,N*2+1,b[i]);
    }
    if(sum1!=sum2) {
        printf("NO\n");
        return 0;
    }
    for(int i=0;i<M;i++){
        int a,b;
        scanf("%d%d",&a,&b);
        solver.add_edge(a,b+N,INF);
        solver.add_edge(b,a+N,INF);
    }
    int res=0;
    res=solver.maxflow(0,N*2+1);
    if(res!=sum1){
        printf("NO\n");
    }

    else {
        printf("YES\n");
        for(int i=1;i<=N;i++){
            for(int j=0;j<solver.G[i].size();j++){
                Edge e=solver.edges[solver.G[i][j]];
                if(e.flow){
                    mp[i][e.to-N]=e.flow;
                }
            }
        }
        for(int i=1;i<=N;i++){
            for(int j=1;j<=N;j++){
                printf("%d",mp[i][j]);
                if(j==N) printf("\n");
                else printf(" ");
            }
        }
    }
    return 0;
}


156、手机摄像头模组结构拆解:从保护盖到 FPC 连接器的完整装配剖面 本文深入解析手机摄像头模组结构设计要点。作者结合项目经验,指出保护盖密封胶在低温收缩会导致边缘漏光问题,强调结构细节比算法参数更关键。文章逐层拆解模组组件:保护盖厚度需平衡抗冲击与光学性能;镜筒内镜片组装配顺序和公差控制直接影响成像质量;IR滤光片厚度公差±0.02mm会改变红外截止波长;CSP封装需注意金线加固;FPC连接器的信号完整性和机械可靠性设计。最后给出5条实用建议,包括密封胶选型、镜片对位检测等,强调模组结构设计是"一票否决制"的基础工程。(149字) 阅读详情

相关推荐

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

Soldier and Traveling (网络流最大流)

In the country there are n cities and m bidirectional roads between them. Each city has an army. Army of the i-th city consists of ai soldiers. Now soldiers roam. After roaming each soldier has to eit...

宇宙无敌大可爱CUU的博客 371

从MCU到MPU:瑞萨RZN2L上手初体验,给Cortex-M工程师的Cortex-R52入门避坑指南

本文详细介绍了从MCU到MPU的过渡经验,特别是瑞萨RZN2L开发板的实战避坑指南。针对Cortex-M工程师转向Cortex-R52内核的挑战,文章深入解析了启动流程、内存管理、中断响应等九大本质差异,并提供了硬件设计陷阱和软件迁移的实用技巧,帮助开发者快速适应MPU开发环境。

weixin_29158413的博客 258

Codeforces1250K. Projectors【网络流求时间占用问题的合法分配方案】

每个讲课必定要用一个高清投影仪,所以我们就是要求的就是在高清投影仪在某些区间必放后,普通投影仪的合法分配方案。 因为研讨会既可以用高清投影仪,又可以用普通投影仪,而在当前时刻我们并不知道它到底是用哪一个更优。 于是我们要想办法解决普通投影仪在讲课已经占用一部分高清投影仪后的分配问题。 我们在考虑普通投影仪的分配方案时并不需要考虑每个讲课跨越的区间具体是什么,而只需要知道每个时刻被多少讲课所包含。比如 [1,4)[1,4)[1,4) 和 [1,3),[2,4)[1,3),[2,4)[1,3),[2,4) 是没

Master.Yi的博客 327

Atlas 300I Pro推理卡性能深度测试:对比业界同类产品的能效比与算力表现

本文对昇腾Atlas 300I Pro推理卡进行了深度性能评测,重点对比了其与业界同类产品的能效比与算力表现。实测数据显示,该卡在运行BERT等模型时展现出高达39.6句子/秒/瓦的卓越能效比,电力成本可降低40%以上,同时其达芬奇架构和硬件加速特征检索能力,为高密度在线推理和向量检索场景提供了强大支撑。

weixin_29031161的博客 579

135、转动惯量辨识方法

<think>我们要求根据内容生成≤150字的文章摘要。内容是关于电机控制中转动惯量辨识的方法和工程经验。摘要需简洁概括核心:转动惯量重要性、三种方法(加减速法、正弦扫频、MRAS)、工程注意点(摩擦补偿、采样同步等)、实用建议(组合使用、滤波限幅、安全保护)。字数严格≤150。需要提炼。</think>转动惯量辨识是电机控制的关键,负载变化会导致速度环失稳。工程常用加减速法(简单可靠)、正弦扫频法(高精度)、MRAS在线辨识。实操需补偿摩擦、同步采样、控制激励幅度。建议混合使用,辨识结果需滤波限幅,并设置

2401_88858637的博客 40

网络流(最大流)CodeForces 512C:Fox And Dinner

Fox Ciel is participating in a party in Prime Kingdom. There are n foxes there (include Fox Ciel). The i-th fox is ai years old. They will have dinner around some round tables. You want to distrib...

weixin_30339969的博客 222

古月学院《如何在Gazebo中实现阿克曼转向车的仿真》课程资料在ROS Noetic版本中运行时的常见错误及解决方法

   最近想在Gazebo中开发一些仿真内容,于是购买了古月学院的《如何在Gazebo中实现阿克曼转向车的仿真》课程,但是由于ROS 版本的更新,拿到手的课程资料不能直接在ROS Noetic版本中运行,经过我这几天的探索,对遇到的错误及解决方法进行了整理,方便后面购买课程的小伙伴更快的成功运行程序    在文章正式开始之前,先放一下我之前为了寻找该资料报错的原因,而写的两篇与该课程相关的文章链接,感兴趣的可以自行阅读    以阿克曼转向车为例对URDF和XACRO文件进行解读(点击可跳转)    将x

慕羽★的博客 5975

Codeforces546 E. Soldier and Traveling(网络流+输出方案)

题意: 解法: 首先,如果sum{a[i]}!=sum{b[i]},那么一定无解,这里先特判一下. 容易看出网络流可以判断是否有解. 设源点S,汇点T, 将点i上的人不动,看作是存在一条(i,i)的边. 将每个点拆为出点和入点,令id1[i]表示点i的出点,id2[i]表示点i的入点. 建图: (S->id1[i],a[i]),即每个点有a[i]个人. (id2[i]->T,b[i]),即每个点需要b[i]个人. (id1[i]->id2[i],inf),即点i的人可以留在原地.

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 514

YOLOv11涨点改进| TGRS 2026 顶刊| 注意力改进篇| 引入MSEA多尺度边缘感知注意力,助力红外小目标检测、遥感目标检测、工业缺陷检测、图像去雨雾任务高效涨点

🔥本文提出了一种基于MSEA多尺度边缘感知注意力的YOLOv11改进模型,通过增强网络对边缘、纹理和细粒度信息的感知能力,显著提升复杂背景下的目标检测性能。MSEA模块采用多尺度空洞卷积提取上下文特征,并通过边缘监督和注意力融合机制强化目标边界信息。实验表明该方法在小目标、边界模糊目标和复杂纹理目标检测任务中表现优异,尤其在遥感、工业缺陷和红外检测等场景具有显著优势。文章详细介绍了MSEA的结构原理、核心代码实现、模块配置方法以及三种YOLOv11改进方案.

Ai缝合怪、助力小伙伴高效发论文 185

寄存器与计数器设计(Verilog)

always @(posedge Reset or posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn , posedge Clock)//请在括号中补充敏感信号列表。always @(negedge Resetn,posedge Clock)//请在括号中补充敏感信号列表。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。//为了便于自动评测,请勿更改n的值。

M_inherit的博客 362

Codeforces434D 网络流

思路: 题意:有n<=50个点,每个点有xi有[li, ri]种取值,-100 <= li <= ri <= 100,并且给定m<=100条边,每条边为u,v,d表示xu<=xv+d。 每个点value fi(x) = ai*x^2 + bi*x + ci。现在求一种合法的方案,使得权值和最大。 思路:先不考虑的xu<=...

weixin_33755554的博客 215

手把手教你学Simulink——无刷直流电机(BLDC)霍尔传感器(Hall Sensor)信号处理电路仿真

在中,转子位置靠​ 给出,换相逻辑(Commutation Table)据此决定。实际霍尔输出是,且常有:比较迟滞(内置或外加分压)RC 低通(防 EMI 尖刺)与 MCU 间想让你霍尔三相 UVW 理想方波(120° each, 换相每 60°elec)经观察:原始 HU/HV/HW、滤波后波形、整形后 TTL 电平验证换相表(001→100→010…)与转子转向匹配是破局关键。

amy_mhd的博客 39

codeforces 546 E. Soldier and Traveling(网络流+路径输出)

题目链接:https://codeforces.com/problemset/problem/546/E 思路:很简单的建图,留个输出路径的板子 #include <cstdio> #include <cstdlib> #include <cstring> #include <bitset> #include <cmath> #in...

llmxby 272

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

假人有限元模型

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

【codeforces 546E】Soldier and Traveling

time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output In the country there are n cities and m bidirectional roads between them. Eac...

AWCXV 113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

codeforces 546E Soldier and Traveling 网络流

题目传送门 题目大意:有n座城市,每座城市都有一些初始的士兵$Ai$,每个士兵只能通过一条路径达到相邻的城市,然后问能否使得第i座城市的士兵数量是$Bi$,如果可以,要输出流动的方案。 思路:如果不需要输出流动的方案,那么就是个简单的网络流模板题了,而考虑上输出方案,则需要把一个点拆成$i$和$n+i$,建立$(S,i,a[i]),(i,i+n,inf),(i+n,T,b[i])$三...

weixin_30835923的博客 112

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

codeforces 546 E. Soldier and Traveling

E. Soldier and Traveling time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output In the country there are n cities a

whai的专栏 762

CodeForces - 546E Soldier and Traveling(最大流+拆点+建图+输出流量流向)

链接:https://cn.vjudge.net/problem/CodeForces-546E 题意:n个城市,每个城市初始时有a[i]个士兵。城市间有m条无向边,某个城市的士兵可以留在原城市到或到与该城市仅仅相邻的城市(即只隔一条路的士兵)。现在要求最终某个城市必须正好有b[i]个士兵,可能的话输出n*n的矩阵,表示有mat[i][j]个士兵从城市i到城市j。 思路:因为城市有初始数量和目...

birdmanqin的博客 247

codeforces 546E. Soldier and Traveling 网络流

yohaha codeforces 546E. Soldier and Traveling 网络流 题目链接 给出n个城市, 以及初始时每个城市的人数以及目标人数。初始时有些城市是相连的。 每个城市的人只可以待在自己的城市或走到与他相邻的城市, 相邻, 相当于只能走一条路。 如果目标状态不可达, 输出no, 否则输出每个城市的人都是怎么走的, 比如第一个城市

c_czl的博客 277

codeforces 546 E Soldier and Traveling

传送门 题意:给你初始状态和目标状态,再给你m条路,士兵只能通过路走到相邻城市去,一个士兵只能移动一次。问你能否到达该状态,如果能输出转移的矩阵 题解:很显然的网络流,将一个点拆成三个,一个初始状态与s连,一个目标状态与t连,容量b[i],在建立一个中间点,连接初始状态容量INF和目标状态容量a[i];记录下每个中间点和相邻点的边,再跑完网络流后,原容量减去残余流量就能得到转移的士兵个数 ...

weixin_34401479的博客 132

Soldier and Traveling 【CodeForces - 546E】【网络流最大流】

题目链接   超级好的一道网络流求最大流的问题,挺考验思维的,我们在这道题的难点就是怎么建图。   建图是一项巨大的工程,要知道我们的基础状态是一开始的状态,我定义为fir[]状态,后面往后走,我们需要让这个点变成我们想让它成为的状态,我称之为las[]状态,那么我们对于一个数的初始态,我们要做出限流,当然,对于终止状态,我们也需要限流,就是流到汇点的时候只能是我们想要的答案,那么,如何建立对...

既然弱小,就只顾变强就是了 365

codeforces 546E. Soldier and Traveling 网络流

题目链接 给出n个城市, 以及初始时每个城市的人数以及目标人数。初始时有些城市是相连的。 每个城市的人只可以待在自己的城市或走到与他相邻的城市, 相邻, 相当于只能走一条路。 如果目标状态不可达, 输出no, 否则输出每个城市的人都是怎么走的, 比如第一个城市有2个人走到了第二个城市, 1个人留在了第一个城市, 那么输出的第一行前两个数就是1, 2。 很明显的网络流, 输出那里写了好久......

weixin_30852451的博客 84

「日常训练」 Soldier and Traveling (CFR304D2E)

题意 (CodeForces 546E) 对一个无向图,给出图的情况与各个节点的人数/目标人数。每个节点的人只可以待在自己的城市或走到与他相邻的节点。 问最后是否有解,输出一可行解(我以为是必须和答案一样,然后本机调了半天死活不一样,交上去结果A了- -)。 分析 典型的网络流。问题在于建模。如何解决两个节点的人数-&gt;目标人数? 考虑到我们始终要和这两个状态打交道,不妨将每个结点拆...

SamHX的博客 299

codeforces #304 E 546E E. Soldier and Traveling(最大流)

题目链接: 点击打开链接 题目大意: 给出一个无向图,每个点有一个值,只能给它周围的一个点一些值,然后达到目标的点权 题目分析: 考虑到点之间的值相互交换,想到了网络流,那么对于每个点,先要拆点,一个点代表起始状态,另一个代表目标状态,也就是同一个点拆成的两个点一定是可以链接,而且权值就是a[i],然后对于每条边,将起始点和目标点连接,因为目标点的流量由起始点的流量和与它相连的其他起始点

llin-黎辰 708

Codeforces Round #304 (Div. 2) E. Soldier and Traveling 最大流

E. Soldier and Traveling Time Limit: 20 SecMemory Limit: 256 MB 题目连接 http://codeforces.com/contest/546/problem/E Description In the country there are n cities and m bidirectio...

weixin_30533797的博客 83

「Codeforces1250K」Projectors-网络流

Description 有nnn堂讲课,mmm次研讨会,xxx个高清投影仪和yyy个普通投影仪。 每堂讲课必须使用一个高清投影仪,而研讨会可以使用普通或高清投影仪。 第iii堂讲课时间在[ai,bi)[a_i,b_i)[ai​,bi​),第iii次研讨会在时间在[pi,qi)[p_i,q_i)[pi​,qi​),一个投影仪一次只能用在一个地方,且在使用完毕后才会归还。 构造为每节讲课/研讨会分配一...

DSL_HN_2002的博客 366
上一篇: Codeforces 570E - Pig and Palindromes (DP)
下一篇: Python 动态生成变量名
Baoli1008
博客等级 码龄12年 70粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值