UVALive 6900 Road Repair [树分治+线段树]

2026.06.23+逻辑填空3+郭熙(笔记)(郭熙言语高分“十二计”).pdf 立即下载

题意:有一棵树,树上每条边都有其花费和收益,找一条简单路径,使花费在<=C的情况下,收益最大,输出最大收益。

解法:对于寻找路径的问题,可以考虑树分治,分治之后,需要考虑经过当前重心的路径是否可能是答案,那么统计其所有儿子到当前重心的花费和收益,我们需要找的便是一个点对<A,B> ,记其属于重心第R个儿子的子树,且收益为W,花费为D,那么点对A,B要满足,Ra≠Rb,Da+Db<=C,同时Wa+Wb应该尽可能大,我们让A<B,便可以满足Ra不等于Rb的条件,那么我们在遍历的时候,只要一个儿子子树一个儿子子树的来处理就可以了,同时Da+Db<=C,求Wa+Wb的最大值,是一个经典的线段树问题,可以在离散化后NlogN的时间内解决,因为分治有logN层,所以复杂度为NlogNlogN。直接写的时间跑了700+MS,可以考虑这样一个优化:当前重心出发的路径中,如果最大收益<= 2*ans(之前得到过的答案),那么必然不可能更优,直接返回不继续分治下去即可。这样的时间为189MS,暂时排第一。

代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<iostream>
#include<stdlib.h>
#include<set>
#include<map>
#include<queue>
#include<vector>
#include<bitset>
#pragma comment(linker, "/STACK:1024000000,1024000000")
template <class T>
bool scanff(T &ret){ //Faster Input
    char c; int sgn; T bit=0.1;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&c!='.'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    if(c==' '||c=='\n'){ ret*=sgn; return 1; }
    while(c=getchar(),c>='0'&&c<='9') ret+=(c-'0')*bit,bit/=10;
    ret*=sgn;
    return 1;
}
#define inf 1073741823
#define llinf 4611686018427387903LL
#define PI acos(-1.0)
#define lth (th<<1)
#define rth (th<<1|1)
#define rep(i,a,b) for(int i=int(a);i<=int(b);i++)
#define drep(i,a,b) for(int i=int(a);i>=int(b);i--)
#define gson(i,root) for(int i=ptx[root];~i;i=ed[i].next)
#define tdata int testnum;scanff(testnum);for(int cas=1;cas<=testnum;cas++)
#define mem(x,val) memset(x,val,sizeof(x))
#define mkp(a,b) make_pair(a,b)
#define findx(x) lower_bound(b+1,b+1+bn,x)-b
#define pb(x) push_back(x)
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;

#define NN 40020

int maxval,maxv[NN],ptx[NN],lnum;
int sz[NN],center;
bool vis[NN];
int b[NN],bn,dn;
struct node{
    int val,dis,idx;
}dx[NN];
int n,k;
int ans;

struct edge{
    int v,next,b,c;
    edge(){}
    edge(int v,int next,int c,int b){
        this->v=v;this->next=next;
        this->c=c;this->b=b;
    }
}ed[NN*2];
void addline(int x,int y,int c,int b){
    ed[lnum]=edge(y,ptx[x],c,b);
    ptx[x]=lnum++;
}

struct segtree{
    int m;
    int val[NN*8];
    void init(int n){
        for(m=1;m<n+3;m<<=1);
        rep(i,0,m<<1)val[i]=0;
    }
    void update(int pos,int v){
        if(v>val[pos+m]){
            val[pos+m]=v;
            for(int i=(pos+m)>>1;i;i>>=1)val[i]=max(val[i<<1],val[i<<1|1]);
        }
    }
    void reset(int pos){
        for(int i=pos+m;i;i>>=1)val[i]=0;
    }
    int getmax(int l,int r){
        if(l>r)return 0;
        int maxv=0;
        for(l=m+l-1,r=r+m+1;l^r^1;l>>=1,r>>=1){
            if(!(l&1))maxv=max(maxv,val[l^1]);
            if(r&1)maxv=max(maxv,val[r^1]);
        }
        return maxv;
    }
}st;

void init(int n){
    lnum=ans=0;
    rep(i,1,n)ptx[i]=-1,vis[i]=0;
    st.init(n);
}

