poj 3189

poj 3189(最大流解决多重匹配) 题目链接:http://poj.org/problem?id=3189 题意描述:给你n头牛,m个牛棚,每个牛对每个牛都有一个喜爱程度,问怎样安排这些牛使得所有牛棚中的最大喜爱程度和最小喜爱程度最小(要求的所有的最小),输出最小的这个差值 思路:可以先枚举差值 阅读详情
开始的时候用二分匹配。。 才知道有多重匹配的东西 还不太会.. 回来用网络流做到 

#include <cstdio>
#include <cstring>
#include <stdio.h>
#include <iostream>
using namespace std;

#pragma comment(linker, "/STACK:1024000000,1024000000")
const int MAXN=10000;

const int inf = 0x7fffffff;

const int s = 0;

struct edge{
       int v,next,w;
}edge[1000000];

int head[2*MAXN],cnt;//for sap

void addedge(int u, int v, int w)
{
     edge[cnt].v = v;
     edge[cnt].w = w;
     edge[cnt].next = head[u];
     head[u] = cnt++;
     edge[cnt].v = u;
     edge[cnt].w = 0;
     edge[cnt].next = head[v];
     head[v] = cnt++;
}

int sap(int t)
{
    //cout << "here" << endl;
    int pre[2*MAXN],cur[2*MAXN],dis[2*MAXN],gap[2*MAXN]; //gap±ê¼Ç¶Ï²ã
    int flow = 0 , aug = inf ,u;
    bool flag;
    for (int i = 0 ; i <= t ; ++i)
    {
        cur[i] = head[i];
        gap[i] = dis[i] = 0;
    }
    gap[s] = t+1;
    u = pre[s] = s;
    while (dis[s] <= t)
    {
          flag = 0 ;
          for (int &j = cur[u] ; ~j ; j = edge[j].next)
          {
              int v = edge[j].v;
              if (edge[j].w > 0 && dis[u] == dis[v]+1)
              {
                   flag = 1;
                   if( edge[j].w < aug )aug = edge[j].w;
                   pre[v] = u;
                   u = v;
                   if (u == t)
                   {
                       flow += aug;
                       while (u != s)
                       {
                             u = pre[u];
                             edge[cur[u]].w -= aug;
                             edge[cur[u]^1].w += aug;
                       }
                       aug = inf;
                   }
                   break;
              }
          }
          if ( flag )continue ;
          int mindis = t+1;
          for (int j = head[u]; ~j ; j = edge[j].next)
          {
              int v = edge[j].v;
              if (edge[j].w > 0 && dis[v] < mindis)
              {
                 mindis = dis[v];
                 cur[u] = j;
              }
          }
          if(--gap[dis[u]] == 0)break;
          gap[ dis[u] = mindis+1 ]++;
          u = pre[u];
    }
    return flow;
}

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

int cow[1002][21];
int barn[21];

int main()
{
    int n , b;
    while (scanf("%d%d", &n , &b )!= EOF )
    {
        for ( int i = 0 ; i < n ;i ++ )
            for ( int j = 0 ; j < b ; j ++ )
                scanf("%d" , &cow[i][j] );
        for ( int i = 0 ; i < b ;i ++ )
            scanf("%d" , &barn[i] );
        int ans = 0;
        for ( int k = 1 ; k <= b ; k++ )
        {
            int flag = 0;
            for ( int i = 0 ; i + k <= b ; i ++ )
            {
                init ();
                for ( int j  = 0 ; j < n ; j ++ )
                {
                    addedge ( 0 , j+1 , 1 );
                    for ( int s = 0 ; s < k ; s ++ )
                    {
                        int temp = cow[j][i+s];
                        addedge ( j+1 , temp+n , 1 );
                        //cout << j+1 << " ***** " << temp +n << endl;
                    }
                }
                for ( int j = 0 ; j < b ; j ++ )
                    addedge ( j+1+n , n+1+b , barn[j] );
                //cout << "here" <<endl;
                if ( sap ( n+1+b ) == n )
                {
                    ans = k;
                    flag = 1;
                    break;
                }
            }
            //cout << "here" <<endl;
            if ( flag ) break;
        }
        printf("%d\n" ,ans);

    }
}

 

