POJ 2112 Optimal Milking (二分 + floyd + 网络流)

FMEA-MSR步骤三:功能分析 目的 FMEA-MSR功能分析的主要目标: ● 功能及各功能之间的关系的可视化 ● 功能树/网络或等效功能矩阵参数图(P图) ● 顾客(外部和内部)功能与相关要求的关联 ● 要求或特性与功能的关联 ● 工程团队(系统、安全和组件)之间的协作 ● 失效分析步骤的基础 (点击链接进入官网领取软件试用) 在监视及系统响应的补充FMEA中,对失效探测和失效响应的监视视为其具有的功能。硬件和软件功能可能包括监视控制状态的功能。 故障/失效的监视和探测功能可能包括超出范围的探测、循环冗余校验、真实性检查和序列计数器检查 阅读详情

POJ 2112 Optimal Milking 


题意:农场主John 将他的K(1≤K≤30)个挤奶器运到牧场,在那里有C(1≤C≤200)头奶牛,在奶牛和挤奶器之间有一组不同长度的路。K个挤奶器的位置用1~K的编号标明,奶牛的位置用K+1~K+C 的编号标明。每台挤奶器每天最多能为M(1≤M≤15)头奶牛挤奶。寻找一个方案,安排每头奶牛到某个挤奶器挤奶,并使得C 头奶牛需要走的所有路程中的最大路程最小。每个测试数据中至少有一个安排方案。每条奶牛到挤奶器有多条路。

思路:先用Floyd 算法求出能达到的任意两点之间的最短路径,然后二分最大距离的最小值,每次用二分的值求最大流。
在求最大流时构图:建立一个源点,每个点到挤奶器连一条流量为m的边。建立一个汇点,每头奶牛到汇点连一条流量为1的边。挤奶器与奶牛之间的距离小于等于mid则连边,流量为1。最后求最大流是否为c即可。

代码:
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
*/
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<fstream>
#include<cstring>
#include<ctype.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF (1<<30)
#define PI acos(-1.0)
#define mem(a, b) memset(a, b, sizeof(a))
#define rep(i, a, n) for (int i = a; i < n; i++)
#define per(i, a, n) for (int i = n - 1; i >= a; i--)
#define eps 1e-6
#define debug puts("===============")
#define pb push_back
//#define mp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define POSIN(x,y) (0 <= (x) && (x) < n && 0 <= (y) && (y) < m)
typedef long long ll;
typedef unsigned long long ULL;
const int maxn = 250;
const int maxm = 100000;
int k, c, m;
int mp[maxn][maxn];
struct node {
    int v;    // vertex
    int cap;    // capacity
    int flow;   // current flow in this arc
    int nxt;
} e[maxm * 2];
int g[maxn], cnt;
int st, ed, n;
void add(int u, int v, int c) {
    e[++cnt].v = v;
    e[cnt].cap = c;
    e[cnt].flow = 0;
    e[cnt].nxt = g[u];
    g[u] = cnt;

    e[++cnt].v = u;
    e[cnt].cap = 0;
    e[cnt].flow = 0;
    e[cnt].nxt = g[v];
    g[v] = cnt;
}

void init(int mid) {
    mem(g, 0);
    cnt = 1;
    st = 0, ed = k + c + 1;
    n = k + c;
    for (int i = 1; i <= k; i++) add(st, i, m);
    for (int i = k + 1; i <= n; i++) {
        for (int j = 1; j <= k; j++) if (mp[i][j] <= mid) add(j, i, 1);
        add(i, ed, 1);
    }
    n += 3;
}

