UVa1376/LA3661 Animal Run

UVa1376/LA3661 Animal Run

  • 题目链接
  • 题意
    • 输入格式
    • 输出格式
  • 分析
  • AC 代码

题目链接

   UVA - 1376 Animal Run

题意

   由于控制程序出了 bug,动物园的笼子无缘无故被打开,所有动物展开了一次大逃亡。整个城市是一个网格,另外每个单位方格都有一条从左上到右下的对角线,其中动物园在左上角,动物们的目的地是右下角。所有道路(即网格的边和对角线)都是双向的。
   每条道路上都有一个正整数权值,代表拦截这条边所需要的工作人员数,如下图所示。你的任务是派尽量少的工作人员,使动物无法从动物园走到目的地(动物只能经过没有被拦截的边)。Animal Run

输入格式

   输入包含多组数据。每组数据第一行为两个整数n 和m(3≤n,m≤1 000),即网格的行数和列数。以下n 行每行m-1个整数,即拦截每条横边所需的人数。以下n-1行每行有m个整数,即拦截每条竖边所需的人数。以下n-1行每行m-1个整数,表示拦截每条对角线边所需的人数。上述边的排列顺序为从上到下从左到右。所有权值均为不超过 1 0 6 10^6 106的正整数。输入结束标志为n=m=0。输入文件大小约为16MB。

输出格式

   对于每组数据,输出需要派遣的工作人员总数。

分析

   求平面图的最小割,但本题数据大,如果直接跑最大流估计会tle/mle。
   利用对偶图,求平面图最小割可转化成求对偶图最短路。
   转化成对偶图的办法参见:最小割之平面图转最短路、对偶图对于平面图最小割的求解
   先将原s和t连一条边,这样会多出来一个面,叫做附加面,将这个附加面作为对偶图的 s ∗ s* s,将无限面作为对偶图的 t ∗ t* t s ∗ s* s t ∗ t* t以及原图的每个面构成对偶图的顶点,某两个面如果共边,则他们之间连一条边。注意 s ∗ s* s t ∗ t* t的边要删除,这样就构建好了对偶图。求原图的最小割就转化成了求 s ∗ s* s t ∗ t* t的最短路。
对偶图

AC 代码

#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;

#define N 1002
int d[2*N*N], f[2*N*N], m, n, kase = 0; struct edge {int v, w;}; vector<edge> g[2*N*N];
struct node {
    int d, u;
    bool operator< (const node& rhs) const {
        return d>rhs.d;
    }
};

void solve() {
    int t = 2*(m-1)*(n-1)+1;
    for (int i=0; i<=t; ++i) g[i].clear();
    for (int i=0; i<n; ++i) for (int j=1; j<m; ++j) {
        int u = i<n-1 ? 2*(i*(m-1)+j) : t, v = i ? 2*((i-1)*(m-1)+j)-1 : 0, w; cin >> w;
        g[u].push_back({v, w}); g[v].push_back({u, w});
    }
    for (int i=1; i<n; ++i) for (int j=0; j<m; ++j) {
        int u = j ? 2*((i-1)*(m-1)+j) : t, v = j<m-1 ? 2*((i-1)*(m-1)+j)+1 : 0, w; cin >> w;
        g[u].push_back({v, w}); g[v].push_back({u, w});
    }
    for (int i=1; i<n; ++i) for (int j=1; j<m; ++j) {
        int u = 2*((i-1)*(m-1)+j), v = u-1, w; cin >> w;
        g[u].push_back({v, w}); g[v].push_back({u, w});
    }
    memset(d, 0x7f, sizeof(d)); memset(f, 0, sizeof(f));
    d[0] = 0; priority_queue<node> q; q.push({0, 0});
    while (!q.empty()) {
        int u = q.top().u; q.pop();
        if (u == t) break;
        if (f[u]) continue;
        f[u] = 1;
        for (int i=g[u].size()-1; i>=0; --i) {
            int v = g[u][i].v, d1 = d[u] + g[u][i].w;
            if (d[v] > d1) d[v] = d1, q.push({d[v], v});
        }
    }
    cout << "Case " << ++kase << ": Minimum = " << d[t] << endl;
}

