【做题记录】2025刷题计划--根号算法

news/2025/2/7 9:23:09/文章来源:https://www.cnblogs.com/zhangxyhp/p/18702028

A. Tree Master

考虑根号分治,暴力处理。对于一层,设点数为 \(cnt\)

  • \(cnt>\sqrt{n}\),这样的层最多有 \(\sqrt{n}\) 层,每一层最多计算 \(q\) 次,时间复杂度为 \(O(q\sqrt{n})\)
  • 否则 \(cnt\le\sqrt{n}\),进行记忆化,每一层最多计算 \(cnt\choose 2\) 次,最多有 \(\frac{n}{cnt}\) 层,时间复杂度就是 \(O(n\sqrt{n})\) 的。

于是可以通过。空间复杂度 \(O(n)\)

Code
#include<bits/stdc++.h>
#define ll long long
#define il inline
#define pb push_back
using namespace std;
namespace asbt{
namespace cplx{bool begin;}
const int maxn=1e5+5;
int n,m,fa[maxn],cnt[maxn];
int dep[maxn],bfn[maxn],blen;
ll a[maxn],**mem[maxn];
vector<int> e[maxn],cun[maxn];
queue<int> q;
il ll dfs(int u,int v){if(!u&&!v){return 0;}if(cnt[dep[u]]<=blen&&~mem[dep[u]][bfn[u]][bfn[v]]){return mem[dep[u]][bfn[u]][bfn[v]];}ll res=a[u]*a[v]+dfs(fa[u],fa[v]);if(cnt[dep[u]]<=blen){mem[dep[u]][bfn[u]][bfn[v]]=mem[dep[u]][bfn[v]][bfn[u]]=res;}return res;
}
namespace cplx{bool end;il double usdmem(){return (&begin-&end)/1048576.0;}
}
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=2;i<=n;i++){cin>>fa[i];e[fa[i]].pb(i);}blen=sqrt(n);q.push(1);while(q.size()){int u=q.front();q.pop();dep[u]=dep[fa[u]]+1;bfn[u]=cnt[dep[u]];cun[dep[u]].pb(u);cnt[dep[u]]++;for(int v:e[u]){q.push(v);}}for(int i=1;i<=n;i++){if(cnt[i]<=blen){mem[i]=new ll*[cnt[i]]();for(int j=0;j<cnt[i];j++){mem[i][j]=new ll[cnt[i]]();for(int k=0;k<cnt[i];k++){mem[i][j][k]=-1;}}}}while(m--){int u,v;cin>>u>>v;cout<<dfs(u,v)<<"\n";}for(int i=1;i<=n;i++){if(cnt[i]<=blen){for(int j=0;j<cnt[i];j++){delete[] mem[i][j];}delete[] mem[i];}}return 0;
}
}
int main(){return asbt::main();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/879944.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分享】银行业如何实现内外网文件传输,保持核心竞争力?

数据要素是数字经济的重要基石,也是国家经济安全的关键要素。银行业数据因其数据体量大、数据类型多、涉及主体庞大及应用场景复杂等天然特征,在数据流转上面临风险和挑战,包括法律法规层面、安全层面、效率层面等。为响应和落实国家层面对于金融行业网络安全的建设要求,同…

SMT32的HEX文件里加入固件版本的方法(转)

使用MDK编译器,让STM32程序HEX文件中加入固件版本信息。 代码代码如下: //------------------------------------------------------------------------------#include <absacc.h>//------------------------------------------------------------------------------#d…

uniapp 自定义tabBar组件 custom-tab-bar

custom-tab-bar 自定义tabBar组件。 在小程序和App端,为提升性能,在 pages.json 里配置固定的原生tabBar。但在H5端,这一设计并不会提升性能。 同时,H5端尤其是PC宽屏,对tabBar的位置和样式有更灵活的需求,tabBar作为一级导航,更多的时候是在PC网页顶部而不是底部。 自定…

无法连接/访问 Linux虚拟的中的端口(Redis)

Could not connect to Redis at 192.168.137.132:6379: 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。当出现 “Could not connect to Redis at 192.168.137.132:6379: No route to host” 错误,意味着客户端无法找到通往 Redis 服务器(IP 为 192…

钉钉发送告警(非@)

环境: OS:Centos 7 python:2.7[root@yunwei-zabbix-1000001-prd alertscripts]# more dingtalk_middleware.py #!/usr/bin/env python #-*- coding: utf-8 -*-import sys, json, urllib2def Dingtalk(message):content = messageurl = "https://oapi.dingtalk.com/robot/…

为GitLab配置Microsoft Graph作为邮件收发工具

先决条件Microsoft/Office 365订阅(Exchange是必须的)并添加一个gitlab专用的账户,本文使用E5开发者订阅 部署好的GitLab,参考上一篇文章步骤一、 配置Microsoft Entra 1. 注册应用程序 登录Azure门户,进入Microsoft Entra ID,选择管理-应用注册-新注册填写你想要的名称,…

C# 深度学习框架 TorchSharp 原生训练模型和图像识别-自定义网络模型和识别手写数字

目录使用 Torch 训练模型定义神经网络加载数据集创建网络模型定义损失函数训练识别手写图像 教程名称:使用 C# 入门深度学习 作者:痴者工良 教程地址:https://torch.whuanle.cn 电子书仓库:https://github.com/whuanle/cs_pytorch Maomi.Torch 项目仓库:https://github.co…

ZW3D二次开发_入门_Action与Ribbon菜单定制--转自 知乎 捣蛋龙

ZW3D二次开发_入门_Action与Ribbon菜单定制捣蛋龙 ​关注他5 人赞同了该文章​ 目录收起ZW3D二开入门目录 - 知乎 (zhihu.com)最新测试环境:2025 SP前言定制Ribbon菜单1.新建工作区2.定义"行为"3.定义自定义Ribbon文件4.编写策略文件5.编写引导程序6.多环境差异化策…

day4

简单图论与构造 A 考虑把权值为 2 的点看作给权值为 1 的点加一, 所以整个问题被拆成了两个部分:构造树和给节点加一 事实上,在第一部分时我们将树构造的尽量平衡是有好处,这个结论在第二个步骤中会得到证明 构造: Process DFS(father,ch,u,size):if size==0 then returnso…

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具 Optimizing Images Using Omnissa Horizon Windows OS Optimization Tool 请访问原文链接:https://sysin.org/…

BOM最全基础信息:标准件、通用件、替换件、必选件

在生产制造领域,物料清单(BOM)是产品设计、生产计划和供应链管理的核心基础。本文系统梳理了BOM中各类零部件的分类方法,供大家参考。在生产制造的复杂领域中,我们会与各式各样的产品组成部分打交道。清晰、准确地对它们进行分类,并实施有效的管理,对于提升生产效率、保…