int dist[maxn], numbs[maxn], q[maxn];
void rev_bfs() {
    int font = 0, rear = 1;
    for (int i = 0; i <= n; i++) { //n为总点数
        dist[i] = maxn;
        numbs[i] = 0;
    }
    q[font] = ed;
    dist[ed] = 0;
    numbs[0] = 1;
    while(font != rear) {
        int u = q[font++];
        for (int i = g[u]; i; i = e[i].nxt) {
            if (e[i ^ 1].cap == 0 || dist[e[i].v] < maxn) continue;
            dist[e[i].v] = dist[u] + 1;
            ++numbs[dist[e[i].v]];
            q[rear++] = e[i].v;
        }
    }
}
int maxflow() {
    rev_bfs();
    int u, totalflow = 0;
    int curg[maxn], revpath[maxn];
    for(int i = 0; i <= n; ++i) curg[i] = g[i];
    u = st;
    while(dist[st] < n) {
        if(u == ed) {   // find an augmenting path
            int augflow = INF;
            for(int i = st; i != ed; i = e[curg[i]].v)
                augflow = min(augflow, e[curg[i]].cap);
            for(int i = st; i != ed; i = e[curg[i]].v) {
                e[curg[i]].cap -= augflow;
                e[curg[i] ^ 1].cap += augflow;
                e[curg[i]].flow += augflow;
                e[curg[i] ^ 1].flow -= augflow;
            }
            totalflow += augflow;
            u = st;
        }
        int i;
        for(i = curg[u]; i; i = e[i].nxt)
            if(e[i].cap > 0 && dist[u] == dist[e[i].v] + 1) break;
        if(i) {   // find an admissible arc, then Advance
            curg[u] = i;
            revpath[e[i].v] = i ^ 1;
            u = e[i].v;
        } else {    // no admissible arc, then relabel this vertex
            if(0 == (--numbs[dist[u]])) break;    // GAP cut, Important!
            curg[u] = g[u];
            int mindist = n;
            for(int j = g[u]; j; j = e[j].nxt)
                if(e[j].cap > 0) mindist = min(mindist, dist[e[j].v]);
            dist[u] = mindist + 1;
            ++numbs[dist[u]];
            if(u != st)
                u = e[revpath[u]].v;    // Backtrack
        }
    }
    return totalflow;
}
void get() {
    n = k + c;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            scanf("%d", mp[i] + j);
            if (mp[i][j] == 0 && i != j) mp[i][j] = INF;
        }
    }
}
void floyd(int n, int mp[][maxn]) {
    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= n; i++) if (mp[i][k] != INF) {
            for (int j = 1; j <= n; j++) mp[i][j] = min(mp[i][j], mp[i][k] + mp[k][j]);
        }
    }
}
int main () {

    while(scanf("%d%d%d", &k, &c, &m) != EOF) {
        get();
        floyd(n, mp);
        int l = 0, r = 10000, mid;
        while(l < r) {
            mid = (l + r) >> 1;
            init(mid);
            //debug;
            if (maxflow() >= c) r = mid;
            else l = mid + 1;
        }
        printf("%d\n", r);
    }
    return 0;
}


绕过卡巴斯基通过RPC控制lsass注入DLL 参考国外的XPN以及3gstudent大佬的文章: https://blog.youkuaiyun.com/xiangshen1990/article/details/104872566 https://gist.github.com/xpn/93f2b75bf086baf2c388b2ddd50fb5d0 原理:正常的ssp扩展(dll)可以加载到lsass进程中去,比如kerberos验证都是通... 阅读详情

相关推荐

YOLOv8+ByteTrack实战:5分钟搞定多目标跟踪(附鱼群检测调参秘籍)

本文详细介绍了如何利用YOLOv8和ByteTrack快速实现多目标跟踪,特别针对鱼群检测等复杂场景提供参数调优秘籍。通过环境配置、核心机制解析和专项调优技巧,开发者可在5分钟内搭建高效跟踪系统,适用于水产养殖、交通监控等实际应用。文章还包含工程落地方案和性能优化建议,帮助实现精准的鱼群计数与行为分析。

e1f2g的博客 1019

POJ 2112 Optimal Milking (二分+最短路径+网络流)

POJ 2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit:2000MS Memory Limit:30000K Total Submissions:10176 Accepted:3698 Case Time Limit:1000M...

weixin_30734435的博客 176

Vivado固化程序与Flash型号添加实战指南

本文详细介绍了Vivado程序固化到Flash芯片的完整流程,包括基础操作、Flash型号添加方法及疑难问题排查。针对Vivado官方支持列表缺失的Flash型号,提供了手动添加配置的详细步骤和参数说明,并分享了高级技巧与安全操作建议,帮助开发者高效完成FPGA程序固化。

weixin_29291573的博客 566

poj2112

Optimal Milking Time Limit:2000MS Memory Limit:30000K Total Submiss...