int main() {
    ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
    while (cin >> n >> m && (n || m)) solve();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/602360.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

win平台c语言引入开源库的问题与解决,以引入cJSON库为例

目录 遇到的问题 开源依赖库引入的问题 问题的解决 生成dll文件 方式一 方式二 在VsCode中如何使用开源库 文件放置位置 配置文件进行配置 引入头文件 结束 许久不写博客&#xff0c;五一还在加班&#xff0c;就浅浅写一篇吧。 最近除了做物联网平台,还对网关二次开…

如何恢复手机视频?手机视频恢复软件有哪些?

随着手机使用的普及&#xff0c;我们的日常生活、工作甚至娱乐都与它息息相关。而在其中&#xff0c;我们宝贵的视频文件则是记录下我们生活、工作和重要时刻的重要载体。然而&#xff0c;当这些视频文件不幸丢失或被误删&#xff0c;我们的内心往往会感到一阵恐慌。这时候&…

团队执行力差,多半都是管理的问题

在日常管理中&#xff0c;我们习惯用“执行力好不好”来评价一个团队的表现&#xff0c;但实际上&#xff0c;执行力更应该是一个管理者需要思考和解决的问题&#xff0c;而非单纯归咎于团队。 我们需要明确一点&#xff1a;执行力不是团队的问题&#xff0c;而是管理者的问题…

nestjs版若依全栈管理后台完全开源!

hello&#xff0c;大家好&#xff0c;我是徐小夕。之前和大家分享了很多可视化&#xff0c;零代码和前端工程化的最佳实践&#xff0c;今天继续和大家分享一下我们小伙伴开源的基于 nestjs 的若依全栈管理系统。 相信前端小伙伴对若依管理系统并不陌生&#xff0c;它的后端采用…

浙大最新开源:MGMap-掩码引导学习的在线矢量化高精地图构建方法

论文标题&#xff1a; MGMap: Mask-Guided Learning for Online Vectorized HD Map Construction 论文作者&#xff1a; Xiaolu Liu, Song Wang, Wentong Li, Ruizi Yang, Junbo Chen, Jianke Zhu 作者单位&#xff1a;浙江大学&#xff0c;有鹿科技 开源地址&#xff1a;…

Android 网络请求 实现

Android 网络请求 实现 一、背景 在Android开发中,网络请求是一个非常常见的需求。应用程序可能需要与远程服务器通信来获取数据、上传文件、验证用户身份等等。背景下,Android应用通常会面临以下几个主要情况和挑战: ①数据交互: 许多应用程序需要从服务器获取数据,例…

taos数据库服务器安装

涛思数据库服务器安装分为两种情况 一。新服务器直接安装&#xff08;非常好&#xff09; 二。旧服务器删除后删除干净再安装&#xff08;麻烦得很&#xff09; 先来讲解一下情况一&#xff1a; 找需要的taos安装版本链接&#xff1a;https://docs.taosdata.com/releases/tde…

基于springboot实现体育馆管理系统项目【项目源码+论文说明】

基于springboot实现体育馆管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理…

如何阅读:一个已被证实的低投入高回报的学习方法的笔记

系列文章目录 如何有效阅读一本书笔记 如何阅读&#xff1a;一个已被证实的低投入高回报的学习方法 麦肯锡精英高效阅读法笔记 读懂一本书笔记 文章目录 系列文章目录第一章 扫清阅读障碍破解读不快、读不进去的谜题一切为了阅读小学教师让你做&#xff0c;但中学老师阻止你做的…

Python - Excel拆分详解(按工作表、行、列、内容拆分)

目录 引言 安装Python Excel库 Python按工作表拆分Excel Python按行拆分Excel Python按列拆分Excel Python按内容拆分Excel 引言 拆分Excel文件是一种将大型工作簿分割为更小、更易管理的部分的有效方法。当面对包含大量数据或复杂信息的工作簿时&#xff0c;拆分文件可…

【Linux】25. 网络基础(一)

网络基础(一) 计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 其实本质上一台计算机内部也是一个小型网络结构(如果我们将计算机内部某个硬件不存放在电脑中&#xff0c;而是拉根长长的线进行连接。这其实也就是网…

存储大作战:探索Local Storage与Session Storage的奥秘

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 存储大作战&#xff1a;探索Local Storage与Session Storage的奥秘 前言Local Storage与Session Storage简介数据存储生命周期容量限制安全性 前言 在Web的世界里&#xff0c;数据就像是一群流浪者&a…

C++ 递归函数

一 递归函数 递归函数(Recursive Function&#xff09;即自调用函数&#xff0c;即在函数体内有直接或间接地自己调用自己的语句。 大多数递归函数都能够用非递归函数代替。 例如&#xff1a;求两个整数a,b的最大公约数。 算法描述&#xff1a; 大多数递归函数都能用非递归…

武汉星起航:亚马逊年终促销新策略——强化营销,优化体验赢未来

年终节日是电商平台的黄金销售期&#xff0c;也是各大电商平台竞相展示自身实力与智慧的重要舞台。作为全球电商巨头的亚马逊&#xff0c;自然也不例外。每年的年终节日&#xff0c;亚马逊都会推出一系列精彩纷呈的促销活动&#xff0c;吸引全球消费者的目光&#xff0c;实现销…

Vue 中 $nextTick 的作用是什么?

目录 一、NextTick是什么 为什么要有nexttick 二、使用场景 三、实现原理 一、NextTick是什么 官方对其的定义 在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法&#xff0c;获取更新后的 DOM 什么意思呢&#xff1f; 我们可以理解成&#xff0c…

web安全day03

MYSQL注入&#xff1a; SQL 注入的原理、危害及防御措施 SQL 注入的原理&#xff1a;原本的 SQL 语句在与用户可控的参数经过了如拼接、替换等字符串操作后&#xff0c;得到一个新的 SQL 语句并被数据库解析执行&#xff0c;从而达到非预期的效果。 SQL 注入的危害&#xff…

OpenAI泄密者加入马斯克xAI,技术版图扩张;OpenAI推出可识别DALL·E 3图像的AI检测工具

&#x1f989; AI新闻 &#x1f680; OpenAI泄密者加入马斯克xAI&#xff0c;技术版图扩张 摘要&#xff1a;最近&#xff0c;曾在OpenAI任职并被指控泄露机密的Pavel Izmailov迅速加入了马斯克旗下的xAI团队&#xff0c;成为研究员。在加入之前&#xff0c;Izmailov因涉嫌泄…

crossover不能生成容器 无法创建容器怎么办

CrossOver不能生成容器&#xff0c;我们应该先了解什么是容器&#xff0c;容器是盛放类虚拟机——CrossOver在macOS系统和Linux系统下载的win版软件的器皿。无法创建容器怎么办&#xff1f;无法创建多数情况是macOS系统与CrossOver不兼容所造成的。 首先&#xff0c;我们将介绍…

修图新风尚:AI技术赋能,Remini引领修图新纪元,从Remini到未来,AI修图如何改变我们的视觉世界?

最近一款名为Remini的AI修图软件凭借其独特的“丑萌”的黏土风格&#xff0c;迅速在海内外市场走红。 用户只需要上传一张照片&#xff0c;就可以利用AI技术生成对应的黏土滤镜风格的图像。 “黏土AI”风格的图像刷爆了今年的五一假期旅游照片“大赛”&#xff0c;在小红书、…

AI无人自动实景直播系统,挑战高效 实时 智能 全新的直播方式

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经涉足并改变了各个行业&#xff0c;直播领域也不例外。传统的直播方式依赖于真人主持和人工操作&#xff0c;而现在&#xff0c;AI无人自动实景直播系统的出现&#xff0c;正在挑战着传统直播的方式&#…