Floyd+二分,蓝桥杯国赛2022[环境治理]

news2024/11/25 5:25:25

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

0环境治理 - 蓝桥云课 (lanqiao.cn)


二、解题报告

1、思路分析

考虑我们治理时间越长,灰尘度和越低,具有单调性

考虑 二分治理天数mid,1~n可以降低与其相连边 mid / n 点的边权

1 ~ mid % n 可以额外降低与其相连边 1点 的边权

注意边权不能低于临界值

每次更新边权跑一遍floyd

二分最小答案即可

2、复杂度

时间复杂度: O(n ^ 3 * logk)空间复杂度:O(n ^ 3)

3、代码详解

#include <bits/stdc++.h>
using i64 = long long;
const int N = 105;
int f[N][N], g[N][N], w[N][N];
int n, Q;
bool check(int x) {
    // 1 ~ n 增加 x / n, 1 ~ x % n 额外增加1 
    // 考虑O(n^2) 改边
    // O(n^3) 求最短路
    // 注意边权下限
    int a = x / n, b = x % n;

    memcpy(f, g, sizeof g);

    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= n; j ++)
            f[i][j] = f[j][i] = std::max(f[i][j] - a, w[i][j]);

    for(int i = 1; i <= b; i ++)
        for(int j = 1; j <= n; j ++)
            f[i][j] = f[j][i] = std::max(f[i][j] - 1, w[i][j]);
    
    for(int k = 1; k <= n; k ++)
        for(int i = 1; i <= n; i ++) 
            for(int j = 1; j <= n; j ++) 
                f[i][j] = std::min(f[i][j], f[i][k] + f[k][j]);
    i64 s = 0;
    for(int i = 1; i <= n; i ++) 
        for(int j = 1; j <= n; j ++) 
            s += f[i][j];
    return s <= Q;
}

