(noip 模拟 染色)<树形DP>

1034 树上着色 Description 对一棵树进行着色,每个结点可着黑色或白色,相邻结点不能着相同黑色,但可着相同白色。请设计一种算法对树中尽量多的节点着黑色。 Input 第一行输入T(T<=10)表示有T组数据。每组数据先输入一个正整数N(1<=N<=50000),表示共有N个结点,接下来输入N-1对(u,v),表示u与v之间有一条边。 Output 输出T行正整数,第i行表示第i棵树最多能着色几个黑点。 Sample Input 3 2 1 2 4 1 2 2 3 阅读详情

Problem

染色
【题目描述】
有一棵点数为 n 的树,树边有边权。将 m 个点染成黑色,并将其他的点染
成白色。会获得黑点两两之间的距离和加上白点两两之间的距离和的收益。问
收益最大值是多少。
【输入格式】
第一行两个整数 n、m。接下来 n-1 行,每行三个整数 a、b、c,表示有一
条树边连接 a、b,长度为 c。
【输出格式】
一行一个正整数,表示收益的最大值。
【样例输入】
3 1
1 2 1
1 3 2
【样例输出】
3
【数据规模与约定】
30%的数据,n≤15
60%的数据,n≤100
另 20%的数据,这棵树是一条链
100%的数据,0≤m≤n≤2000,1≤c≤1,000,000

有点像背包

Code

// by spli
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;

const int M=2010;
int n,m;
struct node{
    int to,nxt;
    LL val;
}e[M<<1];int head[M],cnt,siz[M];
int fa[M];
LL f[M][M];

void dfs(int u){
    for(int i=head[u];i!=-1;i=e[i].nxt){
        int v=e[i].to;
        if(v!=fa[u]){
            fa[v]=u;
            dfs(v);
            for(int a=siz[u];a>=0;--a){
                for(int b=siz[v];b>=0;--b){
                    f[u][a+b]=max(f[u][a+b],f[u][a]+f[v][b]+b*(m-b)*e[i].val+(siz[v]-b)*(n-siz[v]-m+b)*e[i].val);       
                }
            }
        }
    }
}

void add(int f,int t,int v){
    cnt++;
    e[cnt]=(node){t,head[f],v};
    head[f]=cnt;
    siz[f]++;
}

int main(){
    memset(head,-1,sizeof(head));
    scanf("%d%d",&n,&m);
    int x,y,z;
    for(int i=1;i<=n;++i) siz[i]++;
    for(int i=1;i<n;++i){
        scanf("%d%d%d",&x,&y,&z);
        add(x,y,z);add(y,x,z);
    }
    dfs(1);
        cout<<endl;
    }*/
    cout<<f[1][m];
    return 0;
}
最小生成树设G=(V,E)是无向图联通带权图,即一个网络。E中每条边(v,w)的权为c[v][w]。如果G的一个子图G’是一棵包含G的所有定点的树,则称G’为G的生成树。生成树上各边权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为最小生成树。采用贪心策略可以直接求得给定网络的最小生成树。 最小生成树 实验内容: 设G=(V,E)是无向图联通带权图,即一个网络。E中每条边(v,w)的权为c[v][w]。如果G的一个子图G’是一棵包含G的所有定点的树,则称G’为G的生成树。生成树上各边权的总和称为该生成树的耗费。在G的所有生成树中,耗费最小的生成树称为最小生成树。采用贪心策略可以直接求得给定网络的最小生成树。 编成任务: 给定网络图,求其最小生成树。 Input 节点个数和给定网络图的邻接矩阵表示方法,其中权值为65535表示两个节点间没有连接。否则数字表示节点间权值。 Output 输出最小生成树包括的节点 Sample Input 11 65535 9 59 69 96 11 72 100 17 43 28 9 65535 40 21 23 61 78 97 41 76 86 59 40 65535 39 48 55 64 11 85 23 44 69 21 39 65535 82 80 62 80 98 8 78 96 23 48 82 65535 70 97 55 2 6 2 11 61 55 80 70 65535 45 71 45 42 45 72 78 64 62 97 45 65535 72 93 89 17 100 97 11 80 55 71 72 65535 97 28 100 17 41 85 98 2 45 93 97 65535 70 77 43 76 23 8 6 42 89 28 70 65535 72 28 86 44 78 2 45 17 100 77 72 65535 Sample Output 106 立即下载

