Codeforces Round #447 (Div. 2) D 预处理+归并+ 二分

【AI方案集】AI与人机协作相结合的智能法律咨询系统.docx AI技术方案以算力、算法、数据三角协同为核心,通过搭建标准化的数据预处理、模型训练与边缘云端协同部署流程,将计算机视觉、自然语言处理、机器学习等核心能力深度融入业务场景,既实现自动化流程降本提效,又通过精准的模式识别与预测分析为管理层提供数据驱动的决策支撑,最终完成从通用AI技术到行业定制化场景的适配落地,为企业数字化转型提供可落地的技术路径。 立即下载

Ralph And His Tour in Binary Country

time limit per test2.5 seconds
memory limit per test512 megabytes
inputstandard input
outputstandard output

Ralph is in the Binary Country. The Binary Country consists of n cities and (n - 1) bidirectional roads connecting the cities. The roads are numbered from 1 to (n - 1), the i-th road connects the city labeled (here ⌊ x⌋ denotes the x rounded down to the nearest integer) and the city labeled (i + 1), and the length of the i-th road is Li.

Now Ralph gives you m queries. In each query he tells you some city Ai and an integer Hi. He wants to make some tours starting from this city. He can choose any city in the Binary Country (including Ai) as the terminal city for a tour. He gains happiness (Hi - L) during a tour, where L is the distance between the city Ai and the terminal city.

Ralph is interested in tours from Ai in which he can gain positive happiness. For each query, compute the sum of happiness gains for all such tours.

Ralph will never take the same tour twice or more (in one query), he will never pass the same city twice or more in one tour.

Input
The first line contains two integers n and m (1 ≤ n ≤ 106, 1 ≤ m ≤ 105).

(n - 1) lines follow, each line contains one integer Li (1 ≤ Li ≤ 105), which denotes the length of the i-th road.

m lines follow, each line contains two integers Ai and Hi (1 ≤ Ai ≤ n, 0 ≤ Hi ≤ 107).

Output
Print m lines, on the i-th line print one integer — the answer for the i-th query.

Examples
input
2 2
5
1 8
2 4
output
11
4
input
6 4
2
1
1
3
2
2 4
1 3
3 2
1 7
output
11
6
3
28

Before answering each query, pre-process on the tree. On each vertice, we can get a sorted array of all the vertices in its subtree sorted by distance to this vertex. And it costs O(nlog(n)) time using merge sort or O(n(log(n))2) time using std::sort. If you use std::sort, you should implement it carefully or it won’t be able to fit in the time limit. Because the tree is an almost complete binary tree, one vertex will appear at most [log(n)] times in all n sorted arrays,so the memory complexity is O(nlog(n)).

To answer each query, we can iterate on the highest vertex on the tour and do binary search on the sorted array to get the answer. We’ll do at most [log(n)] times of iteration and the binary search is O(log(n)) per iteration, so we can answer each query in O((log(n))2) time.

Overall, the time complexity is O(nlog(n) + m(log(n))2) and the memory complexity is O(nlog(n)). If you use std::sort, the time complexity will be O((n + m)(log(n))2) and the memory complexity is the same.

题意

有n个城市,i和2i存在一条边,i和2i+1也连一条边。
给你每条边的长度。
现在给你m个询问,每个询问给你x和h,表示起点为x,然后让你求sigma(max(h-dist[i],0))

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>

using namespace std;
typedef long long LL;
const int N=1000050;

vector<LL> sm[N];
vector<int> ln[N];
int len[N],n,q,a[N];
inline void merge(int x,int y){
    register int i=0,j=0,k=0,ad=len[y];
    register int lx=ln[x].size(),ly=ln[y].size();
    while(i<lx&&j<ly){
        if(ln[x][i]<ln[y][j]+ad)
            a[k++]=ln[x][i++];
        else
            a[k++]=ln[y][j++]+ad;
    }
    while(i<lx)a[k++]=ln[x][i++];
    while(j<ly)a[k++]=ln[y][j++]+ad;
    for(i=0;i<lx;i++)ln[x][i]=a[i];
    for(i=lx;i<k;i++)
        ln[x].push_back(a[i]);
}
LL cal(int nod,int lx){
    register int lb=0,rb=ln[nod].size()-1,mid;
    while(lb<=rb){
        mid=lb+rb>>1;
        if(ln[nod][mid]<=lx)
            lb=mid+1;
        else
            rb=mid-1;
    }
    if(rb<0)return 0;
    return 1ll*lx*(rb+1)-sm[nod][rb];
}

int main(){

    int i,j,k,las;
    scanf("%d%d",&n,&q);
    for(i=2;i<=n;i++)scanf("%d",&len[i]);
    for(i=1;i<=n;i++)
        ln[i].push_back(0);
    for(i=n;i>1;i--)merge(i/2,i);
    for(i=1;i<=n;i++){
        for(j=0,k=ln[i].size();j<k;j++){
            sm[i].push_back(ln[i][j]);
            if(j)sm[i][j]+=sm[i][j-1];
        }
    }
    for(i=1;i<=q;i++){
        scanf("%d%d",&j,&k);
        register LL cnt=0;
        for(las=0;j;k-=len[j],las=j,j>>=1){
            if(k<0)break;cnt+=k;
            int lch=j<<1,rch=j<<1|1;
            if(lch<=n&&las!=lch)
                cnt+=cal(lch,k-len[lch]);
            if(rch<=n&&las!=rch)
                cnt+=cal(rch,k-len[rch]);
        }
        printf("%lld\n",cnt);
    }

    return 0;
}
picture again 立即下载

