poj 1947 Rebuilding Roads 树形DP

Mac本地大模型实战指南:Ollama+Metal+Apple Silicon深度优化 大语言模型(LLM)本地化部署正成为开发者关键技术能力,其核心在于推理效率、硬件适配与成本控制。Apple Silicon凭借统一内存架构(UMA)和Neural Engine,为本地LLM运行提供了独特优势;Metal加速则显著提升GPU计算吞吐,使Gemma 4、Qwen 3.5等模型在M系列Mac上实现低延迟、高精度、离线可用的工程落地。相比云端API,本地方案规避了token计费、网络依赖与数据外泄风险,特别适用于企业文档处理、实时语音分析、私有知识库检索等强隐私、低时延场景。本文聚焦Mac平台,系 阅读详情

传送门
给出n个节点的一棵树,询问最少毁掉几条边才可以使一颗节点数为p的子树独立出来


分析:
感觉是树形DP(⊙o⊙)…
那么看看状态吧
f[i][j]代表使以i为根节点数为p的子树独立出来最少毁掉几条边>o< >_<
怎么转移呢 ?_?
首先,当我们dfs(root)时,还没有dfs任何一个子节点时,f[root][1]=0,这是显然的,以为当前这棵树只有root这一个节点
当我们dfs完第一个子节点时,f[root][1]++,这也是显然的(^__^) ……~~
然后,我们可以用to[i]和root的f已知数组来转移
f[root][j+k]=min(temp[j]+f[to[i]][k])
temp[j]是在未进行转移时的f[root][j],因为有可能用飞、当前子节点来更新还不如直接割掉当前子节点更优
(因为我是用-1来代表f数组未被更新过,以此来记录j和k枚举到哪里,所以要记录一下原始f数组,也可以记录son[root]来记录jk枚举到哪里,然后按照01背包倒着跑,就不用记录原始状态了O(∩_∩)O~~~~)
然后dfs完第二个子节点,第三个子节点……也是一样的道理,但是不同的是就不只是f[root][1]++了,而是每一个已经被更新的f[root][j]++


代码如下:

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#define MIN(i,j) (i<j?i:j)
using namespace std;
const int maxn=150+5;
int n,p,cnt,hd[maxn],to[maxn],nxt[maxn],f[maxn][maxn];
void add(int x,int y){
    to[cnt]=y;
    nxt[cnt]=hd[x];
    hd[x]=cnt++;
}
void dfs(int root){
    f[root][1]=0;
    for(int i=hd[root];i!=-1;i=nxt[i]){
        dfs(to[i]);
        int temp[maxn];
        memset(temp,-1,sizeof(temp));
        for(int j=1;f[root][j]!=-1;j++)
            temp[j]=f[root][j];
        for(int j=1;f[root][j]!=-1;j++)
            f[root][j]++;
        for(int j=1;temp[j]!=-1;j++)
            for(int k=1;f[to[i]][k]!=-1;k++)
                f[root][j+k]=min(f[root][j+k]==-1 ? 0x3f3f3f3f : f[root][j+k],temp[j]+f[to[i]][k]);
    }
}
int main(){
    scanf("%d%d",&n,&p),cnt=0;
    memset(hd,-1,sizeof(hd));
    for(int i=1,x,y;i<n;i++){
                cin>>x>>y;
                if(x>y) swap(x,y);
                add(x,y);
        }
    memset(f,-1,sizeof(f));
    dfs(1);
    int ans=0x3f3f3f3f;
    for(int i=1;i<=n;i++)
        if(f[i][p]!=-1)
            ans=MIN(f[i][p]+(i!=1),ans);
    cout<<ans<<endl;
    return 0;
} 

感谢YOUSIKI O(∩_∩)O~~


by >o< neighthorn

移花接木,玩转CANoe的几种扩展接口应用(五)——串口设备 近期看到粉丝朋友在CANoe自动化测试方面的关注度很大,今天就围绕这个做一个专题,总结一下以往项目上用过的几种CANoe扩展接口,分享出来希望对相关领域的网友有所帮助。本文是该专题的第五篇文章,主要讲解了串口设备的功能配置、连接方法、配置方法、调用方法,最后分析了这种扩展借口应用的特点和适用场景。 阅读详情

相关推荐

QT 面试题汇总

一、讲述Qt信号槽机制与优势与不足 优点:①类型安全。需要关联的信号槽的签名必须是等同的。即信号的参数类型和参数个数同接受该信号的槽的参数类型和参数个数相同。若信号和槽签名不一致,编译器会报错。 ②松散耦合。信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无需知道是那个对象的那个信号槽接收它发出的信号,它只需在适当的时间发送适当的信号即可,而不需要关心是否被接受和那个对象接受了。Qt就保证了适当的槽得到了调用,即使关联的对象在运行时被删除。程序也不会奔溃。 ...

编程菜鸟 4万+

