bzoj2599/洛谷4149 [IOI2011] Race(树分治)

bzoj 1018 堵塞的交通traffic (线段树) 题意: 思路: 参考博客:https://www.cnblogs.com/MashiroSky/p/5973686.html         非常非常难写的线段树,不仅难想还难写。         首先,这个线段树维护的是什么,是该区域四个顶点的连通性  ... 阅读详情

题意:

洛谷的地址
给一棵树,每条边有权。求一条简单路径,权值和等于 K ,且边的数量最小。

思路:

这题bzoj下线了,就去洛谷上A的
其实是一个比较简单的点分治
但是这题和之前的点分治不太一样(这题),这里的要求和之前不一样,我们不能算完重心的情况再去算子树的情况了
我们换一个思路,我们先遍历一颗以重心的儿子为根的子树,然后和一个之前的num(num[i]表示,到重心距离为i时最少经过几个边)数组来更新答案,更新完后,再把这棵子树的东西放进num数组,这样就能很好地排除非法情况(就是两点的简单路径不经过重心)
之后就和正常点分治一样了

错误及反思:

其实上面的都很好想,也不难写。然后就开始十分诡异的RE,TLE了,我在统计每颗子树的时候,把fa写成-1是tle,写成now却是re,然后就找了一下午bug,重写了一次,把vector改成手动模拟,也还是过不了
后来看了看别人的写法,把num数组的清空方式改了一下(之前是每次都memset,后来改成再重新跑一次,把经过的地方都修改回去),就AC了,甚至fa写错了都能AC。。。
可是我们计算一下复杂度,每次都memset的复杂度是 O(logn∗(n+memset(1e6的数组))) ,这样是tle或re,改了以后是 O(logn∗(n+n)) ,可是memset很快的啊,因为这个tle实在是搞不懂了。。。re就更神秘了

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<vector>
#define fi first
#define se second
using namespace std;
const int N = 200100;
struct EDGE{
    int to,next,val;
}e[N*2];
int first[N],n,tot=0,si[N],maxn[N],num[1000010],k,ans=1e9,v[N][2],en;
bool did[N];

void addedge(int x,int y,int z){
    e[tot].to=y;
    e[tot].val=z;
    e[tot].next=first[x];
    first[x]=tot++;
    e[tot].to=x;
    e[tot].val=z;
    e[tot].next=first[y];
    first[y]=tot++;
}
void dfs_size(int now,int fa){
    si[now]=1;
    maxn[now]=0;
    for(int i=first[now];i!=-1;i=e[i].next)
        if(e[i].to!=fa&&!did[e[i].to]){
            dfs_size(e[i].to,now);
            si[now]+=si[e[i].to];
            maxn[now]=max(maxn[now],si[e[i].to]);
        }
}
void dfs_root(int now,int fa,int& root,int& nu,int t){
    int MA=max(maxn[now],si[t]-si[now]);
    if(MA<nu){
        nu=MA;
        root=now;
    }
    for(int i=first[now];i!=-1;i=e[i].next)
        if(e[i].to!=fa&&!did[e[i].to])
            dfs_root(e[i].to,now,root,nu,t);
}
void dfs2(int now,int fa,int tlen,int dep){
    if(tlen>k) return ;
    for(int i=first[now];i!=-1;i=e[i].next)
        if(e[i].to!=fa&&!did[e[i].to])
            dfs2(e[i].to,now,tlen+e[i].val,dep+1);
    v[en][0]=tlen;
    v[en++][1]=dep;
}

void solve(int now){
    int root,nu=1e9;
    dfs_size(now,-1);
    dfs_root(now,-1,root,nu,now);
    num[0]=0;
    did[root]=true;
    for(int i=first[root];i!=-1;i=e[i].next){
        if(!did[e[i].to]){
            en=0;
            dfs2(e[i].to,root,e[i].val,1);//很神秘的地方,把fa写成-1是tle,写成now却是re,换了num的写法后却都能ac。。。
            for(int j=0;j<en;j++)
                ans=min(ans,v[j][1]+num[k-v[j][0]]);
            for(int j=0;j<en;j++)
                num[v[j][0]]=min(num[v[j][0]],v[j][1]);
        }
    }
    for(int i=first[root];i!=-1;i=e[i].next){
        if(!did[e[i].to]){
            en=0;
            dfs2(e[i].to,root,e[i].val,1);

            for(int j=0;j<en;j++)
                num[v[j][0]]=1e9;
        }
    }
    for(int i=first[root];i!=-1;i=e[i].next)
        if(!did[e[i].to])
            solve(e[i].to);
}
int main(){
    memset(first,-1,sizeof(first));
    scanf("%d%d",&n,&k);
    for(int i=1;i<=k;i++) num[i]=1e9;//这里只写一次,而不是每次都memset
    for(int i=0,u,v,w;i<n-1;i++){
        scanf("%d%d%d",&u,&v,&w);
        addedge(u+1,v+1,w);
    }
    solve(1);
    if(ans==1e9) printf("-1\n");
    else printf("%d\n",ans);
}
基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例