相关推荐

状态估计【卡尔曼滤波kalman】UKF、EKF、粒子滤波PF学习与研究(Matlab代码实现)

内容概要:本文围绕非线性状态估计中的三种经典滤波算法——无迹卡尔曼滤波(UKF)、扩展卡尔曼滤波(EKF)和粒子滤波(PF)展开系统性学习与研究,重点在于通过Matlab编程实现这些算法的核心流程,并将其应用于实际系统的状态估计问题中。文档不仅详细阐述了各算法的数学原理、适用条件与性能差异,还提供了完整的仿真代码与案例分析,帮助读者深入理解其在非线性、非高斯环境下的表现特性。同时,资源拓展至EKF与神经网络融合训练、多源数据融合等高级应用场景,展现了其在智能控制、无人机导航、电力系统状态估计、目标跟踪等领域的广泛应用价值。; 适合人群:具备一定信号处理、控制理论或状态估计基础的研究生、科研人员及工程技术人员,尤其适用于从事自动化、机器人、导航、电力电子与智能系统等相关方向的研究与开发工作者;; 使用场景及目标:① 掌握UKF、EKF与PF在非线性系统中的建模思路与Matlab实现方法,理解其优缺点与适用边界;② 提升科研仿真能力,能够独立构建状态估计模型并进行算法对比验证;③ 将所学方法应用于如电池SOC估算、无人机姿态估计、传感器融合、故障诊断等实际工程问题中;; 阅读建议:建议结合Matlab动手实践,逐行解读并调试所提供的代码,深入理解算法实现细节;同时可延伸学习文中提及的数据融合、神经网络与滤波器结合等进阶主题,以构建完整的状态估计技术知识体系。

红黑树

一、前言 《二叉查找树全面详细介绍》介绍了二叉搜索树,它可以基本操作有:搜索(查找)、遍历、插入、删除等,其时间复杂度均为O(h),因此,如果搜索树的高度较低时,这些集合操作会执行得较快。然而,如果树的高度较高时,这些集合操作可能并不比在链表上执行得快。红黑树(red-black tree)是许多“平衡”搜索树中的一种,可以保证在最坏情况下基本动态集合操作的时间复杂度为O(Ign)。《二叉树平衡(有序数组创建)》、《二叉树平衡(DSW算法)》、《二叉树平衡(AVL树)》介绍了怎样构建平衡二叉树。 参考:

行走 351

解密微信视频号推荐算法的三大核心机制

本文深入解析微信视频号推荐算法的三大核心机制:用户行为数据、视频内容质量和社交关系链。通过详细的数据分析和实战测试,揭示算法如何根据完播率、互动深度、原创性检测和社交关系等因素决定内容推荐。帮助用户和创作者更好地理解并利用视频号算法,提升内容曝光和观看体验。

weixin_42573113的博客 1786

P3806 点分治1 (点分治模板题)

题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在。 输入格式 n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接下来m行每行询问一个K 输出格式 对于每个K每行输出一个答案,存在输出“AYE”,否则输出”NAY”(不包含引号) 输入输出样例 输入 #1 2 1 1 2 2 2 输出 #1 AYE 说明/提示 对于30%的数据n<=100 对于60%的数据n&l...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 285

避坑指南:Windows下OpenCV摄像头索引混乱问题的3种解决之道

本文详细解析了Windows下OpenCV摄像头索引混乱问题的3种解决方案,包括GUID查询法、DirectShow接口集成和注册表固化技术。针对工业视觉和智能监控场景,提供实战代码和性能优化建议,帮助开发者稳定识别多路摄像头设备,有效解决VideoCapture接口的索引漂移问题。

weixin_30836759的博客 406

AD936x Evaluation Software 实战配置指南:从寄存器设置到滤波器优化

本文提供AD936x Evaluation Software的实战配置指南,详细解析从工程创建、RF向导与时钟模块配置,到数字滤波器优化、数字接口设置及增益控制的完整流程。重点分享寄存器设置、滤波器系数权衡及PLL稳定技巧等核心要点,帮助开发者高效配置AD9361/AD9363射频芯片,快速应用于SDR、基站等场景。

perl8的博客 697

给树染色(0x07 贪心)

