No.16 - POJ1149 猪圈与顾客的匹配 最大流

大模型推理常见采样策略:Top-k, Top-p, Temperature, Beam Search 大模型推理采样策略,举例通俗易懂汇总介绍 阅读详情

最大流:
新增源点0,汇点N+1
从源点发出m条边,每条边容量为猪圈m的存货,
然后m条边依次流经每个有对应猪圈钥匙的顾客,顾客之间连边为INF,
若不同猪圈流经同一个顾客,则边权相加。
这些边代表猪圈存货的限制。

从每个顾客发出一条边指向汇点,边权为顾客需求。
这些边代表顾客需求的限制。

此时,在这张图上最大流即可。

// ShellDawn
// POJ1149
// No.16

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#define MM(x) memset(x,0,sizeof(x))
#define INF 0x3f3f3f3f
using namespace std;

#define maxn 105
#define maxm 1005

int n,m;
int pigs[maxm];
int cus[maxn];
// 邻接矩阵
int E[maxn][maxn];
// 邻接表
int P[maxm][maxn][2];
int C[maxm];
// END
int V[maxn];

void make_edge(){
    MM(E);
    for(int i=1;i<=m;i++){
        if(C[i] > 0){
            int a = P[i][0][0];
            E[0][a] += pigs[i];
        }
        for(int j=1;j<C[i];j++){
            int a = P[i][j-1][0];
            int b = P[i][j][0];
            E[a][b] = INF;
        }
    }
    for(int i=1;i<=n;i++){
        E[i][n+1] = cus[i];
    }
}

bool BFS(int s){
    MM(V);MM(C);
    queue<int> q;
    q.push(s);
    V[s] = 1;
    while(!q.empty()){
        int loc = q.front();
        q.pop();
        for(int i=1;i<=n+1;i++){
            if(V[i] == 0 && E[loc][i] > 0){
                q.push(i);
                V[i] = V[loc] + 1;
                P[loc][C[loc]][0] = i;
                P[loc][C[loc]][1] = E[loc][i];
                C[loc]++;
                if(i == n+1) return true;
            }    
        }
    }
    return false;
}

int DFS(int now,int minflow){
    if(now == n+1) return minflow;
    int flow = 0;
    for(int i=0;i<C[now];i++){
        int next = P[now][i][0];
        int v = P[now][i][1];
        int f = DFS(next,min(minflow,v));
        minflow -= f;
        flow += f;
        E[now][next] -= f;
        E[next][now] += f;
    }
    return flow;
}

void Dinic(){
    int maxflow = 0;
    while(BFS(0)){
        maxflow += DFS(0,INF);
    }
    cout<<maxflow<<endl;
}

int main(){
    while(cin>>m>>n){
        for(int i=1;i<=m;i++){
            cin>>pigs[i];
        }
        MM(C);
        for(int i=1;i<=n;i++){
            int T;
            cin>>T;
            while(T--){
                int a;
                cin>>a;
                P[a][C[a]++][0] = i;
            }
            cin>>cus[i];
        }
        make_edge();
        Dinic();
    }
    return 0;
}
【图像拼接】论文精读:As-Rigid-As-Possible Shape Manipulation(ARAP) 文章目录前言1.摘要2.算法的总体流程总结 前言 图像变形算法 1.摘要 论文提出了一个二维图形互动系统。图形是建立在三角形网格上的,用户只需移动几个网格顶点(限制顶点),系统通过最小化每个三角形的误差计算网格剩余顶点(自由顶点)的位置。 算法分两步: 适当旋转每个三角形。 调整大小。 关键是使用二次度量误差将最小化问题转换成线性方程组,然后再解这个方程组。 刚性形状变形是很难的,论文的研究使其变得简单。 2.算法的总体流程 总的流程分三步: 将图形用三角形网格覆盖 选择三个点(限制顶点) 操纵限 阅读详情

相关推荐

若依框架-实现管理端与用户端的不同页面布局

我们现在要做的是:管理员登录时展示后台管理端,普通用户登录时展示我们自己写的页面。所以我们可以用v-if来判断登录用户的角色,如果用户角色包含admin,说明是管理员,渲染管理端相关组件,否则渲染用户端组件。不过若依作者的本意还是想退出系统后清空角色信息,所以为了保险期间,我们可以在退出系统后,延迟2秒,再单独清空角色信息。当我们登录管理端后,再退出登录,会有那么一瞬间渲染用户页面,然后才是回到登录界面。这个时候,前端检测到角色信息为空,不包含admin,于是就会渲染用户页面。用来延迟 2 秒执行。

m0_74462339的博客 1565