int getsize(int x,int fa){
    sz[x]=1;
    gson(i,x){
        int y=ed[i].v;
        if(vis[y]||y==fa)continue;
        sz[x]+=getsize(y,x);
    }
    return sz[x];
}
void getcenter(int r,int x,int fa){
    maxv[x]=sz[r]-sz[x];
    gson(i,x){
        int y=ed[i].v;
        if(vis[y]||y==fa)continue;
        maxv[x]=max(maxv[x],sz[y]);
        getcenter(r,y,x);
    }
    if(maxv[x]<maxval)maxval=maxv[x],center=x;
}
void getdis(int r,int x,int fa,int d,int v){
    bn++;dn++;
    maxval=max(maxval,v);
    dx[dn].dis=b[bn]=d;
    dx[dn].idx=r;
    dx[dn].val=v;
    gson(i,x){
        int y=ed[i].v;
        if(vis[y]||y==fa)continue;
        getdis(r,y,x,d+ed[i].c,v+ed[i].b);
    }
}



bool calc(int x){
    bn=dn=maxval=0;
    gson(i,x){
        int y=ed[i].v;
        if(vis[y])continue;
        getdis(y,y,x,ed[i].c,ed[i].b);
    }
    if(maxval*2<ans)return false; //加了这个优化,速度暂时排第一
    sort(b+1,b+1+bn);
    bn=unique(b+1,b+1+bn)-b-1;
    rep(i,1,dn){
        if(i==1||dx[i].idx!=dx[i-1].idx){
            rep(j,i,dn){
                if(dx[j].idx!=dx[i].idx)break;
                if(dx[j].dis<=k){
                    int maxv=st.getmax(1,upper_bound(b+1,b+1+bn,k-dx[j].dis)-b-1);
                    ans=max(maxv+dx[j].val,ans);
                }
            }
        }
        st.update(findx(dx[i].dis),dx[i].val);
    }
    rep(i,1,dn)st.reset(findx(dx[i].dis));
    return true;
}

void solve(int x){
    maxval=inf;
    getsize(x,0);
    getcenter(x,x,0);
    x=center;
    vis[x]=1;
    if(!calc(x))return;
    gson(i,x){
        int y=ed[i].v;
        if(vis[y])continue;
        solve(y);
    }
}


int main(){
    int x,y,b,c;
    tdata{
        scanff(n);
        init(n);
        rep(i,1,n-1){
            scanff(x);scanff(y);
            scanff(c);scanff(b);
            addline(x,y,c,b);
            addline(y,x,c,b);
        }
        scanff(k);
        solve(1);
        printf("%d\n",ans);
    }
    return 0;
}


AltiumDesigner.zip 立即下载

相关推荐

YOLO26算法日历数字识别+训练好的模型+102张数据集+pyqt可视化界面.zip

附训练好的 YOLO 权重与 PyQt 可视化检测界面,页面底部含可视化效果预览,毕设/课设开箱即用。 【数据集概况】 · 检测类别(中文):[数字(number)] 【训练曲线与评估图】 【模型训练配置】 参数 | 值 模型 | yolo26n 训练轮数 | 100 epochs 输入尺寸 | 640x640 批次大小 | 24 优化器 | auto 初始学习率 | 0.01 训练设备 【关键指标汇总】 训练了 97 个 epoch,最终轮指标: 指标 | 数值 mAP50 | **0.9156** mAP50-95 | 0.7374 Precision | 0.8626 Recall | 0.8381 train/box_loss | 0.8790 train/cls_loss | 0.7499 val/box_loss | 0.7874 val/cls_loss | 0.6025 【训练过程分析】 训练开始后,我注意到前几轮的 loss 下降特别快,这让我有点兴奋,但随着训练的深入,loss 的降幅变得不那么明显了。在训练的第 30 轮左右,val_loss 开始趋于平稳,这让我稍微放心了一些,但同时也感觉压力倍增,因为一旦训练过早平稳,就容易陷入过拟合的泥沼。经过 97 轮的磨炼,最终 mAP50 达到了 0.9156,这让我松了一口气。不过,mAP50-95 仅有 0.7374,和 mAP50 之间有明显的差距,说明模型在低置信度的检测上还需要优化。从 loss 曲线来看,训练过程总体上比较平稳,没有明显的过拟合迹象,但也让人觉得有些枯燥。我心想,要是能早点找到一个陡峭上升的训练曲线该有多好,这样至少能让人心态更积极一些。 随着训练进行到后半段,模型开始逐渐收敛,但这个过程并不是一帆风顺的。在训... 使用场景:毕业设计、课程设计、深度学习入门、工业场景落地验证。