Phoebe_Wu2016的博客 189

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 432

Code Composer Studio 12.0.0版本 官方例程导入实战指南

本文详细介绍了在Code Composer Studio 12.0.0版本中,如何利用内置的Resource Explorer工具高效导入官方例程的完整实战指南。通过分步讲解定位开发板、导入工程、配置编译器及调试验证等关键操作,帮助开发者快速上手TI微控制器开发,避免常见错误,有效提升学习与开发效率。

weixin_29169899的博客 122

poj 2112 Optimal Milking(最大费用流+dinic算法+二分搜索)

Optimal Milking Time Limit:2000MS Memory Limit:30000K Total Submissions:9253 Accepted:3341 Case Time Limit:1000MS Description FJ has moved his K ...

weixin_30875157的博客 210

在ArcGIS Pro软件中进行滑坡的敏感性和易发性分析

滑坡的敏感性和易发性分析需要综合地形、水文、地质及环境等多维数据,本文罗列了基于ArcGIS Pro软件进行的一系列可执行分析。

weixin_49609713的博客 1734

poj 2112 Optimal Milking(二分+floyd+最大流)

  题目大意就是k个机器和c头牛组成K+C个点,还有个m表示一个机器最多给m头牛服务,然后给你一个(K+C)*(K+C)的矩阵描述了任意2个物体之间的边关系,边权为0表示无边。然后要你在c头牛都能找到机器配对的前提下求c头牛到机器的最远距离的最小值,先把k个机器和c头牛看成是K+C个点,方法就是跑个floyd先求出任意2个点之间的最短距离,然后在二分最远距离的最小值,设low为0,up为10000...

SEIZE THE DAY 252

程序自动化填写网页表单数据

如何让程序自动化填写网页表单数据,特别是涉及到批量数据情况时,可以减少人力。下面是涉及到的一些场景,都可以通过相关自动化程序实现。

Y 2427

永磁同步电机矢量控制——从三相静止坐标系到d-q坐标系的数学转换

本文深入解析了永磁同步电机矢量控制的核心——从三相静止坐标系到d-q旋转坐标系的数学转换。通过Clark变换和Park变换,将复杂的三相交流系统解耦为易于控制的直流量,从而实现对电机转矩和磁场的独立、精准控制。文章结合物理图像与工程实践,详细阐述了坐标变换的原理、公式推导及其在磁场定向控制(FOC)中的关键作用。

weixin_29294395的博客 119

POJ 2112 Optimal Milking(二分+最大流)

POJ 2112 Optimal Milking 题目链接 题意:给定一些机器和奶牛,在给定距离矩阵,(不在对角线上为0的值代表不可达),每个机器能容纳m个奶牛,问所有奶牛都能挤上奶,那么走的距离最大的奶牛的最小值是多少 思路:明显的二分+最大流,注意floyd求出的距离矩阵最大值可能不止200,所以二分的上限要注意 代码: #include #include #

Remilia's 995

Thor芯片部署

英伟达Jetson Thor芯片性能分析与应用现状 摘要:英伟达最新发布的Jetson Thor芯片基于Blackwell架构,官方宣称AI算力达2070TFLOPS(FP4),较前代Orin提升7.5倍,配备14核Arm CPU和128GB内存。然而实际量产版算力缩水至700TOPS,且因4nm制程良率问题多次延期至2025-2026年交付。该芯片支持FP4/FP8量化、Transformer引擎等先进特性,适用于自动驾驶、机器人等边缘AI场景,但受供应链限制,国内厂商倾向自研方案。开发者可通过JetPa

xiaomu_347的博客 431

【POJ 2112 Optimal Milking】网络流 & 二分 & floyd

Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 18478 Accepted: 6594 Case Time Limit: 1000MS DescriptionFJ has moved his K (1 <= K <= 30) milking machines out

楚江枫 525

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ 2112 Optimal Milking (floyd + 二分 + 网络流)

FLOYD预处理出每两点之间的最短距离,二分查找判断

蘑菇--走在通往梦想的道路上。 798

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

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

POJ 2112 — Optimal Milking 网络流+floyd+二分