内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。

洛谷P4097 bzoj3615 [HEOI2013]Segment(李超树)

题意: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 两种操作,插入一个线段,或询问x=x0x=x0x=x_0时最大y对应的线段编号 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;刚刚学了李超树就来A一下板子题,比起之前的题多了很多细节, 错误

Roll_Keyboard的博客 518

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

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

bzoj 1103 大都市meg (dfs序+线段树)

题意: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;一颗树,每条边权是1,两种操作,一种查询x到根的距离,一种把某边改为0 思路: &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; 对于一个边变了,那么影响的就是子树,所以dfs序+线段树就行了,这题对于时间要求很低,vector存边,每次暴力找答案也能A 错误及反思: 代码: ...

Roll_Keyboard的博客 457

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

bzoj 3052/洛谷 P4074/uoj 58 [WC2013]糖果公园(树上带修莫队)

题意: UOJ地址 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 洛谷地址 BZOJ因为版权挂了。。。 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 比较裸的一道树上带修莫队,我们只要维护一下某个糖出现了几次,然后更新答案即可 错误及反思: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;n

Roll_Keyboard的博客 450

MapGIS地质剖面图绘制实战:从数据准备到整饰出图

本文详细解析了MapGIS地质剖面图绘制的全流程,从数据准备到整饰出图,涵盖了等高线处理、GRD格网化、比例尺控制等关键步骤。通过实战技巧和案例分析,帮助地质工作者高效完成专业地质剖面图绘制,提升矿产勘探和工程勘察的工作效率。

weixin_28335283的博客 592

BZOJ 3289 Mato的文件管理(莫队+线段树/树状数组)

题意: 思路: 莫队+逆序数,思路还是很好想的,但是复杂度要纠结下。 对于[L,R]来说,向右边扩展,即变成了[L,R+1],就相当于只是在数组末端多了一个数,其他的操作也是同理,只要遵循,改变区间的时候,加上/减去比自己大的值即可 复杂度是莫队的o(nn‾√n\sqrt{n})乘以树状数组或者线段数查询的一个o(log(nn‾√)log(n\sqrt{n})) 错误及反思: 题目

Roll_Keyboard的博客 447

Vue3项目实战:集成h265webjs打造高性能Web端H.265播放器

本文详细介绍了如何在Vue3项目中集成h265webjs库,构建高性能的Web端H.265播放器。通过封装播放器管理模块、利用Vue3组合式API优雅管理生命周期,并提供了从环境准备、核心集成到进阶优化的完整实战指南,有效解决了浏览器原生不支持H.265解码的难题,显著降低视频流带宽占用。

weixin_29016833的博客 363

emwin与Modbus通信结合:项目实例

通过实际项目讲解emwin界面设计与Modbus通信协议的融合应用,深入剖析数据交互流程。掌握emwin在工业控制场景中的实用技巧,提升系统人机交互与稳定通信能力。

weixin_34618526的博客 483

bzoj 2120 数颜色(可持久化莫队)

题意:思路:第一次写带修莫队,感觉还是比较简单的,相对于普通莫队,带修莫队主要是加了一个时间标志。大致思路就是,因为区间内的东西要修改,那就干脆继续暴力的修改,把[L,R]的转移,看成[L,R,T]的转移,依旧是利用排序进行优化,可以说带修莫队依旧是个暴力的优化。 不过,这题有一个疑点,就是在查看许多的博客里面,对于带修莫队,都说block为n23n^{\frac{2}{3}}时带修莫队速度达到最

Roll_Keyboard的博客 434

从FedAvg到实战:手把手教你用PyTorch复现联邦学习经典论文实验(MNIST/CIFAR-10)

本文详细介绍了如何使用PyTorch复现联邦学习经典算法FedAvg在MNIST和CIFAR-10数据集上的实验。从环境搭建、数据非IID划分到模型实现和参数聚合,手把手教你掌握联邦学习的核心技术与实战技巧,帮助开发者和研究人员快速实现隐私保护的分布式机器学习方案。

weixin_29053695的博客 253

bzoj 1503 郁闷的出纳员 (权值线段树或splay)

题意: 思路: &nbsp;&nbsp;&nbsp;&nbsp; 因为工资修改值最多只有1e5,初始工资1e5+修改的2e5,那么其实我们只要开3e5的权值线段树就能维护了。对于加减钱,我们只要修改标准即可,对于加入人,只要让他的初始工资补上之前修改过得标准即可,而查询第k大,就是正常操作了。 &nbsp;&nbsp;&nbsp;&nbsp;为了方便操作,我们让初始工资钱成为1e5+1,...