视觉语言模型在三维导航中的应用:JanusVLN项目解析与实战 视觉语言模型(VLM)作为多模态人工智能的核心技术,通过融合视觉感知与自然语言理解能力,实现了对开放世界场景的语义化解析。其原理在于利用预训练的视觉编码器和大型语言模型,将图像信息映射到与文本对齐的语义空间,从而完成跨模态的推理与生成。这一技术为机器人自主交互、智能家居控制等场景提供了基础能力支撑,尤其在需要理解复杂指令并执行序列决策的任务中展现出巨大价值。本文聚焦于视觉语言导航(VLN)这一具体应用,探讨如何通过架构创新与高效微调策略,将通用VLM适配到三维仿真环境中的导航任务,并以JanusVLN项目为 阅读详情

相关推荐

KEIL5编译报错L6200E:__stdout重定义问题分析与解决

本文深入分析KEIL5编译报错L6200E中__stdout重定义问题的根源,指出因未完整定义__stderr导致与标准库stdio_streams.o冲突。提供完整重定义标准流、启用MicroLIB库等解决方案,帮助开发者彻底解决Symbol multiply defined错误,提升嵌入式开发效率。

uran的专栏 954

POJ 3189 Steady Cow Assignment (二分+二分图多重匹配)

题意:有n头牛, 安排到m个棚里住。每头牛对每个棚都有一个好感度排名。主人为了使得这些牛尽可能满意,求获得最低好感度的牛和获得最高好感度的牛的最小好感度差值(即好感度跨度最小)。 题解:二分+二分图多重匹配 每头牛只能进一个棚,每个棚能容纳多头牛,二分图多重匹配问题。 接下来二分枚举好感度区间,根据区间确定牛和棚之间的连线,然后跑多重匹配即可。 还有就是算最大多重匹配的时候,由于要让所有牛都有棚,若当前区间无法满足这头牛,直接break,会省好多时间。 #define _CRT_SECURE_NO_WARN

gongyuandaye的博客 292

IVP 2021 UNETR: Transformers for 3D Medical Image Segmentation

动机 具有跟踪和扩展路径的全卷积神经网络(FCNNs)(如编码器和解码器),近年来在各种医学图像分割应用中显示出了突出的地位。在这些体系结构中,编码器通过学习全局上下文表示来扮演一个不可或缺的角色,该全局上下文表示将进一步用于解码器的语义输出预测。 卷积层作为FCNN的主要构造块,其局部性限制了此类网络学习长时空间依赖的能力。 在NLP领域,基于transformer的模型已经在各种任务中实现了最先进的基准。transformer中的自我注意机制使他们能够动态地突出词序列的重要特征并学习其长时依赖关系。这

smile909的博客 1979

[kuangbin带你飞]专题10 ---POJ-3189(二分+多重匹配)

Steady Cow Assignment POJ - 3189 题意: 有b个牛舍,n头牛。 每头牛对牛舍的喜爱程度不同。 问: 怎样分配可以使得牛的喜爱程度之差最小。 思路: 二分差值,之后枚举下界(牛舍只有20) 之后建图,跑最大匹配。 AC #include <iostream> #include <map> #include <string> #include <cstring> #include <cstdio> #define m

qq_45377553的博客 264

知识图谱实战:从零搭建一个企业级金融风控图谱(附完整代码)

本文提供了一份从零构建企业级金融风控知识图谱的实战指南。通过使用Neo4j图数据库和Python,手把手教你整合多源数据、设计数据模型,并利用Cypher查询与图算法挖掘隐藏的关联风险与欺诈网络,附有完整代码,助力金融科技从业者实现从数据孤岛到全局风险洞察的升级。

weixin_29095587的博客 357

【机械臂算法】机械臂动力学参数辨识仿真