相关推荐

计算机二级通关宝典1计算机二级通关宝典

计算机二级通关宝典1计算机二级通关宝典

DZY Loves Modification CodeForces 447D 贪心

题目链接: DZY Loves Modification题目大意一个n*m的数字矩阵, 每次操作可以选取一行或一列, 让这一行(列)每个数字都减去p, 每次得到的收益是减去p前这一行(列)数字和, 求操作k次最大收益 1 ≤ n, m ≤ 103;1 ≤ k ≤ 106;1 ≤ p ≤ 1001 ≤ n, m ≤ 10^3; 1 ≤ k ≤ 10^6; 1 ≤ p ≤ 100思路贪心 预处理出r

litmxs的博客 418

MobaXterm终端工具个人学习版安装包及常用配置备份

资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。

Codeforces 447D - DZY Loves Modification

447D - DZY Loves Modification 思路:将行和列分开考虑。用优先队列,计算出行操作i次的幸福值r[i],再计算出列操作i次的幸福值c[i]。然后将行取i次操作和列取k-i次操作,那么多加的幸福值就是i*(k-i)*p,因为无论先操作行还是列,每操作一次一个格子只减一次p。这样记录下最大的幸福值。 代码: #include<bits/stdc++.h>...

weixin_33738555的博客 239

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

科技中介服务机构如何借助平台提升技术撮合服务的专业性与响应速度?.docx

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

[CodeForces - 447D] D - DZY Loves Modification

D - DZY Loves Modification As we know, DZY loves playing games. One day DZY decided to play with an × mmatrix. To be more precise, he decided to modify the matrix with exactlykoperations. Eac...

a8233821的博客 297

产业园区如何利用AI技术提升科技成果转化服务的响应速度与转化成功率?.docx

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

题解 T3951([POJ-1753]Flip Game)

题解 T3951 链接 方法一:dfsdfsdfs 爆搜 非常容易想到,当然也是我的做法。 我们需要一个 changechangechange 函数,一个 checkcheckcheck 函数,和一个 dfsdfsdfs 函数。 changechangechange 函数的作用:给定 xxx、yyy,改变自身和周围四个的值。 checkcheckcheck 函数的作用:检查是否为同色。 dfsdfsdfs 函数的主题思路:从 (1,1)(1,1)(1,1) 开始搜,按如下图的顺序(A、B、C……)搜,还有记

Always_yeye的博客 384

11232131231231是的

11232131231231是的

基于双向Buck-Boost电路的锂电池储能充电+放电控制Simulink仿真

内容概要:本文档详细介绍了一种基于双向Buck-Boost电路的锂电池储能系统充放电控制的Simulink仿真模型,重点实现了充电与放电过程中双向能量流动的精确控制。通过Simulink平台构建完整的电路拓扑与控制系统,采用电压、电流双闭环控制策略,有效提升了系统的稳定性与能量转换效率。文档不仅提供了详细的仿真建模方法,还结合参考文献增强了理论支撑,具有较高的科研与工程应用价值。此外,文中列举了大量电力电子领域的相关仿真资源,涵盖LLC谐振变换器、PFC电路、PWM整流器、状态估计等多种技术方向,形成了一个综合性强、覆盖面广的技术资料库,便于研究人员拓展学习和复用设计。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子系统设计的工程师。; 使用场景及目标:①研究锂电池储能系统的双向能量管理与高效充放电控制策略;②掌握基于Simulink的电力电子系统建模与闭环控制器设计方法;③为科研项目、毕业设计或工程开发提供可复现的仿真案例与技术支持。; 阅读建议:建议结合文档中提供的参考文献与外部资源链接,系统性地学习Buck-Boost电路的工作原理与控制理论,优先理解基础拓扑运行机制后再深入双闭环控制策略的设计与参数整定,同时可参照同系列其他仿真案例进行对比分析与拓展实践。

codeforce447 D SGU 548 贪心+优先队列

codeforce447 D - DZY Loves Modification题意:有一个n*m的矩阵,每次可以选择一行或者一列,可以得到这行或这列的所有元素sum的积分,然后使这一列/行的每一个元素都减少p,接着再选择一行或一列,共操作k次,n,m<=1000,k<=1000000求最多能得到多少积分 思路:每次选择sum最大的行或者列,但是时间复杂度太大,过不去~若选择一行,则...

weixin_30532837的博客 244

【Trans论文复现】基于Agent的电力市场深度决策梯度(深度强化学习)算法建模研究(Python代码实现)