UVALive 6900 Road Repair(点分治)

题意: 给定N≤2×104的一棵树,给定描述这棵树的四元组,(u,v,cost,profit),cost,profit≤103给定N\le 2\times10^4的一棵树, 给定描述这棵树的四元组, (u,v,cost,profit), cost, profit \le 10^3 对于树的所有简单路,找到一条简单路满足∑cost≤C≤2×107,且∑profit最大对于树的所有简单路, 找

TaoSama's Microcosm 484

【无人机自动降落】基于标记定位与下降速度约束的MATLAB仿真:感知-规划-控制闭环系统设计 MATLAB 无人机自动降落仿真|标记定位与下降速度约束

内容概要:本文档详细介绍了基于MATLAB R2025b的无人机自动降落仿真系统,涵盖从环境建模、标记定位、最优路线规划到下降速度约束控制的全流程。系统通过构建包含障碍物、风险和视觉质量的栅格地图,采用代价加权A*算法实现多因素综合评估的最优路径规划,并结合标记识别置信度、水平误差和环境风险动态调整下降速度,确保降落过程的安全性与稳定性。项目还设计了完整的闭环控制架构、状态机逻辑和可量化的仿真验证体系,支持GUI交互界面与多场景测试,适用于城市物流、电力巡检、应急救援等多种应用场景。 适合人群:具备MATLAB编程基础,从事无人机控制、自动驾驶或智能系统开发的科研人员与工程师。 使用场景及目标:①研究复杂环境下无人机自动降落的感知-规划-控制一体化方案;②验证基于视觉标记的定位可靠性与下降速度自适应控制策略;③开展多因素路径规划算法(如改进A*)的仿真实验与性能评估。 阅读建议:建议结合提供的完整代码与GUI界面进行交互式仿真,重点关注状态机切换逻辑、控制约束机制与各模块间的数据流关系,并通过调整参数观察系统在不同风险、遮挡和噪声条件下的响应特性,以深入理解自动降落系统的鲁棒性设计。

UVALive6900 Road Repair(树的点分治)

题目大概说一棵树,树边有费用和收益两个属性,求一条收益和最大的路径满足费用和不超过C。 树上任意两点的路径都可以看成是过某一个子树根的路径,显然树分治。 治的时候要解决的一个问题是,找到费用小于等于某个数且收益最大的值。 这个很容易想到用线段树,不过不想写线段树。。 想了想,想到可以先排序,从小到大去找,之前找到哪现在就继续从那儿开始找,这样最多也就遍历一遍待查找数组,具体看代码...

dengliugong3918的博客 141

风储VSG-基于虚拟同步发电机的风储并网系统Simulink仿真

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于隔离型全桥LLC谐振变换器的建模、仿真与参数设计,涵盖其在电力电子系统中的关键应用,如软启动、闭环控制、变频控制及效率优化等。该模型支持对LLC变换器在不同工作模式下的动态响应与性能表现进行深入研究,适用于探究谐振拓扑结构、磁性元件设计、谐振参数匹配以及先进控制策略的科研与工程实践。同时,文档配套提供了仿真模型、设计报告与计算书等完整资料,强化了其实用性与教学价值。; 适合人群:具备电力电子、自动化或电气工程等相关专业背景,从事电力电子变换器研发、系统仿真与控制算法设计的科研人员、工程师及研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的建模、仿真与动态性能分析;②支持对软启动过程、闭环稳压控制、变频调谐及效率优化等核心技术的研究与教学;③为电力电子电源系统的工程设计、参数优化与控制策略验证提供高精度仿真平台。; 阅读建议:建议结合Plecs或Simulink等仿真工具进行动手实践,重点理解电路拓扑构建、谐振参数计算、控制器设计与系统稳定性分析,并配合文档中的设计报告与计算书,系统掌握从理论到仿真的完整流程。

国央企创新负责人如何通过平台实现科技创新资源的系统集成与高效配置?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

