Acwing.4742 电(动态规划)

news2024/9/27 19:19:45

题目

某城市有 N 个电力节点,编号 1∼N。

这些电力节点形成的电力网络,可以看作一个 N 个节点 N−1 条边的连通图。

每个电力节点都有一个固定的电容,其中第 i 个节点的电容为 Ai。

现在,可以选择其中一个节点进行供电,其它节点也可以根据实际连接以及具体电容情况接收电力。

具体来说,如果第 i 个节点通电,那么它也可以将电力传输给其它所有与它直接连接且电容严格小于 Ai 的节点。

我们希望通过合理选择初始供电节点,从而使得尽可能多的节点能够通电。

请你计算并输出可以通电的最大节点数量。

输入格式

第一行包含整数 T,表示共有 T 组测试数据。

每组数据第一行包含整数 N。

第二行包含 N 个整数 A1,A2,…,AN。

接下来 N−1 行,每行包含两个整数 Xi,Yi,表示节点 Xi 和 Yi 之间存在直接连接。

输出格式

每组数据输出一个结果,每个结果占一行。

结果表示为 Case #x: y,其中 x 为组别编号(从 1 开始),y 为可以通电的最大节点数量。

数据范围

1≤T≤100,
1≤Ai≤109,
1≤Xi,Yi≤N,
一个测试点内最多 15 组数据满足 1≤N≤2×105,其余数据满足 1≤N≤103

  • 输入样例:
2
5
1 2 3 4 3
1 3
2 3
4 3
4 5
6
1 2 3 3 1 4
3 1
3 2
3 4
4 5
1 6
  • 输出样例:
Case #1: 5
Case #2: 3

样例解释

在这里插入图片描述

在 Case 1 中,最佳方案是给第 4 个节点供电,这样可以将电力传输到所有节点。

注意,如果给第 3 个节点供电,则电力只会传输至第 1,2 个节点,而无法传输至第 4 个节点,这样只有三个节点可以通电。

在这里插入图片描述

在 Case 2 中,最佳方案是给第 3 个节点供电,这样可以将电力传输至第 1,2 个节点,但是无法传输至第 4 个节点,因为 A4 并不严格小于 A3。

注意,如果给第 6 个节点供电,则电力只会传输至第 1 个节点,如果给第 4 个节点供电,则电力只会传输至第 5 个节点。