poj 1149 建图+最大流

此题关键问题在于顾客是一个接一个来的,所以早来的顾客选择权越大。 下面是建图 1、首先将所有顾客和汇点连接,边容量就是顾客需要的猪的数量。这是很容易想到的。 2、然后,对于某个猪圈,最先来的人能最先访问它,所以猪圈(源)优先连接先来的人,边容量为猪圈里猪的数目,如果当前猪圈已经被访问过,那么就让上一次访问这个猪圈的顾客和当前顾客连接。 可以这样想象,猪优先给,先打开它的人,晚来的人只能拿上

904

【寄存器模型】一、一个简单的寄存器模型

在描述寄存器模型之前,首先来了解一下实际寄存器的组成结构:如下图所示的DUT内部真实的寄存器寄存器中最小的一个单位是域(field),域是由一个或多个bit拼接而成的。一个或多个域就构成了一个寄存器(reg)。一个或多个寄存器就构成了一个块(block)。将DUT中的寄存器抽象出来,建立寄存器模型,如下图所示:uvm library已经定义好了field、reg、block等相关的概念,构建寄存器模型时,只需要继承这些类即可。:构建寄存器模型中的域段。uvm_reg。...

carrotbanana的博客 5368

poj 1149经典网络流构图

题意:m个猪圈,n个客户,每个客户给出选则猪圈的钥匙和需要购买猪的个数,其中每次客户购买时客户选则的猪圈数量可以相互更换,问最大购买数量。 思路:以客户作为除源点汇点之外的点,然后对于每个猪圈从源点连其第一次购买的客户,容量为其猪的个数,随后链接其下一次购买的客户容量为无穷。最后每个客户与其汇点相连,数量为想要购买的个数。 一开始没想出来,其实对于每个需求,只要控制好其源点...

weixin_34166847的博客 135

爬取百度图片

最开始,我们想要爬取图片,首先需要打开百度图库,然后在搜索栏中输入自己想要的图片(比如说壁纸)。接着右键检查,点击网络:起初可能没有名称信息,刷新界面就可以了。打开信息,查看标头内容可以看到请求URL为:复制这串URL,然后在浏览器中打开这个就是我们搜索的壁纸图片的网页内容。怎么找到图片的URL呢?在上述内容中,找到data,可以发现里面每隔一个aiEditData,下面代码的形式是一样的,就相当于一张图片。

weixin_54143563的博客 1939

Nacos2.3.0与vastBase数据库的集成实践指南

本文详细介绍了将Nacos 2.3.0的默认数据库从MySQL迁移至vastBase数据库的完整实践指南。内容涵盖前期环境准备、源码改造、依赖配置、SQL适配、数据库初始化以及最终的编译打包与部署验证,旨在帮助开发者在国产化或特定技术栈场景下,实现微服务配置中心与vastBase数据库的自主可控集成。

plant的博客 273

poj 1149 最大流经典建图

poj 1149 题意:有m个猪圈,n个人去买猪,每个人有ai个猪圈的钥匙最多买bi只猪,每个人买猪时会把猪圈门打开,这时候可以将这几个猪圈里买剩下的猪自由分配到这几个猪圈里,问最多能卖掉多少头猪。 思路:实在是经典的建图方法,这篇博客写的很清晰了,膜拜大牛orzzzzzzzzzzzzzzzzzzz #include #include #include #include #inclu

AngelBeats! 556

学习笔记:CNN中模型复杂度

CNN有卷积层和全连接层构成。对于一个卷积层,设输入通道数未CinC_{in}Cin​,输出通道数未CoutC_{out}Cout​,卷积核kernel size为Kw×KhK_w\times K_hKw​×Kh​,输出的特征图尺寸是H×WH\times WH×W 。全连接层的输入通道数为NinN_{in}Nin​,输出通道数为NoutN_{out}Nout​. 时间复杂度 用每秒钟浮点数运算量衡量。 FLOPs指的是floating-point operations per second,每秒钟浮点数运算

keep用心的博客 623

poj1149(最大流,构图较难)

题目链接:http://poj.org/problem?id=1149          大意:有M个猪圈,每个猪圈关着一定数量的猪,作为管理员的Mirko,竟然没有猪圈的钥匙,钥匙在哪呢,有N个顾客,每个顾客拿着其中几个猪圈的钥匙(作为管理员没有钥匙,竟然在顾客的手里,有点难以理解啊,但这不是重点),顾客可以在这些猪圈里购买需要数量的猪,当顾客把猪圈打开购买猪后(不会再关掉),Mirko可以任

鸟 的 天 空 1642

CHIP-Seq数据分析流程

