zoj 2314 Reactor Cooling

Q学习(Q-learning)入门小例子及python实现 一、从马尔科夫过程到Q学习 # 有一定基础的读者可以直接看第二部分 Q学习(Q-learning)算法是一种与模型无关的强化学习算法,以马尔科夫决策过程(Markov Decision Processes, MDPs)为理论基础。 标准的马尔科夫决策过程可以用一个五元组<S,A,P,R,γ>表示,其中: S是一个离散有界的状态空间; A是一个离散的动作空间; P为状态转... 阅读详情

        题意:网络中,每一条边拥有流量上限和下限,问是否存在可行流。

        思路:最大流(经典模型,建图)。这个模型的建图方法略为神奇,原图中,边的容量改为流量上限-流量下限,建立源和汇,对每个顶点,计算恰好满足流量下限时是输入多还是输出多,设d[x]是点x输入和输出差的绝对值,如果该点输出多,连接该点到汇的边,容量是d[x],反之连接源到该点。最后检查源(汇)有关的边是否都满载,若满载则存在可行流。

        我们可以这样理解,假设初始网络中满足每条边流量恰好为流量下限,但是这种情况下,网络不一定是平衡的,也就是有的点中“物质”会越来越多,有的点中“物质”会越来越少,我们就需要源/汇去供给/消耗不平衡的“物质”。


#include<iostream>    
#include<cmath>    
#include<cstring>    
#include<queue>    
#include<vector>    
#include<algorithm>    
#include<string.h>    
#include<cstdio>    
    
using namespace std;    
    
#define INF 100000010   
#define maxn 210  

struct Edge{      
    int u; int v;      
    int cap; int flow;      
    Edge(int u,int v,int c):u(u),v(v),cap(c),flow(0){}        
    Edge(){};      
};      
Edge edges[maxn*maxn];    
      
int ne;      
int head[maxn];      
int next[maxn*maxn];      
int n,m; 
int L[maxn*maxn]; 
int D[maxn]; 

void init(){      
    memset(head,-1,sizeof(head));   
	memset(D,0,sizeof(D));   
    ne=0;      
}      

int lv[maxn];      
bool bfs(int s,int t){      
    memset(lv,-1,sizeof(lv)); lv[s]=0;      
    queue<int> que; que.push(s);       
    while(!que.empty()){      
        int cur=que.front(); que.pop();      
        for(int i=head[cur];i!=-1;i=next[i]){      
            Edge& e=edges[i];      
            if(lv[e.v]!=-1)continue;      
            if(e.flow<e.cap){      
                lv[e.v]=lv[cur]+1;      
                que.push(e.v);      
            }      
        }      
        if(lv[t]!=-1)return 1;      
    }      
    return 0;      
}      

int cur[maxn];
int dfs(int x,int a){      
    if(x==n+1||a==0)return a;      
    int re=0;      
    for(int& i=cur[x];i!=-1;i=next[i]){      
        Edge& e=edges[i];      
        int t;      
        if(lv[e.v]==(lv[x]+1)&& (t=dfs( e.v , min(a,e.cap-e.flow))) ){      
            edges[i].flow+=t;      
            edges[i^1].flow-=t;      
            re+=t;      
            a-=t;      
            if(a==0)break;      
        }      
    }      
    return re;      
}

int maxflow(int s,int t){      
    int flow=0;      
    while(bfs(s,t)){
        memcpy(cur,head,sizeof(head));      
        flow+=dfs(s,INF);  
    }      
    return flow;      
}

void addedge(int u,int v,int c){      
    edges[ne]=Edge(u,v,c);        
    next[ne]=head[u];      
    head[u]=ne;      
    ne++;    
    edges[ne]=Edge(v,u,0);      
    next[ne]=head[v];      
    head[v]=ne;      
    ne++;      
}  
  