2015-2016 ACM-ICPC, NEERC, Moscow Subregional Contest G题: Garden Gathering [线段树/最小曼哈顿距离生成树]

在求解曼哈顿最小距离生成树的时候,有一个求解在曼哈顿距离意义下的最近点对的过程,和这个原理相同,可以求解在这张图意义下的最远点对。

Asuna_acmer 1704

独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)

内容概要:本文介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于全桥LLC谐振变换器在电力电子系统中的建模与仿真研究。该资源提供了基于Plecs平台的高精度仿真模型,完整呈现了变换器的主电路拓扑、谐振参数设计、软开关实现机制及变频控制策略,能够有效支持对系统效率、动态响应与稳态性能的深入分析。模型充分体现了LLC谐振变换器在实现零电压开关(ZVS)、降低开关损耗和提升能量转换效率方面的优势,适用于新能源发电、储能系统及高效率电源设计等应用场景。; 适合人群:具备电力电子、自动控制及电路理论基础知识,从事电力电子变换器设计、新能源系统开发或相关领域研究的研究生、高校教师及工程技术人员。; 使用场景及目标:①用于全桥LLC谐振变换器的工作原理教学与参数设计实践;②支撑软开关特性、变频控制策略、效率优化等关键技术的仿真验证与性能评估;③作为科研项目、课程设计或毕业设计中电力电子系统仿真的核心参考模型,促进理论与工程实践的结合。; 阅读建议:建议使用者在掌握LLC谐振变换器基本工作原理的基础上,结合相关电力电子教材与Plecs软件操作指南,通过调整谐振元件参数、负载条件及控制策略进行多工况仿真,深入理解其工作机理与优化方法,并结合实验数据对比验证仿真结果的准确性。

FZU 2201 序列操作 [线段树]

维护差分序列,将成段更新转换为单点更新,如此就能维护并询问区间GCD

Asuna_acmer 913

LLC谐振变换器开环+闭环软启动仿真设计(Simulink仿真实现)

内容概要:本文围绕LLC谐振变换器的开环与闭环软启动过程展开系统性仿真研究,重点基于Simulink平台构建隔离型全桥LLC谐振变换器的完整仿真模型,涵盖其工作原理分析、关键参数设计、变频与移相混合控制策略实现、软启动过程建模及动态响应优化。内容深入探讨了开环启动中存在的冲击电流问题,对比闭环控制在抑制浪涌、提升系统稳定性与效率方面的优势,并通过仿真验证软启动过程中电压、电流的平滑过渡特性,帮助读者掌握高频高效DC-DC变换器的设计要点与仿真调试方法。; 适合人群:具备电力电子技术、自动控制理论及电路分析基础,从事开关电源、新能源变换系统、电力传动等领域研究的研究生、工程师及科研人员;熟悉Simulink仿真环境者更佳。; 使用场景及目标:①掌握LLC谐振变换器主电路建模与谐振参数设计方法;②理解开环与闭环控制对软启动性能的影响机制;③实现软启动过程中冲击电流的有效抑制与系统平稳启动的仿真验证;④为高效率电源系统的工程化设计与优化提供可靠的仿真依据和技术支撑。; 阅读建议:建议结合文中提供的仿真模型、参数计算书及参考文献进行同步实践,亲手搭建Simulink模型,逐步调整控制参数并观察动态响应,深入理解LLC谐振变换器在不同工况下的运行特性与控制逻辑,切实提升理论分析与工程仿真相结合的能力。

test111233333333333333

test111233333333333333

2014-2015 ACM-ICPC, Asia Tokyo Regional Contest G題:Flipping Parentheses [线段树]

给出N个括号,一开始是匹配的,然后M次操作,每次操作会把某个位置Pi的括号换个方向,这样就不合法了,我们需要把它再变得合法,输出一个最左边的需要翻转的括号的位置,每一个操作都是在上一个操作基础上进行的。

Asuna_acmer 880

使用DCA1000和EVM板进行数据采集

目录 1. 准备工作 1.1 硬件 1.2 软件 2. 驱动安装 3. 设置静态IP地址 4. 采集数据 5. 采集的数据文件的格式 6. 数据采集存储的数据流 参考资料 1. 准备工作 1.1 硬件 EVM板,电源线(5V,>2.5A),USB线 DCA1000,电源线(5V,>2A),USB线,网线,60pin Samtec cable 1.2 软件 mmWave Studio Matlab Runtime Engine v8.5.1 将DCA1000和EVM板