给树染色 题意 一颗树有 n 个节点,这些节点被标号为:1,2,3…n,每个节点 ii 都有一个权值 A[i]。 现在要把这棵树的节点全部染色,染色的规则是: 根节点 R 可以随时被染色;对于其他节点,在被染色之前它的父亲节点必须已经染上了色。 每次染色的代价为 T×A[i],其中 TT 代表当前是第几次染色。 求把这棵树染色的最小总代价。 思路 比较容易想到的贪心思路为,每次找到还未染色的权值最大的节点进行染色。但是对于这样的一棵树:有一个节点的权值较小,但是它的子节点权值都非常大,另一个节点的权值较大,

zzqwtc的博客 4517

Altium AD20的PCB板框绘制、定义板子形状、重新设置原点、放置尺寸标注

AD20的板框绘制与以前的版本不同,以前板框是在KeepOut层,而在AD20中没有这个层,绘制板框需要到机械层Mechanical1。 板框大小评估 首先进行板框大小评估。 工具 - 器件摆放 - 在矩形区域摆放。 之后通过鼠标框选矩形区域,元件会自动按照框选的范围进行摆放。这个操作可以重复多次,最后大致得出需要的板框尺寸。确定好后右键。 板框绘制,重新定义板子形状 点击下方的 Mechanical1,切换到机械层。放置线条,根据元件摆放来绘制PCB大致的形状,将元件完全包裹。

Mark_md的博客 10万+

树上染色题解

题目描述 有一棵点数为n的树,树边有边权。将m个点染成黑色,并将其他的点染成白色。会获得黑点两两之间的距离和加上白点两两之间的距离和的收益。问收益最大值是多少。 输入输出格式 输入格式: 第一行两个整数n、m。接下来n-1行,每行三个整数a、b、c,表示有一条树边连接a、b,长度为c。 输出格式: 一行 一个正整数,表示收益的最大值。 题解   由题目我们可...

weixin_30768175的博客 578

解决VNC Viewer连接Ubuntu桌面异常:从灰屏到完整菜单栏的实战指南

本文详细解析了使用VNC Viewer连接Ubuntu桌面时出现灰屏或菜单栏缺失的常见原因及解决方案。从桌面环境冲突到配置文件错误,提供了彻底清理系统残留配置、重新安装纯净桌面环境、优化xstartup文件配置等实战步骤,帮助用户快速恢复完整的远程桌面体验。

weixin_30892037的博客 82

【Bug已解决】Codex CLI 报错 You‘ve hit your usage limit 解决方案

Codex CLI 密集使用时触发 You've hit your usage limit 限流报错,本质是订阅套餐额度机制在正常发挥作用。文中给出等待滚动重置、拆分大任务、主动管理上下文、升级套餐、团队排队机制等完整解决方案。

博客 1万+

[bzoj2243][树链剖分]染色

Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段), 如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。 Input 第一行包含2个整数n和m,分别表示节点数和操作数; 第二行包含n个正整数表

Rose_max的博客 773

uniapp - 解决苹果ios真机运行报错:错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配(HbuilderX运行IOS手机出现问题,uniapp运行到IOS真机提示请查看是否设备未)

uni-app,ios苹果,App平台端,uniapp运行到IOS真机提示错误:请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UUID在哪里,uniApp运行到ios真机报错解决,安装自定义基座App失败,没找到有计划资源,证书、标识符和描述文件,证书标识符和描述文件下面没有选项怎么回事,HBuilder真机调试报错请查看是否设备未加入到证书列表或者确认证书类型是否匹配,UniApp运行到IOS真机提示,授权的设备才可以直接安装基座,添加调试的IOS设备,在Devices中,添加手机设备UUID

🏆 前端领域优质创作者 1万+

BZOJ4033 [HAOI]树上染色

Time Limit: 10 Sec Memory Limit: 256 MBDescription有一棵点数为n的树,树边有边权。给你一个在0~n之内的正整数m,你要在这棵树中选择m个点,将其染成黑色,并 将其他的n-m个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。 问收益最大值是多少。Input第一行两个整数n,m。 接下来n-1行每行三个正整数

Log_x's Blog 1934

STM32入门教程:车牌识别

在本文中,我们介绍了如何使用STM32实现车牌识别功能,并提供了详细的代码案例。通过以上步骤,你可以开始开发自己的车牌识别系统了。希望本文对你有所帮助!

2401_85258012的博客 874

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

bzoj 4033: [HAOI2015]树上染色 树形dp