Roll_Keyboard的博客 428

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 496

【顾邦小讲堂】第二十四期 电源环路测试从入门到精髓:一文掌握环路测试原理与电压注入点选择依据

电源环路测试是评估开关电源、线性电源等闭环系统稳定性的核心手段,直接关系到电源的稳定性、输出精度、动态响应、抗干扰能力甚至可靠性

GBupupup的博客 2111

spoj Qtree6/bzoj 3637 Query on a tree VI(树链剖分+线段树/LCT)

题意: 思路: 首先,我们要开两颗线段树,一颗表示,当前节点为白时,和子树所组成的最大联通块大小是多少,另一颗表示,当前节点为黑时,和子树所组成的最大联通块大小是多少。 那么我们查询点u的答案的时候,就向上找到最远的相同颜色的点v,点v所保存的答案就是u的答案(我们v为最远同色祖先)。 更新某个点u的颜色的时候,就是把u的父亲和最远同色祖先的父亲,这一条路径上的都更新(注意,黑白各更新...

Roll_Keyboard的博客 413

《UDS协议从入门到精通》系列——到底什么是DTC?

到底什么是DTC?看这里,深度图解DTC格式,详述DTC状态位、快照信息和扩展信息!!

车载系统攻城狮 1万+

b2324/luogu4542 [ZJOI2011]营救皮卡丘

题意:        中文题 思路: 首先,如果要探寻新的点,假设i->j,一定是走的路径上比他们小的点过去的,并且在这个条件下,一定是走的最短路。这个过程可以使用floyd完成。对于i<j,假如能够到达,那么就建立一条长度为跑完floyd的dist[i][j]。 那么现在问题就变成了最多使用k条路径覆盖整个dag,并且要求花...

Roll_Keyboard的博客 407

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

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

BZOJ 1878 [SDOI2009]HH的项链 (莫队算法)

题意:给你n个数字,然后查询某个区间有多少种数字思路:莫队裸题,用一个cnt维护区间数字的数量就能实现o(1)转移了错误及反思:代码:#include<bits/stdc++.h> using namespace std; const int maxn= 50000+10; const int maxm= 1000000+10; int pos[maxn]; int cnt[maxm]; int a

Roll_Keyboard的博客 402

OV9734 DATASHEET,完整规格书

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

BZOJ 1036 树的统计Count(树链剖分)

题意:给你一棵树,n个节点,每个节点都有一个val,现在进行q次操作,操作有三种,第一种查询u到v的最大值,第二种,查询u到v的val和,第三种,将某个点修改val思路:树链剖分基本题,相比起前面几道树链剖分,这个题维护的是点,虽然我们从理论上来说,树链剖分是根据边来剖分的,但是其实我们维护的时候维护点更简单,所以这个题虽然写起来麻烦一点,但是逻辑上反而更顺 用两颗线段树分别维护最大值和最小值,和

Roll_Keyboard的博客 375

BZOJ 4034 树上操作(树链剖分)

题意:思路:这题让我对树剖的体会更加深入了 因为我们在组链(也就是划分轻重边)的时候,是使用dfs序来进行划分的,所以我们子树的节点也依旧是在一起的,也就是说,树剖的时候顺便标记下dfs完自己子树时候的标号,就可以顺便完成dfs序时的标号要求了错误及反思:这题没什么难的。。主要是对树剖的体会更深了代码:#include<bits/stdc++.h> using namespace std; con

Roll_Keyboard的博客 353

bzoj 1086 王室联邦 (dfs,构造)

题意: 思路: &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先我们dfs,如果一个节点v的儿子u所在的子树大于等于B,那么就把这个子树当作一个省份,对于这种情况,省会是u,v其实都可以。如果一个儿子u所在的子树小于B,可以先暂存起来,继续遍历其他儿子,当暂存的数量大于等于B的时候,将暂存的都归为一个省,省会为v,因为会暂存的子树大小为B-1,所以这样产生的子树大小最大为2B-2,在...

Roll_Keyboard的博客 347

bzoj 3626 LCA (树链剖分)

题意:思路:比较有意思的树链剖分 首先对于两个点lca的深度,我们发现就是两点和根的连线的重叠部分,那么我们就可以先把一个点到根的所有点都染下色,再用另一个点去查看到根有几个点被染色了 然后想怎么处理那么多区间,根据之前说的,我们可以把[l,r]中所有的点都看作第一个点,z看作第二个点,这样我们离线了提问,然后一边把点放进去一边查询即可错误及反思:l是可以为0的,bzoj有时候数据不会给的很细致

Roll_Keyboard的博客 320
上一篇: codeforces 161D D. Distance in Tree (树分治)
下一篇: HDU 4812 D Tree(树分治)
Roll_Keyboard
博客等级 码龄9年 10粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值