qq_42235129的博客 1万+

HDU 5293 Tree chain problem [树链剖分+线段树+树形DP]

给出N个点的树,M条树链,树链有权,问在取出的树链互不相交的情况下,权值和最大是多少。

Asuna_acmer 795

从理论到实践:笛卡尔空间阻抗控制的实现挑战与变体解析

本文深入探讨了笛卡尔空间阻抗控制的核心原理、工程实现中的五大挑战及经典变体实战解析。通过详细的数学建模和实际案例分析,揭示了阻抗控制在工业机器人、医疗设备等领域的应用价值,特别是在力感知精度、动力学模型校准和实时计算等方面的关键技术突破。

weixin_30952535的博客 449

海康威视工业相机网络配置实战:从MVS软件操作到IP地址规划

本文详细介绍了海康威视工业相机的网络配置实战,从MVS软件操作到IP地址规划。重点讲解了IP设置的重要性、Windows系统下的网络配置步骤、避免IP冲突的技巧,以及MVS软件中的相机IP配置方法。帮助用户快速掌握工业相机的网络连接技术,确保稳定高效的图像采集。

weixin_30296405的博客 486

BZOJ 8843 染色 [树链剖分+区间线段树]

给出一个树,树上每个点有颜色,两种操作:1)将路径,<X,Y> 上的点颜色全部改成C ;2)询问路径<X,Y> 上的颜色段数,11221为3段。

Asuna_acmer 633

现代SerDes解剖:从CTLE/DFE到PAM4与ADC+DSP架构

高速有线通信的物理层瓶颈,正从并行总线的时钟偏斜转向串行链路的信号完整性挑战。SerDes作为解决这一问题的核心技术,其内部架构远超“并转串”的朴素认知。接收端的CTLE线性均衡与DFE判决反馈均衡,配合CDR时钟恢复,共同构成对抗信道损耗与码间干扰的关键机制。随着速率迈向56G/112G,PAM4调制以电平幅度换取带宽,而ADC+DSP架构则把均衡算法搬入数字域,实现更灵活的非线性补偿。理解这些模块如何协同工作,是调试PCIe、以太网等高速链路、优化眼图余量与抖动预算的基础,也是硬件工程师从盲目调参走向系

weixin_29194817的博客 299

HDU 5239 Doom [线段树]

单点有更改次数限制的线段树:很神奇的取模数,当你一直平方下去就不变啦!

Asuna_acmer 559

K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

🔴 K8s(二十一):在 Kubernetes 集群中部署 MySQL8.0 高可用集群(1主2从)

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3万+

微信小程序转发功能异常报错 由于小程序违规分享功能暂时无法使用的解决办法

小程序右上角转发功能被封,不代表你违规了,而可能是你没认证、没备案!很多功能都是“先合规、后开发”,踩坑就晚了,别像我一样绕了三圈才发现问题。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2615

BZOJ 3289 Mato的文件管理 [ 离散化+莫队算法+线段树 ]

给出N个数,以及Q个询问区间,每次询问你需要输出:令这个区间变为有序的最小步数。其中,每一步你可以让两个相邻的数交换。

Asuna_acmer 530

机器人控制基础:伺服驱动电机 PID 参数自适应控制的实现方法及研究

伺服电机PID参数自适应控制技术研究 摘要:针对伺服驱动电机在动态负载工况下传统PID控制性能下降的问题,本文研究了多种自适应控制方法。通过分析6种主流技术(包括模型参考自适应、模糊逻辑、神经网络等)的原理、实现步骤及适用场景,揭示了负载感知精度、参数调节实时性和系统稳定性三大技术难点,并提出了相应解决方案。以模糊自适应PID为例的实验验证表明,该技术能有效提升伺服系统在变负载条件下的控制性能。研究为工业应用中伺服电机的精确控制提供了重要参考。

start_up_go的博客 828
上一篇: POJ 1741 Tree [树上点分治]
下一篇: BZOJ 2152 聪聪可可 [树分治 or 树形DP]
GrassTreeFlower
博客等级 码龄11年 14粉丝 116原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值