题意有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。 N<=2000,0<=K<=N分析这题太强啦。。。 先附一波题解 就是我们设f[i,j]表示以i为根的子树内选了j个黑点后子树内两两同色点对的距离和的话显然没法转

beginend 931

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

bzoj 4033: [HAOI2015]树上染色

Description 有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。 问收益最大值是多少。 Input 第一行两个整数N,K。 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一...

weixin_30616969的博客 216

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【刷题】洛谷 P3806【模板】点分治1

题目背景 感谢hzwer的点分治互测。 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在。 输入输出格式 输入格式: n,m 接下来n-1条边a,b,c描述a到b有一条长度为c的路径 接下来m行每行询问一个K 输出格式: 对于每个K每行输出一个答案,存在输出“AYE”,否则输出”NAY”(不包含引号) 输入输出样例 输入样例#1: 2 1 1 2 2 2 输出样例#1: AYE 说明...

weixin_30765505的博客 162

树形dp(二)——叶子的染色(Loj 10161)

题目链接:https://loj.ac/problem/10161 题目大意 给一棵m个结点的根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根、内部结点和叶子均可)着以黑色或白色。你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一个有色结点(哪怕是这个叶子本身)。 对于每个叶结点u,定义c[u]为从根结点从U的简单路径上最后一个有色结点的颜色。给出每个c[u]的值,设计着色方案,使得着色结点的个数尽量少。 解题思路 这题的关键就是dp的设计,一般来说树形dp都是以某点为根的子树的状态

hhhcbw的博客,欢迎各位来访 426

【HAOI2015】【树形dp】树上染色

【题目描述】 有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。问收益最大值是多少。 【输入格式】 第一行两个整数N,K。 接下来N-1行每行三个正整数fr,to,dis,表示该树中存在一条长度为dis的边(fr,to)。输入保证所有点

sunshinezff的专栏 2464

【UOJ】【kruskal重构树】【NOI2018】归程

按照高度建最大生成树,构造kruskal重构树,每次连边时新建一个节点表示边权连到两端的父亲上。这样一棵树满足小根堆的性质。所以可以倍增跳到最顶端,然后答案就是子树里的最小权值(这里的权值为到1的最短路)。 代码 #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #include&lt;queu...

Sdywolf的博客 313

[bzoj4033][HAOI2015]树上染色【dp】

【题目描述】 Description 有一棵点数为N的树,树边有边权。给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并 将其他的N-K个点染成白色。将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间距离的和的收益。 问收益最大值是多少。 Input 第一行两个整数N,K。 接下来N-1行每行三个正整数f...

dizhengyue1902的博客 195

美团CODEM 黑白树 思维,拓扑DP

时间限制:1秒 空间限制:32768K 一棵n个点的有根树,1号点为根,相邻的两个节点之间的距离为1。树上每个节点i对应一个值k[i]。每个点都有一个颜色,初始的时候所有点都是白色的。 你需要通过一系列操作使得最终每个点变成黑色。每次操作需要选择一个节点i,i必须是白色的,然后i到根的链上(包括节点i与根)所有与节点i距离小于k[i]的点都会变黑,已经是黑的点保持为黑。问最少使用几次操作能把整

I good vegetable a! 500

【AGC008F】Black Radius【树形dp】

题目链接 这道题。。。神题,花了半天的时间终于搞懂了。 我们设二元组(u,d)(u,d)(u,d)表示以uuu为染色中心,ddd为染色半径染黑的点的集合。为了方便,我们先钦定这些二元组染出的点的集合不为全集,这样答案最后加一就好了。 我们先钦定一个点uuu为染色中心。 1.1.1.这个点可以作为染色中心。则这个点使染色不会发生重复的染色半径ddd的范围为d≥0d≥0d≥0,且 {d&lt...

2016gdgzoi471 549

洛谷 P3177 树上染色 解题报告

P3177 [HAOI2015]树上染色 题目描述 有一棵点数为\(N\)的树,树边有边权。给你一个在\(0\) ~ \(N\)之内的正整数\(K\),你要在这棵树中选择\(K\)个点,将其染成黑色,并将其他的\(N-K\)个点染成白色 。 将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。 输入输出格式 输入格式: 第一行包含两个整数 \(N, K\...

weixin_30502157的博客 239
上一篇: (bzoj 1040 [ZJOI2008]骑士)<基环树森林dp>
下一篇: (noip 模拟 allonsy)<概率+组合数学>
SDFZspli
博客等级 码龄10年 17粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值