本文以puma560m机械臂为例子进行动力学参数辨识的讲解,puma560m可以在robotic toolbox中找到,这里以它真实机械臂对他的动力学参数进行辨识。此外这里还有要说的是,机械臂参数辨识其实是一个系统工程,其中和系统的机械、电子、嵌入式都有着很深的联系,并不是仿真这么简单的。

vrijheid的博客 7831

POJ - 3189(二分多重匹配)

题意:有n头牛,B个谷场,牛对每个谷场的喜爱都有不同的排名,每个谷场承受牛的上限,然后求这些放置后这些牛对这些谷场的排名范围大小最小。 题解:二分范围大小mid,然后求每个范围牛是否能否多重匹配成功即可。 #include #include #include #include using namespace std; const int mx = 1e3+5; int g[mx][mx]; i

Soul 754

ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C 解决方案

本文主要介绍了ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject解决方案,希望能对使用Numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

poj 3189(枚举+最大流)

Steady Cow Assignment Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3533   Accepted: 1214 Descri

志当存高远 1126

基于STM32设计的遥控灭火消防小车_296

随着城市化进程的加速和火灾发生频率的增加,传统的消防方式在应对初期火灾时存在反应慢、效率低等问题。为了提高火灾响应速度和灭火效率,本设计开发了一款基于STM32单片机的遥控灭火消防小车。该小车配备了烟雾检测、温湿度监测、火源定位、灭火操作等功能,能够通过蓝牙和WIFI实现远程控制与实时视频传输。设计采用了MQ2烟雾传感器、SHT30温湿度传感器、火光传感器和ESP32摄像头模块等硬件设备。系统不仅能够自动检测和定位火源,还可以手动调整灭火器对准位置,进行干粉灭火。此外,蜂鸣器用于火源报警,确保操作人员及时得

722

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

POJ 3189 Steady Cow Assignment

POJ 3189 Steady Cow Assignment 题目链接 Description Farmer John’s N (1 <= N <= 1000) cows each reside in one of B (1 <= B <= 20) barns which, of course, have limited capacity. Some cows really...

旺崽的博客 2553

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

解题报告 之 POJ3189 Steady Cow Assignment

解题报告 之 POJ3189 Steady Cow Assignment Description Farmer John's N (1 FJ would like to rearrange the cows such that the cows are as equally happy as possible, even if that means all

JUST CODE 586

假人有限元模型

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

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

POJ 3189 二分 + Dinic

题意 传送门 POJ 3189 Steady Cow Assignment 题解 最小化各仓库中 rankrankrank 的最大差值,二分答案。问题转化为当各仓库 rankrankrank 差值不大于 xxx 时,是否能将所有牛指派至仓库。 枚举所有长度为 xxx 的区间,当牛 iii 选择的仓库 jjj 的 rankrankrank 位于区间中,则从 iii 向 jjj 连一条容量为 111 的边;设源点、汇点为 S,TS,TS,T,从 SSS 向每头牛连一条容量为 111 的边;从每个仓库向 TTT

neweryyy的博客 118

POJ 3189 Steady Cow Assignment(最大流)

POJ 3189 Steady Cow Assignment 题目链接 题意:一些牛,每个牛心目中都有一个牛棚排名,然后给定每个牛棚容量,要求分配这些牛给牛棚,使得所有牛对牛棚的排名差距尽量小 思路:这种题的标准解法都是二分一个差值,枚举下界确定上界,然后建图判断,这题就利用最大流进行判断,值得一提的是dinic的效率加了减枝还是是卡着时间过的,这题理论上用sap或者二分图多重匹

Remilia's 915

poj 3189(枚举+多重匹配)

题目链接:http://poj.org/problem?id=3189 思路:由于题目要求最小的差值,而Range最多也才20,因此我们可以枚举上下限,多重匹配验证即可。 http://paste.ubuntu.com/5943733/  ...

weixin_34256074的博客 195

POJ 3189 Steady Cow Assignment(网络流之最大流+二分构图)

题目地址:POJ 3189 我晕啊。。。飞快的把白天的任务完成又有什么用。。。节省下来的时间活生生的被我的手残给全浪费掉了。。。又调了一整天,问题居然是一个地方的n和m写反了!!!反思。。反思。。。面壁去。。。 这题就是二分区间,然后枚举区间位置。然后建图就行了。不多说。。 代码如下: #include #include #include #include #include #i

