SOJ 4299: component

实用ADS开发教程 非常实用的ADS开发教程,英文版本,系统的讲述了使用ADS进行电路设计。 立即下载

题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4299


题目大意:

求树上由K个点组成的点权和最小的联通块。


算法:

树的点分治+树形结构转线性结构。

关于树的分治可以看漆子超的《分治算法在树的路径问题中的应用》。

点分治时树根不能随意指定,需找到树的重心,这样可以保证每棵子树的大小不超过N/2,从而保证递归深度不超过O(lgn)。

另外,除了分治以外,DP也不能采用普通的树上背包,要利用树的先序遍历序列进行优化,详见何森的《浅谈数据的合理组织》。

关于树型结构转线性结构的问题,UESTC论坛上何老师写的三篇文章不错:树形结构转线性结构的方法(1),(2),(3)。


代码如下:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<sstream>
#include<cstdlib>
#include<cstring>
#include<string>
#include<climits>
#include<cmath>
#include<queue>
#include<vector>
#include<stack>
#include<set>
#include<map>
#define INF 0x3f3f3f3f
#define eps 1e-8
using namespace std;

const int MAXN=2100;
vector<int>mm[MAXN];
int w[MAXN];
int d[MAXN][MAXN];
int cot[MAXN],maxb[MAXN];
int ans[MAXN];
bool vis[MAXN];
int tot;
vector<int>node;

void dfs(int u, int p)
{
    node.push_back(u);
    cot[u]=1;
    maxb[u]=0;
    for(int i=0; i<mm[u].size(); i++)
    {
        int v=mm[u][i];
        if(v==p||vis[v])
        {
            continue;
        }
        dfs(v,u);
        cot[u]+=cot[v];
        maxb[u]=max(maxb[u],cot[v]);
    }
}

void solve(int u)
{
    node.clear();
    dfs(u,-1);
    int num=node.size();
    int root=-1,tmp=INT_MAX;
    for(int i=0; i<node.size(); i++)
    {
        if(max(maxb[node[i]],num-maxb[node[i]])<tmp)
        {
            tmp=max(maxb[node[i]],num-maxb[node[i]]-1);
            root=node[i];
        }
    }
    node.clear();
    dfs(root,-1);
    for(int i=0; i<=num; i++)
    {
        for(int j=0; j<=num; j++)
        {
            d[i][j]=INF;
        }
    }
    d[num][0]=0;
    for(int i=num-1; i>=0; i--)
    {
        for(int j=0; j<=num; j++)
        {
            if(j)
            {
                d[i][j]=min(d[i][j],d[i+1][j-1]+w[node[i]]);
            }
            d[i][j]=min(d[i][j],d[i+cot[node[i]]][j]);
        }
    }
    for(int i=1; i<=num; i++)
    {
        ans[i]=min(ans[i],d[1][i-1]+w[root]);
    }
    vis[root]=true;
    for(int i=0; i<mm[root].size(); i++)
    {
        int v=mm[root][i];
        if(!vis[v])
        {
            solve(v);
        }
    }
}

int main()
{
    int n;
    while(scanf("%d",&n)==1)
    {
        memset(vis,0,sizeof(vis));
        tot=0;
        for(int i=0; i<n; i++)
        {
            scanf("%d",&w[i]);
            mm[i].clear();
        }
        for(int i=1; i<n; i++)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            u--;
            v--;
            mm[u].push_back(v);
            mm[v].push_back(u);
        }
        for(int i=1; i<=n; i++)
        {
            ans[i]=INT_MAX;
        }
        solve(0);
        for(int i=1; i<=n; i++)
        {
            if(i>1)
            {
                putchar(' ');
            }
            printf("%d",ans[i]);
        }
        puts("");
    }
}


Ubuntu20.04系统笔记本网卡AX211无法找到wifi问题 之前电脑的系统是18.04基本上安装好了系统,可以直接连上wifi,在买了拯救者y9000p2022版本之后,因为网卡太新,安装ubuntu18.04或者20.04之后会没有wifi连接,非常不方便。于是上网找了各种帖子去解决这个问题。具体实现有所不同。 主要参考了这个帖子来解决的:http://t.csdn.cn/7807R 首先: sudo apt install flex bison 然后: git clone https://github.com/intel/backpor. 阅读详情

相关推荐

拯救我的老平板三星note8.0 table(GT-N5110)升级到lineage os-14.1(android7.1)全记录