int main(){  
    int t;
    cin>>t;
	while(t--){  
    	cin>>n>>m;
        init();  
        for(int i=1;i<=m;i++){  
            int u,v,l,c;  
            scanf("%d%d%d%d",&u,&v,&l,&c);  
            addedge(u,v,c-l);  
            D[u]+=l;
            D[v]-=l;
            L[i]=l;  
        }
          
        for(int i=1;i<=n;i++){
            if(D[i]>0)  
                addedge(i,n+1,D[i]);  
            else  
                addedge(0,i,-D[i]);  
        }  
        
        maxflow(0,n+1);  
        bool ok=1;  
        for(int i=0;i<ne;i++){  
            if(edges[i].u==0){  
                if(edges[i].flow!=edges[i].cap)ok=0;  
            }  
        }  
        if(ok){  
            cout<<"YES"<<endl;  
            for(int i=1;i<=m;i++){  
                printf("%d\n",edges[(i-1)*2].flow+L[i]);  
            }  
        }else{  
            cout<<"NO"<<endl;  
        }  
    }  
    return 0;  
}  


把 ABAP writable CDS view entity 讲透:从只读建模到可写模型的 ABAP CDS 新能力 摘要:SAP引入的writable CDS view entity突破了传统CDS视图只读的限制,允许通过ABAP SQL直接进行数据修改。该特性通过WRITABLE关键字定义,使CDS视图成为与数据库表同等级别的可写对象。其核心价值在于为数据集成、中间层同步等场景提供结构化写入入口,但需注意不应绕过业务规则。最佳实践建议保持底层表结构简单映射,避免复杂变形。这一特性标志着CDS从单纯消费模型向双向数据交互能力的演进,为ABAP开发提供了新的数据边界设计思路。 阅读详情

相关推荐

保姆级教程:用MATLAB搞定双目相机标定,从导入图片到参数解读全流程

本文提供了一份详细的MATLAB双目相机标定全流程指南,涵盖从图片准备到参数解读的每个环节。重点讲解了棋盘格选择、拍摄技巧、MATLAB工具箱设置及参数优化,帮助读者避免常见错误并提升标定精度。特别适合机器人导航、三维重建等领域的开发者。

weixin_33737134的博客 429

zoj2314(上下界网络流)

Description The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuclearreactor to produce plutonium for the nuclear bomb they are planning...

weixin_30872867的博客 163

【SystemVerilog项目实践】4.AHB-SRAMC(验证计划)

验证计划

托马斯的博客 3660

zoj2314

zoj2314

zzu-hust-madd 472

白炽灯寿命工程解析:从钨丝蒸发到电压控制的可靠性设计

白炽灯作为一种经典的电光源,其工作原理基于电流通过钨丝产生热辐射发光。在高温下,钨丝会持续蒸发导致灯丝逐渐变细、电阻增大,这是影响其寿命的核心物理机制。从工程角度看,白炽灯的可靠性设计涉及材料科学、热力学和电路设计的交叉,技术价值在于通过理解其失效原理,可以在成本与性能间取得最佳平衡。在实际应用中,电压波动、开关浪涌电流和机械振动是主要寿命杀手,尤其在工业控制、仪器仪表和特定照明场景中,合理的设计能大幅提升系统稳定性。本文深入探讨了钨蒸发、热应力等关键因素,并结合浪涌抑制和降压设计等实战技巧,为工程师提供了

weixin_28684655的博客 570

树莓派入门教程 - 0 - 准备篇 - 0.0 SD卡制作树莓派系统镜像启动盘 开机

电脑需要提前安装的工具: sd卡格式化工具SDFormatter,官网下载链接:https://www.sdcard.org/downloads/formatter/ 镜像烧录工具Win32 Disk Imager,官网下载链接:https://win32diskimager.download/ 使用到的硬件: 一张容量大于等于16GB的TF卡 + 读卡器; 树莓派板卡。3B、3B+、4B等各型号均可,带有 HDMI接口即可。 HDMI接口的显示屏。 鼠标、键盘、电脑。 1....

Mark_md的博客 6972

zoj2314 Reactor Cooling --- 上下界可行流

题目给出了每条边的上下界, 此类题目的建边方法是: 1、添加源点汇点, 2、对每条边 添加边 c(u,v) = up(u,v) - low(u,v) 3、对每个点 c(s,v) = out(v)                        c(v,t) = in(v)   (权值为正) 求s到t的最大流,若最大流等于所有边下界的和,则存在可行流, 每条边的流量为 flow