scf0920 985

poj3189--Steady Cow Assignment (二分多重匹配)

题目来源:http://poj.org/problem?id=3189题意题意杀。。。 额,给出了n头牛,还有b个牛圈,然后每头牛对b个牛圈内心深处有自己的评价,也就是相对来说更喜欢去哪个牛圈,有自己的排名。。。然后嘞,牛圈在牛心中的排名差计算方法为:所有牛中最大排名和最小排名之差。问最小的排名差。。。思路简单的一个多重匹配问题,就是题意不好理解,,多重匹配里有两种解法,一种使用二分范围,一种是类

Crazy 381

【POJ】3189 Steady Cow Assignment 二分最大流

传送门:【POJ】Steady Cow Assignment

poursoul 796

POJ - 3189 Steady Cow Assignment 二分 + 枚举 + (最大流||二分图多重匹配)

传送门:POJ3189 题意:有n头猪,m个猪圈,每个猪圈都有一定的容量,每只猪对每个猪圈的喜好度不同(所有猪圈在每个猪心中都有一个排名),要求所有的猪都进猪圈,但是要求所有猪的喜好度排名最低的和最高的差值的绝对值最小。 思路:这题网上很多做法,但综合来说无非  二分、枚举、最大流、二分图多重匹配,二分就是二分题目中问的差值的绝对值,枚举就是枚举上界或者下届,最大流或者二分图多重匹配就是用来检

WA是一笔财富 421

Poj 3189 Steady Cow Assignment (多重匹配)

题目链接:   Poj 3189 Steady Cow Assignment 题目描述:   有n头奶牛,m个棚,每个奶牛对每个棚都有一个喜爱程度。当然啦,棚子也是有脾气的,并不是奶牛想住进来就住进来,超出棚子的最大容量了,棚子是拒绝的。现在要给每个奶牛安家,本宝宝是一个公正无私的人类,所以要找一个奶牛喜爱程度差值最小的方案(虽然这样大家的喜爱程度可能普遍偏低,因为绝对公平并不代表合理啊),...

weixin_30858241的博客 98

O - Steady Cow Assignment POJ - 3189 (二分枚举最大匹配)

O - Steady Cow Assignment POJ - 3189 题意:n个牛分配牛舍,然后每个牛舍有最大的空间限制,每个牛有喜欢的牛舍,然后让你编程解决最大满意度和最小满意度差值最小。 分析:因为牛舍人数固定我们可以二分满意度差值然后枚举区间,然后看能否达到这个差值即可。 #include <iostream> #include <cstdio> #in...

fighting_yifeng的博客 210

POJ - 3189 Steady Cow Assignment二分图多重匹配+二分

POJ - 3189 Steady Cow Assignment二分图多重匹配+二分 题意: 一共有n头牛,并给出了对m个大棚的喜爱程度,问在满足容量的情况下,对大棚的喜爱程度之差最小为多少 做法: 一开始我读错题,后来发现可以二分区间长度,当所有牛对大棚的喜爱程度都在[i,i+mid−1][i,i+mid-1][i,i+mid−1]这个区间内,最大匹配数可以达到n,就符合条件 代码: #incl...

想要一只银渐层 230

POJ 3189

题意: 给你B个谷仓和n头牛,每个谷仓最多容纳m头牛。此时每头牛对每一个谷仓都有一个喜悦值,你需要把每一头牛都安排某个谷仓内,并且找出来那个每一头牛对它所住的谷仓打的分值,我们对这所有的分值取一个区间,使这个区间包含这每一个值。并且尽量使这个区间小一点。 题解: 对着区间的两个端点[l,r],先让l==r==1,之后如果在区间[l,r]中分配不成(就使用二分图多重匹配算法来判...

weixin_30487201的博客 149
上一篇: poj 2112
下一篇: 混合图欧拉路
Sov_Matrix
博客等级 码龄17年 0粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值