文章目录CHIP-Seq数据分析流程相关软件安装数据下载将SRA转化为fastq文件数据质控,过滤数据质控然后进行质控,过滤低质量reads,去接头比对下载小鼠参考基因组的索引和注释文件比对sam文件转bam为bam文件建立索引载入IGV查看用MACS call peak安装MACS结果注释与可视化 CHIP-Seq数据分析流程 相关软件安装 所需要的软件有sratoolkit, fastqc,bowtie2,samtools,macs2,htseq-count,bedtools和前面RNA-seq数据分析

bio_meimei的博客 8789

【keil5和STC-ISP】保姆级下载安装教程

点击下载中的产品下载。然后就会看到如下界面:可以看到,提供了针对不同芯片架构的四套独立开发工具。:你使用的51单片机,其核心就是。C51套件里的编译器是专门为这个架构优化的。:如果安装了MDK-Arm,你在创建新项目时将像“AT89C51”这样的51系列芯片型号,无法进行开发。进入如下界面:双击下载 → 双击运行安装 → 同意协议并下一步 → 使用默认安装路径 → 完成安装。

深耕CV 1640

免注册无水印图片工具:技术原理与纯前端实现方案

图片处理是开发者和内容创作者日常工作中的常见需求,涉及压缩、裁剪、格式转换等基础操作。其技术原理主要分为前端处理与服务端处理两种模式,前者利用HTML5 Canvas API等浏览器原生能力在本地完成计算,保障数据隐私;后者依赖服务器资源,功能更强大但存在数据上传风险。从技术价值看,纯前端方案契合Unix哲学中的‘工具即管道’理念,实现了零摩擦访问与无缝集成,特别适合自动化脚本和工作流场景。本文聚焦免注册、无水印的图片处理工具,通过分析纯前端实现方案,为开发者提供兼顾效率与隐私的工程实践参考。

weixin_34284188的博客 431

CCF编程培训师资认证(PTA)标准(教学能力T)

随着计算机科学的不断发展,计算机相关技术应用到社会各个行业,越来越多的青少年参加到了计算机程序设计的学习中,这对编程培训教师提出了更高的专业要求和职业要求。CCF开展编程培训师资认证项目(Programming Trainer Accreditation,PTA),旨在建立一个规范的、科学的、权威且有公信力的三方认证。认证考试分编程专业能力(P)和教学能力(T)两部分。本标准根据《CCF编程培训师资认证条例》第十条制定,旨在明确教学能力(T)的测试标准。

lan_in的博客 1708

poj 1149题解

题目来源:http://poj.org/problem?id=1149 题目大意: Mirko在猪场工作,有N个猪圈,每个猪圈有pig[i]个猪,但是他不能打开任何猪圈的门,有M个人按顺序来买猪,每个人有K个猪圈的钥匙,有一个最大的可能要买的数量buy[i],但是Mirko 可以卖给他任意数量的猪(当然不能超过MAX),这个人走后Mikro可以重新分配这K个猪圈里的猪,然后猪圈又会把门锁起来,

Taylor Wu的专栏 766

IMSL CNL 7.0.0 (x86-64)Crack

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

poj-1149-PIGS --网络流

Poj 1149pigs —题目大意 —Mirko养着一些猪 猪关在一些猪圈里面 猪圈是锁着的 他自己没有钥匙(汗) —只有要来买猪的顾客才有钥匙 —顾客依次来 每个顾客会用他的钥匙打开一些猪圈 买走一些猪 然后锁上 —在锁上之前 Mirko有机会重新分配这几个已打开猪圈的猪 —现在给出一开始每个猪圈的猪数 每个顾客所有的钥匙和要买走的猪数 问Mirko最多能卖掉几头猪

xiaoyu1_1的专栏 925

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

POJ 1149 迈克卖猪问题(PIGS) 最大流

#include #include #include #include #include #define INF 0x3f3f3f3f using namespace std; int M,N; vector que[1010]; int pig[1010]; int cus[110]; const int maxe=1e4+1000; const int maxv=110; str

EnjoyingAC的博客 709

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 1149 (网络流,有趣的建图)

网络流(建图是重点)题意: 有一个卖猪的农夫,他有n个猪圈,但是猪圈的钥匙不在他的手上,有m个顾客,每一个顾客会带一些猪圈的钥匙,每一个顾客都有自己想买猪的数量,当然他所带的钥匙能开启相应的猪圈,从而能买到相应的猪,不过有时猪比他想买的数量多,也有可能少。而农夫有一个权力,就是如果某一个顾客没有买完他开的猪圈里的猪,农夫可以把剩下的猪随意的转移在被这个顾客的开启的猪圈里面。求出农夫最多能卖多少猪

