第十一章例题 UVa11082 Matrix Decompressing

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别 本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。 阅读详情
/*SE:wn------王宁*/
// UVa11082 Matrix Decompressing
// rewrited version 
/*有没有很神奇,这是一个可以用最大流解决的问题
矩阵的sum值是固定的
所以行和之和=列和之和
也就是说从起点流出的流量最后全部流入了终点
起点分成数量为行数的流,通过分别流入该行与各列交汇的单元格,共同构成各列的列和
起点与代表行的点连接的边的容量就是行和——总项
代表行的点与代表列的点连接的边的容量上限是19(——减1后的结果,这样就保证了输出时每个单元格的值至少是1)-分项
代表列的点与终点连接的边的容量就是列和——总项
因为解一定存在,所以与起点终点连接的边的流量都会到达容量值
之后只要输出中间各个分项的流量+1即可
我觉得这很神奇宝贝,皮卡乒皮卡乓皮卡丘~
*/
#include<bits/stdc++.h>
using namespace std;
int T,R,C,di,x;
const int maxn = 20 + 20 +5;
const int INF = 2000000000;
struct edge{
  int from,to,cap,flow;
  edge(int u,int v,int c,int f):from(u),to(v),cap(c),flow(f){}
};
struct EdmondsKarp{
  int m,ans;
  vector<edge> Edges;
  vector<int> G[maxn];
  int a[maxn];
  int p[maxn];

  void init(int n){
    Edges.clear();
    for(int i=0;i<n;i++) G[i].clear();
  }

  void addedge(int u,int v,int c){
    Edges.push_back(edge(u,v,c,0));
    Edges.push_back(edge(v,u,0,0));
    m=Edges.size();
    G[u].push_back(m-2);
    G[v].push_back(m-1);
  }

  int maxFlow(int s,int t){
    ans=0;
    for(;;){
      memset(a,0,sizeof(a));
      a[s]=INF;
      queue<int> Q;
      Q.push(s);
      while(!Q.empty()){
        int x=Q.front(); Q.pop();
        for(int i=0;i<G[x].size();i++){
          edge& e=Edges[G[x][i]];
          if(!a[e.to]&&e.cap>e.flow){
            a[e.to]=min(a[x],e.cap-e.flow);
            p[e.to]=G[x][i];
            Q.push(e.to);
          }
        }
        if(a[t]) break;
      }
      if(!a[t]) break;
      for(int u=t;u!=s;u=Edges[p[u]].from){
        Edges[p[u]].flow+=a[t];
        Edges[p[u]^1].flow-=a[t];//是p[u]^1边的编号异或,不是点来异或
      }
      ans+=a[t];
    }
    return ans;
  }
};
int main() {
  int i,j,k,kase;
  int no[maxn][maxn];
  cin >> T;
  for(kase=1;kase<=T;kase++){
    cin>>R>>C;
    EdmondsKarp ek;
    ek.init(R+C+2);
    di=0;
    for(i=1;i<=R;i++){
      cin>>x;
      ek.addedge(0,i,x-di-C);
      di=x;
    }
    di=0;
    for(i=1;i<=C;i++){
      cin>>x;
      ek.addedge(R+i,R+C+1,x-di-R);
      di=x;
    }
    for(i=1;i<=R;i++)
      for(j=1;j<=C;j++){
        ek.addedge(i,R+j,19);
        no[i][j]=ek.Edges.size()-2;
      }
    ek.maxFlow(0,R+C+1);
    cout<<"Matrix "<<kase<<endl;
    for(i=1;i<=R;i++){
      for(j=1;j<=C;j++)
        cout<<ek.Edges[no[i][j]].flow+1<<" ";
      cout<<endl;
    }
    cout<<endl; 
  }
  return 0;
}

 

Windows 下 Hermes Agent(爱马仕)安装全记录:从零到一的保姆级图文教程 本文主要介绍了Windows 下 Hermes Agent(爱马仕) 安装全记录:从零到一的保姆级图文教程,希望能对学习使用 Hermes Agent 的同学们有所帮助。 文章目录 1. 背景 2. 实战教程 2.1 步骤一 安装WSL环境 2.2 步骤二 安装Python环境 2.3 步骤三 安装Hermes Agent 2.4 步骤四 修正 API Key 错误 2.5 步骤五 配置多个模型 2.6 步骤六 启动Hermes Agent 3. 常见问题及解决方案 4. 总结 阅读详情