买了多年的三星平板note8.0已经闲置了一段时间,今天在家不能出门,也没啥事,就把它拿出来刷新系统。不成想居然搞了一天,还差点变成了砖。 原版的系统是安卓4.0的系统,很多软件已经不能用了,微信、优酷都不支持,而且三星也不提供更新升级,于是寻求第三方解决方案。折腾过程一波三折,就不赘述了,我就讲一下正确的操作过程吧。 切记我这里讲的过程只针对三星note8.0 table,国行版本,版本号是...

weixin_41108814的博客 2万+

SOJ 4482 忽悠大神【最小生成树】

题目链接: http://acm.scu.edu.cn/soj/problem.action?id=4482 题意: 给定边权和点权,从一个点出发并回到该点,减少尽量多的边,每路过点和边都要把权重加到花费上,问最小花费是多少? 分析: 容易想到最后得到的肯定是棵树。 每条边肯定走两遍,然后我们在走边的时候它的两个点肯定也要走一遍,把每条边的权值更新为2...

An55511的博客 211

GEE入门之路(从【初学者】角度,大白话)——附海面风速插值代码

非常初级的GEE入门教程!大白话!有手就行!附海面风速插值代码,克里金插值,时间插值。

weixin_46812066的博客 4086

解题报告 之 SOJ4429 Frog's Dice

解题报告 之 SOJ 4429 Frog's Dice The Problem frog has many dices:) Each dice has six surfaces and there is a lowercase letter on each surfaces. Now, frog want to put these dices in a row so tha

JUST CODE 719

SAP_MM/CO模块-超详细的CK11N/CK40N取值逻辑梳理(十几种业务场景,1.76W字)

本文主要讲述的是三个大的知识点,超详细,涉及到知识点比较多,并且串起来讲解,这也是我在网上搜不到相关资料才自己慢慢研究测试出来的,断断续续耗费了我一周多时间,相信只要你们认真看完,肯定会有所收获; 1、CK11N/CK40N成本发布功能中,系统前台的取数逻辑,涉及到多个采购信息记录、生产版本、货源清单、配额协议等对成本价发布的影响~~!! 2、CK11N与CK40N发布的成本价不一致的问题~~!! 3、如何处理外协加工物料的外协价与BOM组件成本取值不匹配的问题~~!!

风沙的博客 4089

UEFI 基础教程 (零) - 目录

UEFI 基础教程 (十八) — UEFI Build Process简单分析。UEFI 基础教程 (十五) — 获取UEFI MemoryMap。UEFI 基础教程 (六)   —  PROTOCOL 简单使用。UEFI 基础教程 (十)   —  FileIO 简单使用。UEFI 基础教程 (一)   —  搭建UEFI开发环境。UEFI 基础教程 (九)   —  EVENT 简单使用。UEFI 基础教程 (七)   —  HOB 简单使用。UEFI 基础教程 (八)   —  PCD 简单使用。..

技术联盟 1537

解决@Component组件使用@Value失败的问题