Since_natural_ran 472

[网络流-最大流]POJ1149-PIGS (特殊建图)

题目链接 POJ1149PIGS 题意 有M个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了N个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。问总共最多能卖出多少头猪。(1 &lt;= N &lt;= 100, 1 &...

Uniontake 371

PIGS POJ - 1149 最大流(建图神题)

传送门:POJ1149 正确建模方法: 这题说多了都是泪啊,连暴力建模方法都和大牛想的不一样,还傻X的想为什么连样例都过不了。。 说这题是建图神题是因为他用到了许多建图时的优化方法,建图的基本优化准则: 直到今天才接触到这些方法,实在是太弱了。。都不敢往外说自己是搞图论的。。 代码: //ISAP int #include #include #include

WA是一笔财富 445

POJ1149最大网络流

 这道题目的大意是这样的:有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。    问总共最多能卖出多少头猪。    举个例子来说。有 3 个猪圈,初始时分别有 3、 1 和 10 头猪。依次来了 3 个顾客,第一个打开 1 号 和 2 号猪圈,

边城水手的专栏 1010

poj1149 - PIGS

想看更多的解题报告:http://blog.csdn.net/wangjian8006/article/details/7870410                                   转载请注明出处:http://blog.csdn.net/wangjian8006 题目大意:有N个顾客,有M个猪圈,每个猪圈有一定的猪,在开始的时候猪圈都是关闭的, 顾客来买书,顾客打

贰圣 4808

POJ 1149 解题报告

这道题是网络流问题,难点在于构图。 大神给了清晰易懂的构图解释:http://ycool.com/post/zhhrrm6 之后就转化为很普通的最大流问题,我用的是之前写的dinic代码。 构图的时候存在着这样的问题:如果两个节点之间有多条边,是否合并。两者都是正确的,但合并会直接减少边数,提高运行速率,应该是最好的方法。但是这种方法需要建立一个matrix,而不能再用adjlist。这里偷

thestoryofsnow的专栏 413

POJ 1149 PIGS(网络流经典建图题)

题意就是:给出m个猪圈,每个猪圈都有一定数量的猪,然后有n个顾客来买猪,他们每个都有一个最大的买猪数目。每次他们会按照顺序打开某些猪圈买猪,然后离开,此时卖家就在打开的猪圈里面重新分配猪,没有打开的猪圈不参与,然后全部猪圈都会关闭,一直循环。 经典的网络流题目。每个猪圈剩下多少猪是由第一个进入这个猪圈买猪的人决定的,所以每个猪圈和第一个进入这个猪圈的买家连一条流量为无穷的边。后进来的买家则只能从

llzhh的博客 456

poj1149--PIGS(最大流)

题意: 有m个猪圈 每个猪圈有不同数量的猪 [0, 1000]有n个顾客 每个顾客需要Bi头猪 有Ai个钥匙 能打开Ai个不同的猪圈顾客按顺序来买猪 只能买他有钥匙的猪 买完之后 这几个猪圈的猪可以相互转移 很神奇的题,建图简直太神奇~~ 建图: 每个顾客和源点的流量为与该顾客的相连的猪圈且该猪圈之前没有与其他顾客相连的猪圈的猪数量和 每个顾客到汇点的流量是该顾客需要猪的数量 ...

weixin_30252155的博客 113

POJ1149 PIGS

题目:http://poj.org/problem?id=1149 十分巧妙的构图!连接源点和每个猪圈第一个顾客。之后新来顾客若猪圈相同,就可连在上一个这个猪圈的顾客上! 1.所以用了并查集一样的东西记录谁是顾客链的末尾。并为了最终的末尾与汇点相连而在点上记录需求前缀。 #include<iostream> #include<cstdio> #includ...

weixin_34406061的博客 122

poj 1149(最大流,构图)

在网上看到一种很巧妙的构图方法,构图思路如下: 1.取超级源点和超级汇点; 2.当猪圈被第一次打开时,在源点与当前顾客之间连接一条边,容量为该猪圈的猪的头数; 3.当某个猪圈 不是被第一次打开时,在上一个打开该猪圈的顾客与当前打开该猪圈的顾客之间连接一条边,容量为无穷大; 4.在每个顾客与汇点之间连接一条边,容量为该顾客要买猪的头数。 EK: View Code 1 #inc...

weixin_30760895的博客 97
上一篇: No.15 - POJ1273 网络流Dinic
下一篇: No.17 POJ1300 判断欧拉回路
ShellDawn
博客等级 码龄10年 75粉丝 756原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值