相关推荐

UCOS-III 系统移植

UCOSIII系统移植到GD32F303详细过程 工程代码:https://github.com/jslaobing/techIot_ucosiii_porting

TechIoT - 探索物联网与嵌入式系统 2087

UVa11082 Matrix Decompressing - 最大流

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2023 题意:知道矩阵的前i行之和,和前j列之和(任意i和j都可以)。求这个矩阵。每个格子中的元素必须在1~20之间。矩阵大小上限20*20。 ...

230

汽车TARA分析实战:从威胁建模到安全需求落地的完整指南

在汽车电子电气系统开发中,威胁分析与风险评估(TARA)是确保功能安全与网络安全的核心方法论。其原理在于通过结构化的流程,系统性地识别资产、分析威胁场景并评估风险,旨在将安全理念前置,从设计源头规避风险。这一过程的技术价值在于将模糊的安全担忧转化为可量化、可追溯的工程需求,从而指导资源精准投放,是符合ISO 26262和ISO/SAE 21434标准要求的关键实践。其应用场景贯穿智能汽车从概念设计到系统开发的各个阶段,尤其对于涉及自动驾驶、智能座舱、车云通信等复杂功能的域控制器开发至关重要。本文聚焦于TAR

weixin_42706667的博客 305

2018年2月2日训练日记

今晚两场比赛,希望不要再掉分了啊... 图论-网络流:目前看了80来道题,也感觉懂了不少东西,然而有的题目还是不会建模。。。还是看的少了吧。 好题:UVA 11082 Matrix Decompressing 最大流 题目大意:对于一个R行C列的正整数矩阵(1 一个大佬的博客写的非常好:假设这个矩阵的每一行是水管,每一列是水管,每行有出水口流到每一列,这样想比较好理解。然后每行的流量和

LSD20164388的博客 594

攻防世界 web高手进阶区 9分题 Web_python_flask_sql_injection

继续ctf的旅程,开始攻防世界web高手进阶区的9分题,本文是Web_python_flask_sql_injection的writeup

闵行小鱼塘 1473

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 559

(hdu step 5.1.1)A Bug's Life((ai,bi)表示ai、bi不在同一堆中,有若干对数据,判断是否有bug)

题目:A Bug's LifeTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 723 Accepted Submission(s): 277 Problem DescriptionBackground Professor Hopper is r

黄俊东的专栏 1668

天爱验证码wasm验证码逆向

本文分析了某网站采用WASM加密技术的情况,发现其加密方式主要针对data和轨迹信息,整体加密逻辑变化不大。通过反混淆技术可以还原代码,并确认加密过程分为两步:先对原始参数逐个加密,再调用WASM模块进行最终加密。研究发现关键参数drives和ki都存储在WASM模块内,通过提取wasm_exec.js文件即可直接使用该加密功能。本文仅提供技术研究思路,强调严禁用于任何违法行为。

码王吴彦祖的博客 934

给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c)。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 返回

给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。 另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。 返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| +...

Cheng_MY的博客 852

Python爬虫:如何抓取亚马逊商品评论和评分

通过本文的学习,您已经掌握了如何使用Selenium爬取亚马逊商品的评论数据,并处理反爬虫机制。特别是在亚马逊这样的大型电商平台,商品评论和评分不仅能够反映产品的质量和顾客的体验,还可以对商家进行竞争分析。通过爬取亚马逊的商品评论,您可以获得有价值的市场信息,如产品的优缺点、消费者的反馈等。通过查看源代码,您可以发现,亚马逊的商品评论和评分数据往往通过JavaScript动态加载,这也意味着在抓取时需要使用Selenium或Playwright等工具来模拟浏览器加载。亚马逊的评论页面支持分页加载。

2201_76125261的博客 1437