POJ-1947-Rebuilding Roads-树形dp-01背包思想

POJ-1947-Rebuilding Roads-树形dp-01背包思想 POJ-1947-Rebuilding Roads-树形dp-01背包思想 Description Input Output Examples Input Hint Problem Description Solution Code Description The cows have re...

Simon的博客,已转移至 https://www.cnblogs.com/--Simon/ 602

从原理到代码:拆解UniFormer中动态位置嵌入(DPE)的3D卷积实现

本文深入解析了UniFormer模型中动态位置嵌入(DPE)模块的3D卷积实现原理与代码。DPE通过一个轻量的3D深度可分离卷积,替代传统静态位置编码,使模型能自动学习视频数据的时空位置关系。文章对比了其与Swin Transformer相对位置偏置的优劣,并提供了PyTorch实现代码与高级定制方案,为视频理解任务提供了高效灵活的动态位置编码解决方案。

weixin_29207149的博客 309

[poj 1947] Rebuilding Roads 树形DP

Rebuilding Roads Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10653 Accepted: 4884Description The cows have reconstructed Farmer John’s farm, with its N barns (1 <= N <= 15

ATOD 1190

我用 Claude Code 给 Spring Boot 老项目做了一次代码 Review:查出 4 类隐藏问题

接手 Spring Boot 老项目时,真正麻烦的往往不是编译报错,而是分散在业务代码中的空指针、N+1 查询、异常吞没和并发隐患。本文记录一次使用 Claude Code 辅助代码 Review 的完整流程,并给出提示词、Java 示例、修改方案和人工复核方法。

海波的专栏 396

利用HipSTR从二代测序数据中精准解析短串联重复序列(STR)的遗传多态性

本文详细介绍了如何利用HipSTR工具从二代测序(NGS)数据中精准解析短串联重复序列(STR)的遗传多态性。通过三步走策略,HipSTR能够高效识别STR区域、估算重复次数并判定基因型,适用于法医鉴定、疾病研究和细胞系鉴定等多个领域。文章还提供了实战操作指南和常见问题解决方案,帮助研究者充分利用NGS数据开展STR分析。

weixin_28702105的博客 482

【树形DP】POJ 1947 Rebuilding Roads

通道:http://poj.org/problem?id=1947 题意:给出n,p,一共有n个节点,要求减去最少的边是多少,剩下p个节点 思路:dp[u][i]:记录u结点,要得到一棵i个节点的子树去掉的最少边数 考虑其儿子k1)如果不去掉k子树,则dp[u][i] = min(dp[u][j]+dp[k][i-j]) 0 <= j <= i 2)如果去...

111

前端实现微信扫一扫的思路

本篇文章的关键点就是讲解了我在实现处理多张二维码的场景时的思路,利用canvas遮挡识别过的二维码这个思路是pbk-bin大佬最先想到的,在实现这个需求以后还是很感叹这个思路的巧妙。👏pbk-bin🎁~如果文章对你有帮助,不妨赠人玫瑰,手有余香,预计将会在下篇更新较为完整的微信扫一扫界面和功能。

fang_my的博客 2488

poj 1947 Rebuilding Roads(树形dp)

树形dp,顾名思义,就是在“树”的结构下用动态规划求最值。既然是在“树”形的结构下进行的,那么做这类题的第一步是先建树,然后顺着树的结构进行dp,一般从两个方向进行: 1. 根—>叶:不过这种动态规划在实际的问题中运用的不多,也没有比较明显的例题。 2. 叶->根:既根的子节点传递有用的信息给根,完后根得出最优解的过程。 至于状态转移公式,这要具体题目具体分析。呃,来说...

B218707的博客 251

Hugging Face快速入门(重点讲解模型(Transformers)和数据集部分(Datasets))

1. Hugging Face是什么,提供了哪些内容 2. Hugging Face模型的使用(Transformer类库) 3. Hugging Face数据集的使用(Datasets类库)

iioSnail的博客 8万+

完整的 Python 数据分析案例:新能源汽车续航里程预测

随着新能源汽车的普及,续航里程成为消费者关注的重要指标。准确预测新能源汽车的续航里程,有助于车企优化电池管理系统、提升车辆性能,也能帮助消费者合理规划出行。本案例将基于新能源汽车的各项参数,如电池容量、行驶速度、环境温度等,构建续航里程预测模型。通过以上改进,可以提高数据处理的准确性、模型的性能和可视化的效果。

daqsdfas的博客 1587

POJ1947 Rebuilding Roads(树形DP)

题目大概是给一棵树,问最少删几条边可以出现一个包含点数为p的连通块。 任何一个连通块都是某棵根属于连通块的子树的上面一部分,所以容易想到用树形DP解决: dp[u][k]表示以u为根的子树中,包含根的大小k的连通块最少的删边数 要求答案就是min(dp[u][p],min(dp[v][p]+1)),u是整棵树的根,v是其他结点 转移从若干个子树各自选择要提供几个k转移,不过指...

dengliugong3918的博客 174

什么是 SAP ABAP Secure Storage

此过程将单独的密钥存储在密钥路径中的密钥文件中,并自动使用新加密密钥加密安全存储中的所有数据记录。需要注意的是,不要在没有命令行工具的情况下操作密钥文件,例如,不要用不同的版本替换密钥文件,否则,安全存储中的数据记录可能变得不可读。当需要访问这些数据时,系统会对其进行解密。文件系统中的安全存储(Secure Storage in the File System)也是 SAP NetWeaver Application Server for ABAP 的一部分,主要用于安全存储连接相关的数据,如密码等。

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

【树形dp】poj 1947 Rebuilding Roads

Link:http://poj.org/problem?id=1947 #include #include #include #include using namespace std; /* Anniversary party POJ - 2342 题意:有n个点组成一棵树,问至少要删除多少条边才能获得一棵有p个结点的子树? 题解:dp[i][j] 代表以i为根节点,有j个节点的最

学无纸巾 303

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

poj1947Rebuilding Roads【树形dp】

Language: Default Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 10450   Accepted: 4784 Description The cows have reconstructed Farmer

走一步再走一步 624

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

poj1947 Rebuilding Roads (树形dp)

题目链接:点击这里 题目大意: 给你一棵 nnn 个节点的树,求最少删掉几条边才能得到一颗 ppp 节点的子树 题目分析: 很明显这是一道树形dp。其状态也很容易发现: dp[i][j]dp[i][j]dp[i][j] 为以 iii 为根的子树分割出一颗 ppp 节点的子树需要删的边的数目。 其初始条件也很容易确定:由于 dp[i][1]dp[i][1]dp[i][1] 表示只剩一个节点的子树即只剩了 iii 点本身,所以 dp[i][1]dp[i][1]dp[i][1] 其儿子节点的数目 此 dpdpdp

羊驼的博客 176

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ1947 Rebuilding Roads 树形DP

POJ1947 Rebuilding Roads 树形DP

qq_44919369的博客 121

poj1947 Rebuilding Roads 树形dp背包

题意:n个结点构成有

AC_kereo的专栏 757

poj 1947 Rebuilding Roads (树形dp)

Rebuilding Roads Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8561   Accepted: 3831 Description The cows have reconstructed Farmer John's farm, with its N

To be what you what to be! 995

【POJ1947】Rebuilding Roads,树形DP(本文分组背包做法)

左儿子右兄弟的树形DP?我靠,多大的代码复杂度啊?快来写一发分组背包版树形DP!!!【POJ1947】将你导入这个即将被背包占领的世界!

辗转山河弋流歌 2128

POJ 1947 Rebuilding Roads(树形dp)

Rebuilding RoadsTime Limit: 1000MS Memory Limit: 30000KTotal Submissions: 12650 Accepted: 5882DescriptionThe cows have reconstructed Farmer John's farm, with its N barns (1 &lt;= N &lt;= 150, number 1...

albertluf的博客 212

POJ 1947 Rebuilding Roads 题解【树形DP】

POJ1947 题解 树形DP

Chrissie_的博客 515

Poj 1947 Rebuilding Roads (DP_树形DP(背包))

题目链接:http://poj.org/problem?id=1947 题目大意:给定一棵节点数为n的树,问从这棵树最少删除几条边使得某棵子树的节点个数为p,1 解题思路:树形DP + 背包。由于给定的结构是树,就要想到树的递归特性,而树形dp的优美之处是可以利用子树的状态来转移,来求得根的状态。本题要求求最少删除几条边使得子树节点个数为p,我们只要算出每个以节

2816

【poj1947】Rebuilding Roads【背包树形DP】

背包+树形DP

ssllyr 177

POJ_1947 Rebuilding Roads --树形DP

http://poj.org/problem?id=1947 大意:有n个点组成一个树,问至少要删除多少条边才能获得一棵有p个结点的子树? 分析:树形DP。 思路:用dp[i][j]表示以i为根的子树中留下j个结点的情况下最少需要去除的边数。 因为这里

Chris_Home 451

poj1947Rebuilding Roads(树形dp)

题目:poj1949Rebuilding Roads 题意:给出一棵树,问现在要得到一颗有p个节点的子树,需要最少减掉几条边?分析: 首先可以明确是一个树形dp题目,状态也很好定义: dp【root】【j】:以root为根节点的子树,得到 j 个节点的子树需要最少减掉的边数,注意子树中必须保留root节点。否则无法dp 那么很明显的边界条件dp【root】【1】 = num(儿子的个数),因

大神养成中..... 3113
上一篇: BZOJ 3124: [Sdoi2013]直径 (随便写写就好了)
下一篇: poj 3659 Cell Phone Network USACO 树形DP
NeighThorn
博客等级 码龄11年 20粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值