BZOJ 2599 Race

做量化没有实时数据怎么行?我找到一个超级好用的Python库,速度还贼快! 今天咱们介绍了 pytdx 这个神奇的库,重点包括:✅ 安装 pytdx✅ 连接 TDX 服务器✅ 获取实时行情数据✅ 获取 K 线数据✅ 获取分笔成交数据总之,pytdx 是一个速度快、免费、易用的量化利器,适合 A 股量化交易的同学们使用。如果你还在为数据发愁,赶紧试试吧!🚀顺手再看就是对花姐最大的支持,期待你的关注。 阅读详情

题目描述

给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000

解析:

点分治模板题,一开始有一个地方理解的不是很好,就是如何保证取的两条路径不在一个子树之内,后来一个很强很帅还能拿AU的学长告诉我可以先遍历子树但不修改子树中的点对答案的贡献,等到遍历完子树后再修改,这样可以保证取的两条路径一定不在一个子树内(因为当你更新答案的时候当前子树内的点对答案的贡献还未修改,自然无法用它来更新答案了)

代码:

#include<iostream>
#include<cstdio>
#define inf 1e9
using namespace std;
struct point
{
    int to;
    int next;
    int dis;
}e[400010];
int n,num,ans,root,sum,k;
int t[1000001],head[200010],son[200010],f[200010],d[200010],dis[200010];
bool vis[200010];
void add(int from,int to,int dis)
{
    e[++num].next=head[from];
    e[num].to=to;
    e[num].dis=dis;
    head[from]=num;
}
void getroot(int x,int fa)
{
    son[x]=1;
    f[x]=0;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(to==fa||vis[to]) continue;
        getroot(to,x);
        son[x]+=son[to];
        f[x]=max(f[x],son[to]);
    }
    f[x]=max(f[x],sum-son[x]);
    if(f[x]<f[root]) root=x;
}
void cal(int x,int fa)
{
    if(dis[x]<=k) ans=min(ans,d[x]+t[k-dis[x]]);
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(to==fa||vis[to]) continue;
        d[to]=d[x]+1;
        dis[to]=dis[x]+e[i].dis;
        cal(to,x);
    }
}
void SLR(int x,int fa,bool flag)
{
    if(dis[x]<=k)
    {
        if(flag) t[dis[x]]=min(t[dis[x]],d[x]);
        else t[dis[x]]=inf;
    }
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(to!=fa&&!vis[to])
            SLR(to,x,flag);
    }
}
void solve(int x)
{
    vis[x]=true;
    t[0]=0;
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(vis[to]) continue;
        d[to]=1;
        dis[to]=e[i].dis;
        cal(to,0);
        SLR(to,0,1);
    }
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(!vis[to])
            SLR(to,0,0);
    }
    for(int i=head[x];i!=0;i=e[i].next)
    {
        int to=e[i].to;
        if(vis[to]) continue;
        root=0;
        sum=son[to];
        getroot(to,0);
        solve(root);
    }
}
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=k;i++) t[i]=n;
    for(int i=1;i<=n-1;i++)
    {
        int x,y,z;
        scanf("%d%d%d",&x,&y,&z);
        x++; y++;
        add(x,y,z);
        add(y,x,z);
    }
    ans=sum=f[0]=n;
    getroot(1,0);
    solve(root);
    if(ans!=n) printf("%d",ans);
    else printf("-1");
    return 0;
}
基于ROS2系统开发机器人 以上是基于ROS 2开发机器人的基本流程和一个简单的发布者-订阅者示例。通过这个流程,你可以逐步扩展和优化你的机器人系统,实现更复杂的功能。 阅读详情

相关推荐

AI 生成 CAN 通信测试用例实战

本文分享了AI辅助汽车电子测试用例编写的实战经验。通过某车企CAN网络测试项目案例,对比传统方式(需27天)与AI辅助方式(仅5天)的效率差异,展示81%的效率提升。文章详细介绍了从DBC文件提取信号信息的方法,包括DBC文件结构解析、信号定义说明,并提供了完整的Python解析脚本代码,可将信号信息导出为JSON或Excel格式,为后续AI批量生成测试用例奠定基础。

小明的博客 694

bzoj2599: [IOI2011]Race 点分治