【Unity】网络游戏实战(序章)MMORPG大型多人在线角色扮演 + 中国象棋联网对战

本系列会基于两种常见的网络游戏类型(MMORPG大型多人在线角色扮演和多人棋牌),从零开始实现网络游戏开发中的大多数环节。【杜绝代码炫技】本系列杜绝代码炫技,摈弃那些高深的设计模式,一切业务逻辑的实现代码追求浅显易懂,即便是网络编程菜鸟,也能循序渐进掌握本系列的核心要点。【授之鱼也授之渔】与一些开源库那样只授予源码不同,本系列还会基于各个技术要点展开详解,并结合切实的可直接运行的Demo,授之鱼更授之渔。

神码编程 1963

[Noi2014]魔法森林 (Link Cut Tree)

Description 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士。魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M。初始时小E同学在号节点1,隐士则住在号节点N。小E需要通过这一片魔法森林,才能够拜访到隐士。 魔法森林中居住了一些妖怪。每当有人经过一条边的时候,这条边上的妖怪就会对其发起攻击。幸运的是,在号节点住着两种守护精灵:A型守护

Shion的专栏 855

会计-合并-5- 增资、处置交易在合报与个报会计处理

摘要:本文系统梳理了股权投资会计处理的四种情形:从交易性金融资产转为权益法或成本法、权益法转成本法、权益法增持。核心原则是区分个报与合报处理,重点关注原投资公允/账面价值的计量差异及损益确认逻辑。对不丧失控制权的股权处置,个报确认投资收益,合报调整资本公积;丧失控制权时,个报需追溯调整权益法核算,合报计算综合投资收益。一揽子交易的特殊处理强调将过渡性差额暂记其他综合收益,最终丧失控制权时转入当期损益。文末通过典型案例演示了不同情境下的具体计算方法。

qq_34047402的博客 466

uva 11082 Matrix Decompressing (最大流)

uva 11082 Matrix Decompressing题目大意:给出一个矩阵前i列所有元素的和,和前j行所有元素的和,求这个矩阵解压以后的原型。(答案不唯一)解题思路:先根据题目所给出的条件,求出每行每列的和。然后把每行每列都当成一个节点,设置一个超级源点连向所有行结点,容量为“该行的和减去列数”,设置一个超级汇点,使所有的列结点连向超级汇点,容量为“该列的和减去行数”,然后所有的行结点和列结

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 1437

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

UVa 11082 Matrix Decompressing

本文研究了如何根据给定的累积行和与累积列和还原矩阵元素的问题。通过将问题转化为网络流模型,建立二分图匹配并应用Dinic算法求解。具体步骤包括:1) 计算行和与列和;2) 构建流量网络,设置源点、汇点和中间节点;3) 使用Dinic算法计算最大流;4) 根据残余网络确定矩阵元素值。该方法确保了元素值在1到20之间,时间复杂度为O(√V·E),适用于R,C≤20的规模。代码实现验证了该算法的正确性和高效性。

寂静山林 745

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

UVa 11082 Matrix Decompressing (最大流问题)

题目链接:http://vjudge.net/problem/UVA-11082      题意:构造一个r行c列的矩阵,满足前i行元素之和为Ai,前i列元素之和为Bi。            好巧妙的思路,怎么也想不到是网络流问题,看来还是太菜啊。     设每一行之和为R[i],每一列之和为C[i]。建一个二分图,每行对应一个X结点,每列对应一个Y结点。然后建立源点s和汇点t,

Interstellar_的博客 498

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Matrix Decompressing UVA - 11082

问题 分析 主要是思想 首先算出矩阵的行和和列和,在对它们做减法,将每个元素的区间从[1,20]变为[0,19],算出对应的行和和列和,然后将每行抽象成一个点X_i,每列抽象成一个点Y_j,添加源点和宿点,连接源点和每个X_i,容量是对应的行和,连接每个Y_j和宿点,容量是列和,然后哦X_i和Y_j之间全连接,容量是19,求源点,宿点之间的最大流,流经X_i,Y_j之间的流量就是矩阵中i行j列的值...

zpf1998的博客 139

