【换根DP+容斥】P3047 [USACO12FEB]Nearby Cows G

news2024/11/28 0:51:27

P3047 [USACO12FEB]Nearby Cows G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题意:

思路:

做法就是换根

预处理dp[v][j]用普通的树形DP处理即可

注意:一开始预处理的dp[v][j]指的是在v的子树里离v为j的权值和

Code:

#include <bits/stdc++.h>

#define int long long
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)

using namespace std;

const int mxn=3e6+10;
const int mxe=3e5+10;
const int mod=1e9+7;

struct ty{
    int to,next;
}edge[mxe<<2];

int N,K,u,v,x,tot=0;
int head[mxn],dp[mxn][22];

void add(int u,int v){
    edge[tot].to=v;
    edge[tot].next=head[u];
    head[u]=tot++;
}
void G_init(){
    tot=0;
    for(int i=0;i<=N;i++){
        head[i]=-1;
    }
}
void dfs1(int u,int fa){
    for(int i=head[u];~i;i=edge[i].next){
        if(edge[i].to==fa) continue;
        dfs1(edge[i].to,u);
        for(int j=1;j<=K;j++){
            dp[u][j]+=dp[edge[i].to][j-1];
        }
    }
}
void dfs2(int u,int fa){
    for(int i=head[u];~i;i=edge[i].next){
        if(edge[i].to==fa) continue;
        for(int j=K;j>=2;j--){
            dp[edge[i].to][j]-=dp[edge[i].to][j-2];
        }
        for(int j=1;j<=K;j++){
            dp[edge[i].to][j]+=dp[u][j-1];
        }
        dfs2(edge[i].to,u);
    }
}
void solve(){
    cin>>N>>K;
    G_init();
    for(int i=1;i<=N-1;i++){
        cin>>u>>v;
        add(u,v);
        add(v,u);
    }
    for(int i=1;i<=N;i++){
        cin>>x;
        dp[i][0]=x;
    }
    dfs1(1,0);
    dfs2(1,0);
    for(int i=1;i<=N;i++){
        int ans=0;
        for(int j=0;j<=K;j++) ans+=dp[i][j];
        cout<<ans<<'\n';
    }
}
signed main(){
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int __=1;//cin>>__;
    while(__--)solve();return 0;
}

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

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

相关文章

JavaWeb12-三大组件之过滤器-Filter

1. 官方文档 文档&#xff1a;java_ee_api_中英文对照版.chm 2. Filter 过滤器说明 2.1 为啥要过滤器-需求示意图 ● 一图胜千言 2.2 过滤器介绍 Filter 过滤器它是 JavaWeb 的三大组件之一(Servlet 程序、Listener 监听器、Filter 过滤器)Filter 过滤器是 JavaEE 的规范…

图像处理:手写实现图像增广算法(旋转、亮度调整、裁剪与拼接)

前言 图像增广算法在计算机视觉领域扮演着至关重要的角色。随着深度学习的兴起&#xff0c;大规模数据集的需求变得更加迫切&#xff0c;而图像增广算法可以通过对原始图像进行一系列变换&#xff0c;扩充数据集&#xff0c;从而提升模型的泛化能力和鲁棒性。 本文将着重介绍…

win10系统cpu版本 Tensorflow2.5.0的安装

文章目录 前言电脑重装系统了&#xff0c;顺便简单记录一下我的tensorflow2.5.0 CPU的安装过程 一、创建一个虚拟环境&#xff1f;二、确定 输入 y三、激活你的环境四、安装tensorflow2.5.0五、利用清华镜像源加速一下&#xff0c;不然等到猴年马月&#xff01;六&#xff0c;开…

Shape-E:文字到3D的生成模型试用

文章目录 Shape-E&#xff1a;文字到3D的生成模型试用项目介绍项目地址项目使用试用Text to 3DImage to 3D 总结 Shape-E&#xff1a;文字到3D的生成模型试用 项目介绍 Shape-E是一个生成3D模型的工具&#xff0c;可以通过输入文字或者上传图片生成3D模型。该模型的项目地址是…

穿越火线(CF) AI 自瞄 代码 权重 数据集 亲测可用(结尾有资源)

初衷 本人热衷玩CF&#xff0c;同时为一名程序员&#xff0c;近期听说AI霸占FPS游戏&#xff0c;本着学习的态度&#xff0c;特来测试 不喜欢看过程的小伙伴直接看最下面 模型 采用yolov5模型架构 对过程感兴趣的小伙伴下文自行学习 https://zhuanlan.zhihu.com/p/17212138…

数字孪生技术在矿业领域怎样应用?

随着科技的不断发展&#xff0c;数字孪生技术正逐渐走入矿业领域&#xff0c;为这个传统行业带来了全新的变革和机遇。数字孪生技术以其精准模拟和实时监控的特性&#xff0c;为矿业企业提供了更高效、更安全的运营和管理方式。 在矿业开采过程中&#xff0c;数字孪生技术的应…

代码随想录算法训练营day42 | 01背包问题,你该了解这些!,01背包问题,你该了解这些! 滚动数组 , 416. 分割等和子集

代码随想录算法训练营day42 | 背包理论基础&#xff0c;背包理论基础&#xff08;滚动数组&#xff09;&#xff0c; 416. 分割等和子集 1、01背包理论基础背包问题概述01背包二维dp数组01背包案例 2、01背包理论基础&#xff08;滚动数组&#xff09;3、 416. 分割等和子集解…

Redis持久化-Redis主从-Redis哨兵-Redis分片集群

