ACM/ICPC 之 ACM计算机工厂-EK算法(POJ3436)

  题意有点难读懂

 

//网络流-EK算法-ACM计算机工厂-构图重点
//Time:0Ms  Memory:208K
#include <iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;

#define MAXN 55
#define INF 0x3f3f3f3f

int p,n;
int s,t;
int comp[MAXN][22];
int bd[MAXN][MAXN];
int res[MAXN][MAXN];
int pre[MAXN];

bool bfs()
{
    memset(pre,-1,sizeof(pre));
    queue<int> q;
    q.push(s); pre[s] = 0;
    while(!q.empty()){
        int cur = q.front();
        q.pop();
        for(int i = 1; i <= t; i++)
        {
            if(pre[i] == -1 && res[cur][i])
            {
                pre[i] = cur;
                if(i == t) return true;
                q.push(i);
            }
        }
    }
    return false;
}

int EK(int &total)
{
    int maxFlow = 0;
    while(bfs()){
        int mind = INF;
        for(int i = t; i != s; i = pre[i])
            mind = min(mind, res[pre[i]][i]);
        for(int i = t; i != s; i = pre[i])
        {
            if(i != t && pre[i] != s && res[pre[i]][i] == bd[pre[i]][i]) total++;
            res[pre[i]][i] -= mind;
            res[i][pre[i]] += mind;
            if(i != t && pre[i] != s && res[i][pre[i]] == bd[i][pre[i]]) total--;
        }
        maxFlow += mind;
    }
    return maxFlow;
}

int main()
{
    //freopen("in.txt", "r", stdin);
    scanf("%d%d",&p,&n);
    s = 0; t = n + 1;
    //输入+构图
    for(int i = 1; i <= n; i++)
    {
        bool in = true, out = true;
        for(int j = 0; j <= p*2; j++)
        {
            scanf("%d", &comp[i][j]);
            if(j >= 1 && j <= p && comp[i][j] == 1) in = false;
            if(j > p && !comp[i][j]) out = false;   //未生产完
        }
        if(in) bd[s][i] = comp[i][0];
        if(out) bd[i][t] = comp[i][0];
    }
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
        {
            bool con = true;
            if(i == j) continue;
            for(int k = 1; k <= p; k++)
            {
                if(comp[j][k] != 2 && comp[i][k + p] != comp[j][k])    //判断是否可传输此线
                {
                    con = false;
                    break;
                }
            }
            if(con) bd[i][j] = comp[i][0];  //connection
        }

    memcpy(res, bd, sizeof(bd));
    int total = 0;
    int maxFlow = EK(total);
    printf("%d %d\n", maxFlow, total);
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n; j++)
        {
            if(bd[i][j] && bd[i][j] > res[i][j])
                printf("%d %d %d\n", i, j, bd[i][j] - res[i][j]);
        }
    return 0;
}

 

转载于:https://www.cnblogs.com/Inkblots/p/5714735.html

动物目标检测数据集 一、基础信息 数据集名称:动物目标检测数据集 图片数量: - 训练集:9,134张图片 - 验证集:1,529张图片 - 测试集:1,519张图片 总计:12,182张图片 分类类别: Bear(熊)、Cat(猫)、Cattle(牛)、Chicken(鸡)、Deer(鹿)、Dog(狗)、Elephant(大象)、Horse(马)、Monkey(猴子)、Sheep(绵羊) 标注格式: YOLO格式,包含归一化坐标的边界框和数字编码类别标签,支持目标检测模型开发。 数据特性: 涵盖俯拍视角、地面视角等多角度动物影像,适用于复杂环境下的动物识别需求。 二、适用场景 农业智能监测: 支持畜牧管理系统开发,自动识别牲畜种类并统计数量,提升养殖场管理效率。 野生动物保护: 应用于自然保护区监控系统,实时检测特定动物物种,辅助生态研究和盗猎预警。 智能养殖设备: 为自动饲喂系统、健康监测设备等提供视觉识别能力,实现精准个体识别。 教育研究工具: 适用于动物行为学研究和计算机视觉教学,提供标准化的多物种检测数据集。 遥感图像分析: 支持航拍图像中的动物种群分布分析,适用于生态调查和栖息地研究。 三、数据集优势 多物种覆盖: 包含10类常见经济动物和野生动物,覆盖陆生哺乳动物与家禽类别,满足跨场景需求。 高密度标注: 支持单图多目标检测,部分样本包含重叠目标标注,模拟真实场景下的复杂检测需求。 数据平衡性: 经分层抽样保证各类别均衡分布,避免模型训练时的类别偏差问题。 工业级适用性: 标注数据兼容YOLO系列模型框架,支持快速迁移学习和生产环境部署。 场景多样性: 包含白天/夜间、近距离/远距离、单体/群体等多种拍摄条件,增强模型鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值