int main() {
    std::ios::sync_with_stdio(false), std::cin.tie(0), std::cout.tie(0);
    std::cin >> n >> Q;
    for(int i = 1; i <= n; i ++) 
        for(int j = 1; j <= n; j ++) 
            std::cin >> g[i][j];
    int l = 0, r = 0;
    for(int i = 1; i <= n; i ++) 
        for(int j = 1; j <= n; j ++) 
            std::cin >> w[i][j], r = std::max(g[i][j] - w[i][j], r);
    r *= n;
    int ans = -1;
    while (l <= r) {
        int mid = l + r >> 1;
        check(mid) ? r = (ans = mid) - 1 : l = mid + 1;
    }
    std::cout << ans;
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyQt5中的QGraphicsView()

文章目录 1. 简介2. 一个简单的示例2. 加载一幅图片3. 常用方法示例 1. 简介 QGraphicsView是PyQt5中用于显示图形场景的小部件&#xff0c;它提供了许多常用的方法来控制视图的行为和属性。下面是一些常用的QGraphicsView方法&#xff1a; setScene(scene): 设置要显示的场景…

初识C语言——第十九天

for循环 1.简单概述 2.执行流程 3.建议事项&#xff1a;

vue从入门到精通(一):初始Vue

一&#xff0c;Vue是什么 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式框架。Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代…

长难句打卡 5.13

And in Europe, some are up in arms over a proposal to drop a specific funding category for social-science research and to integrate it within cross-cutting topics of sustainable development. 在欧洲&#xff0c;有些人正竭力反对一项“终止专用于社会科学研究的…

java spring boot动态数据库获得配置信息连接多数据源(数据库)

数据库 数据库文件和代码文件 https://download.csdn.net/download/qq_34631220/89304173 链接&#xff1a;https://pan.baidu.com/s/1xoh6xiSRx4nW_gKvR1QPjg 提取码&#xff1a;i7b7 –来自百度网盘超级会员V5的分享 文章位置 添加链接描述 说明&#xff1a;事务只能单库…

JUC下的Future 详解

java.util.concurrent.Future 是Java并发编程中一个重要的接口&#xff0c;它代表一个异步计算的结果。当你提交一个任务到执行器&#xff08;如ExecutorService的submit方法&#xff09;&#xff0c;它会返回一个Future对象。这个对象允许你查询任务是否完成、取消任务、获取任…

软件需求工程习题

1.&#xff08;面谈&#xff09;是需求获取活动中发生的需求工程师和用户间面对面的会见。 2.使用原型法进行需求获取&#xff0c;&#xff08;演化式&#xff09;原型必须具有健壮性&#xff0c;代码质量要从一开始就能达到最终系统的要求 3.利用面谈进行需求获取时&#xf…

vue3使用依赖注入实现跨组件传值

父组件Index.vue: <script setup> import { onMounted, provide, ref } from vue import Child from ./Child.vue import ./index.cssconst count ref(0)provide(count, count)const handleClick () > {count.value }onMounted(() > {}) </script><tem…

基于SpringBoot + MySQL的宠物医院管理系统设计与实现+毕业论文+指导搭建视频

系统介绍 项目的使用者可以避免排队挂号&#xff0c;比较方便&#xff0c;也方便于宠物医院的管理。现在的宠物本系统根据华阳社区宠物医院管理工作流程将系统使用者划分为三类&#xff0c;分别为、宠物医生、宠物主人以及系统管理人员&#xff0c;以下是对该三类类用户的具体…

基于百川大语言模型的RSS新闻过滤应用【云服务器+公网网页,随时随地看自己DIY订阅的新闻内容】

背景 目前从公众号、新闻媒体上获得的新闻信息,都是经过算法过滤推荐的,很多时候会感到内容的重复性和低质量,因为他们也要考虑到自己的利益,并非完全考虑用户想要的、对用户有价值的信息。这时,如果要获取自己认为重要的信息,定制化开发自己的筛选算法更好。 效果 素材…

自托管站点监控工具 Uptime Kuma 搭建与使用

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 Uptime Kuma 是一个类似 Uptime Robot 的站点监控工具&#xff0c;它可以自托管在自己的 Nas 或者 VPS 上&#xff0c;用来监控各类站点、数据库等 监控类型&#xff1a;支持监控 HTTP(s) / TCP / HTTP(s…

vue数据大屏并发请求

并发? 处理并发 因为js是单线程的&#xff0c;所以前端的并发指的是在极短时间内发送多个数据请求&#xff0c;比如说循环中发送 ajax , 轮询定时器中发送 ajax 请求. 然后还没有使用队列, 同时发送 的. 1. Promise.all 可以采用Promise.all处理并发&#xff0c; 当所有pro…

ComfyUI 介绍及入门

介绍 ComfyUI 是一种用户界面&#xff0c;它采用了基于节点的流程设计&#xff0c;用于操作一种名为 Stable Diffusion 的技术。这种设计允许用户通过自定义流程来实现更精确的工作流程&#xff0c;并确保结果的可重复性。在 ComfyUI 中&#xff0c;每个模块都承担着特定的任务…

【C++】-【QT】类库使用-001

1主窗口创建 1.1【makefile】配置 1 源码 QT widgetsSOURCES main.cpp2 图示 1.2源码 1 源码 #include <QWidget> #include <QApplication>using namespace std;int main(int argc,char *argv[]) {QApplication a(argc,argv);QWidget w;w.show();return a…

AlphaFold 3:开启生物医药新革命

AlphaFold 3简介 DeepMind与Isomorphic Labs联合发布了AlphaFold 3&#xff0c;这是一个可以更准确预测蛋白质和其他生物分子结构及其相互作用的AI模型&#xff0c;标志着生物医学研究的新革命 AlphaFold 3&#xff0c;这款由DeepMind与Isomorphic Lab联手推出的最新人工智能…

深度解读《深度探索C++对象模型》之虚继承的实现分析和效率评测(一)

目录 前言 具有虚基类的对象的构造过程 通过子类的对象存取虚基类成员的实现分析 接下来我将持续更新“深度解读《深度探索C对象模型》”系列&#xff0c;敬请期待&#xff0c;欢迎左下角点击关注&#xff01;也可以关注公众号&#xff1a;iShare爱分享&#xff0c;或文章末…

鸿蒙开发:【从TypeScript到ArkTS的适配规则】

从TypeScript到ArkTS的适配规则 ArkTS通过规范约束了TypeScript&#xff08;简称TS&#xff09;中过于灵活而影响开发正确性或者给运行时带来不必要额外开销的特性。本文罗列了所有在ArkTS中限制的TS特性&#xff0c;并提供了重构代码的建议。ArkTS保留了TS大部分的语法特性&a…

机器学习入门:使用Scikit-learn进行实践

机器学习入门&#xff1a;使用Scikit-learn进行实践 机器学习是人工智能的一个重要分支&#xff0c;它使计算机具备了从数据中学习和改进性能的能力&#xff0c;而不需要明确的编程。在这个教程中&#xff0c;我们将介绍如何使用Python中的Scikit-learn库进行机器学习任务。 …

使用Gin编写Web API项目并自动化文档

最近需要使用Go写一个Web API项目&#xff0c;可以使用Beego与Gin来写此类项目&#xff0c;前文使用Beego创建API项目并自动化文档介绍了使用Beego来创建的Web API项目并自动化文档的方法。本文就介绍一下使用Gin来编写Web API项目并自动化文档。 一、创建项目 在创建Beego项…

水库大坝安全监测预警系统解决方案介绍

一、方案背景 随着社会的快速发展&#xff0c;水库大坝作为重要的水利工程设施&#xff0c;承载着防洪、灌溉、发电等多重功能。然而水库大坝的安全问题也日益凸显&#xff0c;一旦发生事故&#xff0c;后果将不堪设想&#xff0c;因此&#xff0c;建立一套高效、准确的水库大…