原题:http://poj.org/problem?id=2112 题意: 有k个挤奶器,c头牛,每个挤奶器可以服务m头牛; 给出[k+c, k+c]的矩阵,表示任意两点间的距离(0表示无法到达) 问使得所有牛都能被服务的最短距离; 思路: 先用floyd求出最短距离; 再二分这些距离,只要距离小于等于该值就可建边,然后判断最大流是否等于c; 最后输出最小值; #

吧唧吧唧 464

蓝牙模块HM-10手册

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

POJ 2112 Optimal Milking 二分图多重匹配 网络流+Floyd+二分

超级经典的一道题目。。竟然1A 了,

ChasingWaves 589

Optimal Milking (poj 2112 网络流+二分+floyd)

题意:农场有K个挤奶器和C头奶牛,每个挤奶器和奶牛都在不同的位置,挤奶器编号1~K,奶牛编号K+1~K+C,邻接矩阵给出它们之间的距离,每台挤奶器每天最多能为M头牛挤奶。寻找一个方案,安排每头奶牛到某个挤奶器挤奶,并使得C头奶牛需要走的路程中的最大路程最小。 思路:先用floyd算法求出能到达的任意两点之间的最短距离,然后dinic算法求最大流,搜索最大距离的最小值采用二分法。

@you! 732

POJ2112Optimal Milking(二分+floyd最短路+网络流)

题目地址:http://poj.org/problem?id=2112 最近忙着预习课本备考,没怎么刷题,(我是真的有在好好看书。。)不敲题还是手痒痒,马上就邀请赛了,还是每晚睡觉前都拿来刷题吧。白天的时间足够了。 话说这题调了一晚上。。。一直以为是几天没敲状态下滑。。(虽然也没几天。。)当发现错误的时候才发现原来是少敲了个字母。。。而且我一般很少在bfs的那个地方出错,错误地方也很隐蔽。。所

scf0920 1325

POJ 2112-Optimal Milking(网络流_最大流+floyd+二分查找)

Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 12810   Accepted: 4632 Case Time Limit: 1000MS Description FJ has moved his K (1 <= K

Rocky0429 1423

POJ2112 Optimal Milking---二分+Floyd+网络流

题目链接: https://vjudge.net/problem/POJ-2112 题目大意: k个机器,每个机器最多服务m头牛。 c头牛,每个牛需要1台机器来服务。 告诉你牛与机器每个之间的直接距离。 问:让所有的牛都被服务的情况下,使走的最远的牛的距离最短,求这个距离。 解题思路: 二分枚举距离,实际距离满足当前枚举距离限制的可以加入这条边。枚举的距离中符合条件的最小值就是答案...

weixin_33958366的博客 137

POJ2112Optimal Milking(二分法+floyd最短+网络流量)

职务地址:http://poj.org/problem?id=2112 近期忙着预习课本备考,没怎么刷题。(我是真的有在好好看书。。)不敲题还是手痒痒。立即就邀请赛了,还是每晚睡觉前都拿来刷题吧。白天的时间足够了。 话说这题调了一晚上。。。一直以为是几天没敲状态下滑。。(尽管也没几天。。)当发现错误的时候才发现原来是少敲了个字母。。。并且我一般非常少在bfs的那个地方出错,错...

weixin_30315905的博客 104

POJ 2112 Optimal Milking (二分+最短路径+网络流)

POJ 2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit:2000MS Memory Limit:30000K Total Submissions:10176 Accepted:3698 Case Ti...

weixin_30325793的博客 81

POJ 2112 Optimal Milking(二分+floyd+最大流)

POJ 2112 Optimal Milking(二分+floyd+最大流) http://poj.org/problem?id=2112 题意: k个机器,每个机器最多服务m头牛。 c头牛,每个牛需要1台机器来服务。 告诉你牛与机器(牛与牛,机器与机器)每个之间的直接距离。 问:让所有的牛都被服务的情况下,使走的最远的牛的距离最短,求这个距离。 分析:        首先用flo

code 1117

poj2112 Optimal Milking (Dinic+Floyd+二分)

Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 9624   Accepted: 3474 Case Time Limit: 1000MS Description FJ has moved his K (1 <= K <= 30

程序猿之路 2235
上一篇: 背包问题总结
下一篇: POJ 1087 A Plug for UNIX (网络最大流)
SIO__Five
博客等级 码龄14年 29粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值