题解(代码来自https://www.acwing.com/activity/content/code/content/6570336/)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
import java.util.Arrays;

public class Main {

    static int N = (int) 2e5 + 10, M = 2 * N;
    static int[] w = new int[N];
    static int[] h = new int[N], e = new int[M], ne = new int[M];
    static int idx, n;
    static int[] f = new int[N];

    static void add(int a, int b) {
        e[idx] = b;
        ne[idx] = h[a];
        h[a] = idx++;
    }

    static StreamTokenizer st=new StreamTokenizer(
            new BufferedReader(new InputStreamReader(System.in)));
    static int nextInt() throws Exception{
        st.nextToken();
        return (int)st.nval;
    }

    static int dfs(int u) {
        if(f[u]!=0)return f[u];
        f[u]=1;
        for(int i=h[u];i!=-1;i=ne[i]) {
            int j=e[i];
            if(f[j]==0)dfs(j);
            f[u]+=f[j];
        }
        return f[u];
    }

    public static void main(String[] args) throws Exception{
        int t=nextInt();
        for(int i=1;i<=t;i++) {
            n=nextInt();
            idx=0;
            Arrays.fill(h, -1);
            Arrays.fill(f, 0);
            for(int j=1;j<=n;j++)w[j]=nextInt();
            for(int j=1;j<n;j++) {
                int u=nextInt();int v=nextInt();
                if(w[u]>w[v])add(u, v);
                else if(w[u]<w[v])add(v, u);
            }
            int res=0;
            for(int j=1;j<=n;j++) {
                if(f[j]==0)dfs(j);
                res=Math.max(res, f[j]);
                if(res==n)break;
            }
            System.out.printf("Case #%d: %d\n",i,res);
        }
    }
}


思路

这道题综合运用了静态链表以及动态规划的知识。 这道题的重点在于先分析题目,这道题是一个N个点N-1条边的连通图,说明该图是一棵树,则选择使用动态规划。
则满足条件的加边
最后遍历一遍即可。

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

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

相关文章

婚礼避坑指南(tips分享)

1️⃣自己买婚纱很可能比租的更省钱&#xff0c;更时髦。我是先去婚纱店看&#xff0c;玲琅满目的婚纱让我看花了眼&#xff0c;试穿了几件重工的婚纱感觉并不是自己喜欢的款式&#xff0c;穿着也不舒服&#xff0c;而且租金都要几千。自己在京东上400买的反倒特别满意。 2️…

apipost测试工具的基本使用

目录 什么是 API Post&#xff1f; 步骤1&#xff1a;下载 步骤2&#xff1a;登录 步骤3&#xff1a;新建目录 步骤4&#xff1a;新建接口 步骤5&#xff1a;参数 步骤6&#xff1a;参数的导入导出 一.先找一个有参数的接口进行测试 二.新建一个接口 步骤7&#xff1…

2023年【司钻(钻井)】考试报名及司钻(钻井)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 司钻&#xff08;钻井&#xff09;考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新司钻&#xff08;钻井&#xff09;试题及解析题目及答案&#xff01;多做几遍&#xff0c;其实通过司钻&#xff08;…

活动预告|DeFi和zkLogin专题Workshop AMA

Sui流动性质押黑客松于10月初落下帷幕&#xff0c;但随着Sui网络TVL的不断增加&#xff0c;大家对Sui生态DeFi的讨论持续增加。据DeFiLlama统计&#xff0c;截止10月10日Sui网络TVL突破4000万USD&#xff0c;不断创历史新高&#xff01;zklogin于9月底正式上线&#xff0c;用户…

C++ - 包装器

包装器 在 C 当中可能会有各种各样的可调用类型&#xff0c;比如 函数指针&#xff0c;仿函数&#xff0c;lambda 等等&#xff0c;那么这么多的可调用类型&#xff0c;我们在使用的时候就会犯迷糊&#xff0c;那可不可以统一控制一下呢&#xff1f; function包装器&#xff…

FaceFusion:探索无限创意,创造独一无二的面孔融合艺术!

FaceFusion&#xff1a;探索无限创意&#xff0c;创造独一无二的面孔融合艺术&#xff01; 它使用先进的图像处理技术&#xff0c;允许用户将不同的面部特征融合在一起&#xff0c;创造有趣和令人印象深刻的效果。这个项目的潜在应用包括娱乐、虚拟化妆和艺术创作&#xff0c;…

GIS 算法原理记录总结二:距离、方位角、沿线上的点的扩展算法及其使用(一)

GIS 算法原理记录总结二&#xff1a;距离、方位角、沿线上的点的扩展算法及其使用&#xff08;一&#xff09; 在了解了距离算法、方位角算法之后&#xff0c;就可以根据距离、方位角进行一些扩展应用。这里罗列如下&#xff1a; 一、计算线段中点&#xff08;turf.midpoint&…

❋JQuery的快速入门2 jq动画与案例

目录 jq自定义动画【animate&#xff0c;stop】 案例1&#xff1a;大小图标 案例2&#xff1a;动态增加删除数据 案例3&#xff1a;动态留言与删除 案例4&#xff1a;动态进度条 案例5&#xff1a;点击三个相同的图片进行消除 jq自定义动画【animate&#xff0c;stop】 a…

艺术字画雕刻经营配送商城小程序的作用是什么

一副传神且精致的绘画/雕塑品不仅具有很好的观赏性&#xff0c;更具备售卖属性&#xff0c;当然由于产品本身本身的局限性&#xff0c;无论开店还是线上朋友圈推广&#xff0c;都难有效果。 通过【雨科】平台搭建字画雕刻经营商城&#xff0c;将所有产品线上售卖&#xff0c;电…

内网渗透面试问题

文章目录 1、熟悉哪些域渗透的手段2、详细说明哈希传递的攻击原理NTLM认证流程哈希传递 3、聊一下黄金票据和白银票据4、shiro反序列化漏洞的形成原因&#xff0c;尝试使用burp抓包查看返回包内容安装环境漏洞验证 5、log4j组件的命令执行漏洞是如何造成的6、画图描述Kerberos协…

vue 组件拖拽vue-slicksort应用

1.引入 import { SlickList, SlickItem, HandleDirective } from vue-slicksort 2.注册组件 components: {SlickList,SlickItem}, 3.应用<slick-listv-model"formData.goods"axis"xy":use-drag-handle"true"input"slickListSort"so…

vue3 添加水印效果

效果图 水印组件 <template><div class"elementdiv" ref"waterMarkRef"><slot></slot></div> </template><script setup> import { ref, onMounted, nextTick } from "vue"; import Watermark from …

Mock工具之Moco使用

一、什么是Mock mock英文单词有愚弄、嘲笑、模拟的意思&#xff0c;这里主要是模拟的意思 二、什么是Moco 开源的、基于java开发的一个mock框架支持http、https、socket等协议 三、Mock的特点 只需要简单的配置request、response等即可满足要求 支持在request 中设置headers、…

【Ceph Block Device】块设备挂载使用

文章目录 前言创建pool创建user创建image列出image检索image信息调整image大小增加image大小减少image大小 删除image从pool中删除image从pool中“延迟删除”image从pool中移除“延迟删除的image” 恢复image恢复指定pool中延迟删除的image恢复并重命名image 映射块设备格式化i…

Rockchip RK3399 - linux下抓取usb数据包

---------------------------------------------------------------------------------------------------------------------------- 开发板 &#xff1a;NanoPC-T4开发板eMMC &#xff1a;16GBLPDDR3 &#xff1a;4GB 显示屏 &#xff1a;15.6英寸HDMI接口显示屏u-boot &…

03黑马店评-添加商户缓存和商户类型的缓存到Redis

商户查询缓存 什么是缓存 实际开发过程中数据量可以达到几千万,缓存可以作为避震器防止过高的数据访问猛冲系统,避免系统内的操作线程无法及时处理信息而瘫痪 缓存(Cache)就是数据交换的缓冲区(储存临时数据的地方),我们俗称的"缓存"实际就是缓冲区内的数据(一般从…

L14D6内核模块编译方法

一、内核模块基础代码解析 一个内核模块代码错误仍然会导致的内核崩溃。 GPL协议&#xff1a;开源规定&#xff0c;使用内核一些函数需要 1、单内核的缺点 单内核扩展性差的缺点减小内核镜像文件体积&#xff0c;一定程度上节省内存资源提高开发效率不能彻底解决稳定性低的缺…

香港鼎鑫鸿鄴:紧跟国家新能源政策,制定合理发展规划

由于全球环境的变化以及环境的需要,世界上的许多资源企业正在努力研究和开发新的、更好的绿色产品和服务,并且取得了一系列的突破和成果——其中最为瞩目的是新能源领域的发展与革新。随着我国经济的快速发展,人民生活水平的不断提高,对清洁能源的需求日益增长,同时也带动了新能…

python 定时器

需求 我想在某一时刻完成某个任务,需要一个定时计划 调研了几种方式都不是很理想. 参考,python实现定时任务的8种方式详解 选择使用 apscheduler 库吧 APScheduler简介 APScheduler是Python的一个定时任务框架&#xff0c;用于执行周期或者定时任务&#xff0c;该框架不仅可以…

【数据结构】二叉树遍历的实现(超详细解析,小白必看系列)

目录 一、前言 &#x1f34e;为何使用链式二叉树 &#x1f350;何为链式二叉树 &#x1f349;二叉树的构建 &#x1f4a6;创建二叉链结构 &#x1f4a6;手动构建一颗树 &#x1f353;二叉树的遍历 &#xff08;重点&#xff09; &#x1f4a6;前序遍历 &#x1f4a6;中…