UVa 11082 Matrix Decompressing 最大流

传送门:

poursoul 911

uva11082 Matrix Decompressing

证明: 对于每一个X节点,都是只有一个入流,多个出流(分别流向每一个Y节点),显然多个出流的和正好等于入流;同理,对于每一个Y节点,有多个入流(分别来自每一个X节点),只有一个出流,显然多个入流的和等于出流。第一类弧,以每一行所有元素之和为容量;第三类弧,以每一列所有元素之和为容量;第二类弧,最终流量为矩阵中的每一个元素。也就是说,第一类弧分成多个分支,每一个第一类弧都分出一个分支汇到...

dengdouweng1282的博客 173

UVA11082MatrixDecompressing

本题的求解实质上是在检测做题者对于最大流的理解深度。从横行转移数值到纵行,其实也是二分图的带权匹配问题。不过还需要回顾解法。

qq_16603365的博客 243

UVA 11082 Matrix Decompressing (网络流)

题目:UVA11082 题意:有一个n行m列的矩阵,给出前n行的和,前m列的和,让构造出这个矩阵,保证有解,矩阵中的每个值在1-20之间 源点向每一行连边,每一列向汇点连边,然后每个格子就是该行与该列连边,题目中说每一个矩阵的小格子的值必须大于0,如果这时候我们把容量设为20是不对的,因为这样会出现跑出来0的情况。所以对于行与列之间的连边,容量应设为19,也就是我们默认流了1的流量了,所以源点...

shyoldman的博客 381

UVa #11082 Matrix Decompressing (例题11-8)

Run Time: 0.029s #define UVa "LT11-8.11082.cpp" //Matrix Decompressing char fileIn[30] = UVa, fileOut[30] = UVa; #include #include #include #include #include #include #include using namespace std;

专攻挖掘机炒鸡蛋算法的专栏 804

Matrix Decompressing UVA - 11082 最大流 建图

题目链接: UVA - 11082题目大意一个r*c的矩阵, 给出两个数列, 矩阵内数字在范围[1, 20]之间, A[i] := 前i行的和, B[i] := 前i列的和 还原矩阵(保证有解)思路以每一行每一列为节点, 设置源点s, 汇点t s向每一行连边, 容量为这一行的数字和(通过A求出) - c(行的和-列数相当与这一行每一个数字都-1, 将数字取值范围从[1, 20]变成了[0, 19

litmxs的博客 511

Uva 11082 Matrix Decompressing (最大流)

链接 : http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=36866 可以建一个类似二分图,X集合是所有行,Y集合是所有列,X->Y的容量为(1到20)。建立源点连接每个X中的点,容量为该行的和。建立汇点连接Y中的点,容量为该行的列。目的是求从源点出发的流量就是容量,且必须走完所有流量并到达汇点,汇点的流量必须是源点发出的流

__ElemenT 1064

UVA 11082 - Matrix Decompressing(最大流)

题目链接 https://cn.vjudge.net/problem/UVA-11082 【题意】 对于一个R行C列的正整数矩阵(1&lt;=R,C&lt;=20)设A[i]为前i行的所有元素和,B[i]为前i列的所有元素和。已知R,C和数组A,B,找出一个满足条件的矩阵,并且矩阵中的元素必须是1~20之间的正整数,输入保证有解,输出任意解即可 【思路】 将行和列抽象成结点,每行对应一个X...

Change the world by program. 223

UVA 11082 - Matrix Decompressing(网络流+行列模型)

UVA 11082 - Matrix Decompressing 题目链接 题意:给定一个矩阵每行每列的和,要求现在构造一个矩阵满足元素在1-20之间,行列和满足条件 思路:行列建图,源点连到每个行,容量为和,每列连到汇点,容量为和,每行连到每列,容量20,注意这题要求的是1-20,所以可以先把所有位置-1,最后输出的时候+1即可 代码: #include #inc

Remilia's 2135
上一篇: 第十一章例题 UVa753 A Plug for UNIX
下一篇: 第十章例题 A - Colossal Fibonacci Numbers! UVA - 11582
JXUFE_ACMer
博客等级 码龄9年 20粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值