主要内容 Redis持久化Redis主从Redis哨兵Redis分片集群 Redis持久化 Redis有两种持久化的方案: RDB持久化AOF持久化 1. RDB持久化 RDB全称Redis Database Backup file&#xff08;Redis数据备份文件&#xff09;&#xff0c;也被叫做Redis数据快照。简单来说就是把内存中的所…

数字化时代下,制造业企业应该这样做仓库管理

透过现象看本质&#xff0c;在传统的仓储管理中都存在着以下问题&#xff1a; 1.信息化水平较低&#xff0c;以人工为主&#xff0c;以纸张为主&#xff0c;效率低下&#xff0c;容易出现错误&#xff1b; 2.信息流的不对称性&#xff0c;各个过程之间的联系不紧密&#xff0c;…

【高危】Apache Spark UI shell 命令注入漏洞(POC)

漏洞描述 该漏洞是针对此前CVE-2022-33891漏洞的修订&#xff0c;原有漏洞通告中认为3.1.3版本已修复该漏洞&#xff0c;后发现仍受到影响&#xff0c;3.1.3版本已不再维护&#xff0c;官方建议升级至3.4.0版本。 Apache Spark是美国阿帕奇&#xff08;Apache&#xff09;软件…

在这里总有一款高温介电温谱仪适合您(GWJDN-300/600/1000型多种可选)

GWJDN-300型多用途型高温介电温谱仪 关键词&#xff1a;高温介电&#xff0c;变温&#xff0c;电容&#xff0c;损耗 GWJDN-300高温介电温谱仪是一款专门用于评估电介质材料高温介电机制&#xff08;材料极化、储能、驰豫、相变、微结构变化、分子团重新取向等&#xff09;的…

远程控制电脑怎么弄? 远程控制电脑方法介绍

如何免费远程控制电脑&#xff1f; “你好&#xff0c;你知道任何可靠的免费Windows远程控制软件吗&#xff1f;我需要在工作电脑和家用电脑之间进行远程控制&#xff0c;因为我将出差数周。有什么好用的远程控制电脑方法吗&#xff1f;提前致谢&#xff01;” 电脑之间如何…

ChatGPT学习指南

主旨 大家好&#xff0c;我是五竹。心血来潮整理了这份手册并且将为小白们持续更新和GPT相关的资源和教程&#xff0c;专注于打造一部最好的GPT入门指南。此文档永久免费在线查看&#xff0c;欢迎大家转发、收藏、点赞支持&#xff01;后面会在文档中更新&#xff1a;ChatGPT学…

优秀互联网产品经理必备的10张业务图谱

作为离产品最近的人&#xff0c;产品经理是团队的交通枢纽&#xff0c;链接运营的需求和程序员的开发工作。面对庞杂多面的工作&#xff0c;今天小编和大家聊聊产品经理在工作各环节想要精进专业&#xff0c;都需要具备哪些能力。 01学习篇 持续学习的概念早已被大家接受&#…

海量数据同步到DDM(oracle到mysql)

1、由于oracle的rownum性能&#xff0c;所以通过主键ID实现分页&#xff1b; 2、数据可能存在重复&#xff0c;批量插入mysql使用insert ignore语法&#xff1b; 3、DDM数据库&#xff0c;过千万后并发插入&#xff0c;性能就很差&#xff1a;采用单线程一千条批量插入&#…

MySQL--索引--0427--0507

目录 1. MySQL是如何处理数据的 2. MySQL与磁盘的关系 3. MySQL与磁盘交互的基本单位 4.MySQL和磁盘之间联系的总结 5.索引的理解 5.1 理解单个page 5.2 理解多个page 5.3 为什么采用B树 5.4 聚簇索引 和 非聚簇索引 5.5 聚簇索引 和 非聚簇索引下的普通索引 6.索引操作…

Spring 注解之@RestController与@Controller的区别

目录 1&#xff1a;介绍 2&#xff1a;区别 3&#xff1a;总体来说 4&#xff1a;社区地址 1&#xff1a;介绍 RestController 和 Controller 是 Spring MVC 中常用的两个注解&#xff0c;它们都可以用于定义一个控制器类。 2&#xff1a;区别 返回值类型不同&#xff1a;…

STM32单片机声控语音识别RGB彩灯多种模式亮度可调WS2812彩灯

实践制作DIY- GC0129-语音识别RGB彩灯 一、功能说明&#xff1a; 基于STM32单片机设计-语音识别RGB彩灯 二、功能介绍&#xff1a; STM32F103C系列最小系统板5VUSB电源64个灯珠的WS2812灯板1个开关键&#xff08;3档亮度调节&#xff09;1个模式切换键&#xff08;白灯 红灯…

软件测试4年从外包15K跳槽去字节 38K+12,啃完这份笔记你也可以

转行做软件测试已经是第4个年头&#xff0c;一直是一个不温不火的小职员&#xff0c;本本分分做着自己的事情&#xff0c;觉得自己的工作已经遇到了瓶颈&#xff0c;一个偶然的机会&#xff0c;获得了一份软件测试全栈知识点学习笔记&#xff0c;通过几个月的学习&#xff0c;5…

git提交代码到GitLab步骤及拉取远程分支内容

一、本地建立一个空文件夹 点击鼠标右键点击红色箭头方向 Git Hash Here 二、git init 进行初始化 这个时候文件夹中会出现 .git 文件夹 三、添加远程仓库地址 git remote add origin (address) # 添加远程仓库地址 address是远程仓库代码链接 四、如果有分支把远程分支拉到…