题意:给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000明显点分治,但是愚蠢的我并没有想到怎么分治。。%hzwer。 开一个t[i]表示整棵树中权值和为i的路径有多少条,那么我们分治每一颗树的时候,再算出子节点到当前根的dis[x]权值距离和d[x]点数距离,然后就可以直接更新了ans=min(ans,t[k-dis[x]]+d[

老臣 818

Power Automate实战:用SharePoint REST API批量处理列表数据(附JSON解析技巧)

本文深入探讨了如何利用Power Automate调用SharePoint REST API实现列表数据的批量自动化处理。文章详细解析了API的协同工作原理、高效的数据获取与筛选技巧,并重点分享了JSON数据解析的核心难点与实战解决方案,旨在帮助企业用户构建稳定可靠的数据处理流程,提升运营效率。

coffee的博客 770

P4149-(求一条边数最少的权值和为K的简单路径权 的边数 点分治模板)

题目 输入样例#1: 4 3 0 1 1 1 2 2 1 3 4 输出样例#1: 2 n≤200000,K≤1000000 日你

qq_42576687的博客 599

SQLite性能优化:从WAL模式到内存映射的深度解析

本文深入解析SQLite性能优化策略,重点介绍WAL模式和内存映射技术的应用。通过合理配置WAL日志、同步策略和事务批处理,SQLite的IO吞吐量可提升3-5倍。结合内存映射和缓存优化,性能可进一步提升至默认配置的50倍,适用于高并发读写场景。

weixin_29231027的博客 455

07- Rossmann商店销售预测 (Xgboost集成算法) (项目七)

Rossmann在欧洲国家经营着3000多家日化用品超市。目前,Rossmann商店经理的任务是提前6周预测他们的日销售额。商店的销售受到许多因素的影响,包括促销、竞争、学校和国家假日、季节性和地域性。由于数以千计的管理者根据自己的特殊情况预测销售,结果的准确性可能会有很大的差异。 因此使用机器学习算法对销量进行预测,Rossmann要求预测德国1115家商店的6周日销售额。可靠的销售预测使商店经理能够制定有效的员工时间表,提高生产力和积极性。

March_A的博客 2462

bzoj 2599: [IOI2011]Race (点分治)

2599: [IOI2011]Race Time Limit: 70 Sec  Memory Limit: 128 MB Submit: 2796  Solved: 824 [Submit][Status][Discuss] Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N Input 第一行 两个整数 n, k 第二

clover_hxy的博客 614

有限差分法地震数据正演模拟(二)

正演模拟,是在地球物理勘探研究中,根据地质体的形状、产状和物性数据,通过构造数学模型计算得到其理论值(数学模拟),或通过构造实体模型来观测模型所产生的地球物理效应的数值(物理模拟)。p(t+1,x,z)即为下一时刻的波长信息,该波动方程的意义就是通过前一时刻(p(t-1,x,z))和现在时刻(p(t,x,z))预测下一时刻波的传播情况。声波波动方程:反应声波的传播规律,描述最简单的波现象的方程,p代表波场信息,v表示速度场信息因为速度只与速度场有关,所以只与x,z有关。其结果也可以作为反演的验证。

weixin_46285501的博客 3937

BZOJ2599 [IOI2011]Race

BZOJ2599 [IOI2011]Race 题目描述 传送门好像权限题。。。。 传送门 题目分析 思考一下这个题想让你干什么,无非是一个限制和一个最优求解问题。 经过谨慎思考,发现这个\(k\)好像很小啊,好像开数组就开的下。。。 考虑直接开数组暴力记录。 然后就可以点分治,开个数组\(tmp\)暴力记录当权是\(dis\)时,最近的距离是多少。明显\(ans=min(ans,tmp[k-di...

weixin_30525825的博客 117

Jetson-nano 编译实时内核并烧录

前言 之前一篇文章介绍了正常的烧录过程,使用的是默认内核,实际工作中需要对内核打补丁升级为实时内核,并对其重编译。 一、准备内容 官网大法好 官方内核下载链接 官方交叉编译器下载链接 官方文档 ubuntu主机一台 根据官网选择下载对应的文件, 1、L4TDriver Package (BSP) source jetson内核文件。 2、官方交叉编译器 因为我们不是在jetson上直接编译,而jetson是arm平台,所以要进行交叉编译。 二、使用步骤 1.解压 内核 tar -xjf public_s

ldl371122的博客 3288

跟着Synopsys报告,一步步拆解车规芯片FMEDA计算(含公式与避坑点)

本文详细解析了车规芯片FMEDA计算的全流程,基于Synopsys报告拆解实战指南,涵盖基础失效率建模、安全机制效能评估及安全指标合成等关键步骤。通过公式解析、数据准备清单和避坑点分享,帮助工程师掌握ISO26262标准下的硬件量化分析技术,提升车载系统设计可靠性。

weixin_30460489的博客 195

【BZOJ2599】[IOI2011]Race 树的点分治

【BZOJ2599】[IOI2011]Race Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000 Input 第一行 两个整数 n, k第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始) Output 一个整数 表示最...

aodanchui1057的博客 117

树莓派 RP2350B 开发环境搭建

本文介绍了树莓派RP2350B开发环境的搭建过程。

张一西的博客 287

[BZOJ2599][IOI2011]Race

[BZOJ2599][IOI2011]Race 试题描述 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000 输入 第一行 两个整数 n, k第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始) 输出 一个整数 表示最小边数量 如果不存在这样的路径 输出-1 输入示例 4...

weixin_30885111的博客 67

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

BZOJ_2599_[IOI2011]Race_点分治

BZOJ_2599_[IOI2011]Race_点分治 Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000 Input 第一行 两个整数 n, k 第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始) Output ...

118

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

bzoj2599【IOI2011】Race

树的点分治

AaronPolaris 2323

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

bzoj2599 [IOI2011]Race

http://www.elijahqi.win/2018/01/17/bzoj2599-ioi2011race/ ‎ Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N Input 第一行 两个整数 n, k 第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始) Output 一个整数 表示最小边数量 如果不存在

Elijahqi 281

【BZOJ2599】Race(点分治)

【BZOJ2599】Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了。。。 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一个表示距离的桶 对于当前重心,依次插入每棵子树的距离值 然后检查是否存在即可 显然加一步,求最短的路径数 那么,把原来的是否存在的01数组 改为记录最短路径数的一个\(int\)数组 每次插入的时候去...

weixin_30369041的博客 180

bzoj 2599 [IOI2011]Race

点分治

我要吃熊猫 296

BZOJ 2599 [IOI2011]Race【Tree,点分治】

给出N(1  点分治,这道题目和POJ 2114很接近,2114是求是否存在长度为K的边,但是那个K比较大。但是这道题目的K比之小了10倍。 1. 用V[i]表示到当前树根root的路径长度为i 时的点(赋值为root结点即可),这样就可以用来判断两条到根的路径长度之和是否等于K:     结点a的root的距离为i,结点b到root的距离为j,处理完a之后会得到V[i] = root,那么

智障 3779

BZOJ 2599 Race 点的分治

http://www.lydsy.com/JudgeOnline/problem.php?id=2599 题意:给一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. (我会告诉你这就是题面?) BZOJ的题就是好啊!一句话题意,赞一个。 这道题的思路还是点分治 ,类似于前面那篇文章里的两题,只不过转换成了求最小而不是计数,,, 每次找好重心u后,我们只考虑以u为根的子树

努力奋斗才能梦想成真 1526

bzoj-2599 Race

题意: 给出一棵n个点的树,每条边有一个权值; 求一条路径,权值和等于K,且边的数量最小; n 题解: 没数据范围的坑爹题; 此题O(nlog^2n)是过不了的,要O(nlogn)的算法; 注意K的范围! 首先将树分治,答案一定在过根的某条链上; 那么统计子树之间的长度加和为K的链经过的边数; 因为K较小所以直接开一个数组记录长度为x的链最小经过了多少条边就可以了;

140142 1367

【点分治】BZOJ 2599:[IOI2011]Race

BZOJ 2599:[IOI2011]RaceDescription给一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小.Input第一行 两个整数 n, k 第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始)Output一个整数 表示最小边数量 如果不存在这样的路径 输出-1Sample Input4 3 0 1 1 1 2 2 1 3 4Sampl

puck_just_me的blog 968

BZOJ2599: [IOI2011]Race 点分治

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2599 题解:点分治的时候记录两个值,一个是距离,一个是边数,因为最小值是无法删除的,所以可以开一个数组记录每一个答案出现了多少次,最后从小到大扫数组就OK #include #include #include #include #include using namespace std;

Oakley 1240

【bzoj2599】Race

Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N Input 第一行 两个整数 n, k 第二..n行 每行三个整数 表示一条无向边的两端和权值 (注意点的编号从0开始) Output 一个整数 表示最小边数量 如果不存在这样的路径 输出-1 Sample Input 4 3 0 1 1 1 2 2 1

Timothy023的博客 375

bzoj2599: [IOI2011]Race

2599: [IOI2011]Race Time Limit: 70 Sec  Memory Limit: 128 MB Submit: 2933  Solved: 855 [Submit][Status][Discuss] Description 给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N Input 第一行 两个整数 n, k 第二

lethalboy 428
上一篇: [BZOJ2151]聪聪可可(点分治)
下一篇: SDOI2018 R1
Slr2002
博客等级 码龄9年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值