内容概要:本文详细介绍了“Plecs全桥LLC谐振变换器仿真模型”这一技术资源,聚焦于利用PLECS仿真工具对隔离型全桥LLC谐振变换器进行建模、参数设计与性能分析。该资源系统阐述了LLC谐振变换器的工作原理,涵盖谐振参数设计、软开关实现机制、效率优化等关键技术环节,并配套提供了完整的仿真模型、设计报告与计算书,便于用户深入理解其在高效率、软开关功率转换中的优势与应用。研究内容不仅支持理论学习,还可用于控制策略的验证与优化设计,具有较强的工程实践价值。; 适合人群:具备电力电子技术基础知识,从事开关电源、高频功率变换器研发及相关领域研究的工程技术人员与高校研究生。; 使用场景及目标:①用于全桥LLC谐振变换器的教学演示与原理学习;②支持科研人员开展高效DC-DC变换器的建模、仿真与优化设计;③为掌握PLECS在电力电子系统仿真中的高级应用提供详实案例。; 阅读建议:建议结合PLECS仿真软件进行实际操作,通过运行仿真模型并对照设计文档,深入理解电路各模块功能、参数设置依据及软开关实现条件,重点关注谐振腔参数对系统效率与动态响应的影响,以全面提升对LLC变换器工作特性的认知水平与工程设计能力。

[Codeforces Round #447] 894D - Ralph And His Tour in Binary Country(预处理,二分)

Ralph And His Tour in Binary Countrytime limit per test2.5 seconds memory limit per test512 megabytes inputstandard input outputstandard outputRalph is in the Binary Country. The Binary Country cons

Sega_hsj 's Blog 1157

三电平维也纳VIENNA双闭环控制整流器仿真(Simulink仿真实现)

内容概要:本文档系统介绍了“三电平维也纳VIENNA双闭环控制整流器”的Simulink仿真资源,重点涵盖电压电流双闭环控制、中点电位平衡控制及SVPWM调制等核心技术,服务于高精度电力电子系统的建模与优化。资源包不仅包含三相维也纳整流器、双有源桥DAB变换器、LLC谐振变换器等多种典型拓扑的仿真模型,还整合了Mathcad计算书、参考文献、MATLAB代码及设计报告等配套材料,突出科研复现与工程设计双重价值。特别针对控制策略优化、软开关技术实现、最小应力控制等前沿方向提供顶级EI期刊级别的复现案例,强化理论深度与实践指导意义。; 适合人群:面向具备电力电子、自动控制或电气工程等相关专业背景的研究生、科研人员及从事新能源、电力变换系统开发的工程技术人员,尤其适合正在进行高性能整流器与DC-DC变换器研究的专业人士。; 使用场景及目标:①支持高校与科研机构在三电平整流器、功率因数校正(PFC)、DC-DC变换器等领域开展控制系统建模与算法验证;②助力高质量学术论文复现(如EI/SCI期刊)、硕士/博士课题研究、毕业设计及企业级项目开发;③深入掌握SVPWM调制、双闭环动态调节、中点电位平衡控制等关键电力电子控制技术的实现机制与参数整定方法。; 阅读建议:建议结合提供的完整资源目录循序渐进地学习,优先研读控制框图与数学建模部分,理解控制逻辑与参数设计原理后,再通过Simulink平台进行仿真实验与参数调试,注重理论推导与仿真结果的对比分析,全面提升科研创新能力与工程实践能力。

jp-host-release.apk

jp-host-release.apk

Codeforces Round #447 (Div. 2) 题解

题目链接:http://codeforces.com/contest/894 A. QAQ 题意:问你有多少个QAQ子序列 #include using namespace std; int main(){ string s; cin>>s; int ans=0; for(int i=0;i<s.size();i++){ for(int j

I good vegetable a! 453

储能双向Buck-Boost+模型预测电流控制+电压下垂控制仿真【附参考文献】(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的储能双向Buck-Boost变换器仿真模型,重点实现了模型预测电流控制(MPC)与电压下垂控制相结合的先进控制策略。该系统通过精确预测电感电流与动态调节母线电压,有效提升了储能系统在充放电切换过程中的动态响应速度、运行稳定性与抗扰动能力。模型充分考虑了实际应用场景中的非理想因素,结合参考文献进行了算法优化与参数设计,增强了方案的技术可行性与工程实用价值,适用于微电网、分布式能源系统及多储能单元并联运行的能量协调管理。; 适合人群:电气工程、自动化、新能源技术及相关领域的科研人员、研究生以及从事电力电子变换器与智能电网控制系统研发的工程师。; 使用场景及目标:①深入研究双向DC-DC变换器在储能系统中的高性能控制方法;②掌握模型预测控制与下垂控制的协同设计原理及其在复杂工况下的动态调节机制;③为微电网能量管理、多源协同控制、电压频率支撑等关键技术提供可靠的仿真验证平台。; 阅读建议:建议结合提供的Simulink模型与参考文献进行系统学习,重点关注控制器结构设计、预测模型建立及控制参数整定过程,可通过调整负载突变、设定不同工作模式等方式开展仿真实验,深入理解控制策略的鲁棒性与适应性表现。

上一篇: hdu 6092 Rikka with Subset(逆向01背包+思维)
下一篇: Codeforces Round #447 (Div. 2) E DAG+scc (未敲)
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值