Unknown 1110

Shader之——花草动画shader

今天 ,接到了个需求,花草的动画。谈到花草动画,立马就想到顶点动画,让顶点动起来就可以实现了。但是有个问题,所有的草都往一个方向运动,这个就麻烦了。因为在shader里没有随机这种概念,提到最多的是用一张噪声图来模拟。在网上搜索了一下,发现有更好的办法,就是用每个顶点到一个点的距离来控制动画的开始,毕竟每个顶点到同一个点的距离很少是一样的。 float dis = distance ...

baicaishisan的博客 2184

ZOJ 2314 Reactor Cooling

无源汇有上下界的网络流

依然一笑作春温。 585

扫地机器人设计与实现——基于嵌入式系统的智能家居解决方案

本文介绍了基于嵌入式技术的扫地机器人设计与实现。通过利用STM32单片机、传感器、驱动系统等硬件组件,并结合路径规划与控制算法、远程控制等软件技术,设计出了一款具有智能避障、路径规划、自动充电等功能的扫地机器人。系统的开发不仅提高了清洁效率,也为进一步研究和优化扫地机器人提供了实践基础。

2201_76125393的博客 1639

BAT031:按列表名单将路径a下的文件夹批量剪切到路径b

摘要:按列表名单将路径a下的文件夹批量剪切到路径b。

qq_31762031的博客 1219

ZOJ2314Reactor Cooling(无源汇上下界可行流)

题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1314 建图: 首先,建立一个超级源点s和超级汇点t。 然后,把所有原图中的边都加入到建立的新图中,容量为上限间下限。 再后,计算出一个d[i],表示编号为 i 的点所有流入的下限流量的和 减去 该点所有留出的下限流量和;如果d[i] > 0,那么就连一条从 s

qust1508060414的博客 339

简要介绍 | 两阶段点云目标检测:理论与实践

目标检测是计算机视觉中的一个重要任务,其目的是识别和定位图像中的物体。对于二维图像,这已经有许多有效的方法。然而,对于三维数据(如由LiDAR生成的点云数据),目标检测则更为复杂。

NLOS的博客 1307

ZOJ2314 Reactor Cooling

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 a nuclear reactor to...

dezhen7015的博客 150

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jre9下载 jdk9

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

Reactor Cooling ZOJ - 2314 上下界网络流

Reactor Cooling ZOJ - 2314 上下界网络流 Code: #include&lt;cstdio&gt; #include&lt;algorithm&gt; #include&lt;vector&gt; #include&lt;queue&gt; #include&lt;iostream&gt; #include&lt;cs...

EM LGH 186

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

ZOJ2314: Reactor Cooling 题解

无源汇的上下界可行流的模板题 上下界的做法可以参考Algorithm Design一书,里面写的很清楚 我们考虑对每个点i维护一个d[i],表示这个点的surve和demand情况,为正表示demand,为负表示serve 我们考虑一条从x到y,下限为low,上限为high的边 如果我们预先从x到y流low的流量,那么这就变成了一条没有下限,上限为high-low的边,全部转换以后就可以跑...

IcePrincess_1968's World 289

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

[zoj2314] Reactor Cooling

Description 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 planning to create. Being the...

weixin_30481087的博客 93

【ZOJ2314】Reactor Cooling(有上下界的网络流)

前言 话说有上下界的网络流好像全机房就我一个人会手动滑稽,当然这是不可能的 Solution 其实这道题目就是一道板子题,主要讲解一下怎么做无源无汇的上下界最大流: 算法步骤 1.将每条边转换成0~up-down。 但是,我们发现转换的时候不能保证一定是流量守恒。 2.可以把一条边的起点都减去下界,终点加上上界。令这个数组为\(d\) 3.对于\(d_i<0\),那么向汇点连条边;...

araw94333的博客 233
上一篇: hdu 4435 charge-station
下一篇: 2012 ACM-ICPC 杭州站解题报告(4道签到题)
squee_spoon
博客等级 码龄14年 61粉丝 455原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值