一、问题说明 今天进行项目代码优化,将控制器的一些代码封装到组件中,以便于复用。 之前也经常将代码封装到@Component注解的类中,因为有需要调用properties文件的部分。 出现了在@Component的类中,@Value(&quot;${xxxx}&quot;)无法调用properties文件值的问题。 相同的配置文件,经过尝试,如下方代码,@Value(&quot;#{'SECRET_KEY'}&quot;)可以调...

十八百伴 1万+

LeRobot 入门教程(四)SO-101机械臂组装教程

《SO-101机器人组装与配置指南》详细介绍了旗舰机器人SO-101的完整搭建流程。从获取3D打印零件、安装LeRobot软件和FeetechSDK,到分步组装6个关节的机械臂结构(含夹爪/手柄选项),指南提供了清晰的螺丝规格和安装位置说明。重点包括:电机ID/波特率设置方法、USB端口识别技巧、领导者/跟随者臂的校准流程,以及故障排查建议。完成组装后,用户可通过配套Python脚本校准机器人,为后续的自主学习任务做好准备。文档附有视频演示和技术支持通道,确保用户顺利完成机器人部署。

2506_90492529的博客 2582

解题报告 之 HDU4292 Food

解题报告 之 HDU4292 Food Problem Description   You, a part-time dining service worker in your college’s dining hall, are now confused with a new problem: serve as many people as possible.   The is

JUST CODE 624

keil内无法打开ccs图形编程,弹框提示:无法加载一下来源的扩展程序:C:\...清单文件缺失或不可读取,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1377

SAP GUI 经典事务在 Fiori Launchpad 中的穿越之道:原理、配置与实践指南

在许多企业的 S/4HANA 或 ECC 系统里,经典 SAP GUI 事务依旧承载着关键业务。如何把这些老将自然地嵌入到 Fiori Launchpad,让用户在统一入口里无缝切换新旧 UI,是项目中经常遇到的主题。本文结合社区博文、官方文档与实际项目经验,系统梳理这一过程的技术原理、配置步骤、性能优化以及常见坑点,并给出贴近中国读者的案例解析与改进建议。阅读完毕,你将不仅知道怎么做,还会理解。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 623

SOJ 4438 Censor(KMP匹配)

C - Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description Censor frog is now a editor to censor so-called sensitive words (敏感词). She

qq_18661257的专栏 1029

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1651

北大ACM 做题顺序

OJ上的一些水题(可用来练手和增加自信) (poj1003,poj1004,poj1005,poj1207,poj3299,poj2159,poj2739,poj1083,poj2262,poj3006,poj2255,poj3094) 初级: 一.基本算法: (1)枚举. (poj1018,poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2

wy_yestin的专栏 1637

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

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

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

soj4236 && soj2750

只所以把两个题目放在一块,是觉得这两个题目有异曲同工之妙吧。算是排序和贪心吧。 题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4263                      http://cstest.scu.edu.cn/soj/problem.action?id=2750 4263: #include #includ

lj1043041006的专栏 616

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SICIly 2501

OJ #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //#include using namespace std; #define PF(x) (scan

JogRunner的专栏 519

@Value注入失败的问题

@Value注入失败1. 第一步检测语法是否正确@Value("${test}") private String test;2.第二步检测配置文件中是否有进行配置test=test3.第三步检测是否增加了@Component注解   在spring中,使用了spring的注解,那么就需要使用spring来进行管理对象,而不能自己进行new,否则就会导致失败。4.第四步检测代码中的书写方式  不要再...

greatjoe的博客 9993

注解@Value取值取不到问题

@Value取值取不到的几种情况总结: 本博客参考(http://blog.51cto.com/jtech/2114686)。 一、spring组件重写构造方法,在构造方法中引用@Value为null 由于spring实例化顺序为先执行构造方法,再注入成员变量,所以序为先执行构造方法,再注入成员变量,所以ing实例化顺取值为null 解决办法为:再写一个常量类,在常量类中引用@value,再在构造...

dh12313012的博客 4万+

spring boot 中在@Component组件中service 无法注入问题

spring boot 中在@Component组件中service 无法注入问题 一、知识点 @controller 控制器(注入服务):用于标注控制层,相当于struts中的action层; @service 服务(注入dao):用于标注服务层,主要用来进行业务的逻辑处理; @repository(实现dao访问):用于标注数据访问层,也可以...

蓦然回首的专栏 3万+

.net 获取xml里面的值_@value注解的使用 自定义值注入 @PropertySource

代码: https://github.com/jackhbr/spring-anno/tree/master/myenv这次是看怎么往spring的bean中注入值习惯的同学都知道配置一个扫描,然后@value注解注入即可下面使用自定义的来用这里需要大家了解factorybean,这个再spring当中是很重要的。我目前的理解就是它也是用来生产bean的,但是是一种定制化的生产bean。在geto...

weixin_40001048的博客 344

我遇到的Spring的@Value注解失效问题

项目使用的是SSM体系,spring的配置如下,配置没问题,因为我发现其他文件中的@Value可以使用,只有一处@Value失效了。 spring-servlet.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schem...

weixin_33794672的博客 984

@Value的使用及取值为NULL的解决方案

在spring boot中,如果希望在程序中直接使用配置文件中定义的配置值,通常使用一下方式来获取: 1. yml配置: 2. Entity 3 . 测试 注:如果遇到取值为空请从几个方面排查: private static String corpid; //错误 private final String corpid; //错误 缺少@Component注解 没有使用@Autowired注解而是new 对象的方式。 ...

BUG猿的博客 3303

Spring @Value注入属性获取不到值

今天在Spring boot中使用@Value发现获取不到值,但在另一个类中@Value注解确认获取到,我的代码如下:@Component public class EsClientWithSG { private TransportClient transportClient=null; private volatile boolean isClose = false; @

zlp1992的专栏 1万+

使用注解失败的原因及解决方法

启动项目报错:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userController': Unsatisfied dependency expressed through field 'userSer'; nested exception is o...

hans的博客 2450

spring 使用@value无法注入的问题

@value是读取配置文件的值 1,首先spring需要扫描指定的配置文件 加载配置文件 <context:property-placeholder location="classpath:resource/*.properties" /> 此处使用*.properties 扫描 resource文件夹下面所有后缀为resource的文件2,扫描指定的包<context:c

青蛙的博客 3051
上一篇: BZOJ 1494: [NOI2007]生成树计数
下一篇: POJ 3662: Telephone Lines
frog1902
博客等级 码龄14年 152粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值