news 2026/4/9 5:03:53

ABC round 438 E st倍增

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABC round 438 E st倍增

Problem Statement

There are N people and N buckets. Both the people and buckets are numbered 1,2,…,N.

Initially, person i holds only bucket i, and bucket i is empty.

From now on, the following operation will be performed 109 times:

  • For i=1,2,…,Nsimultaneously, person i adds i units of water to each of the buckets they are holding and passes those buckets to person Ai​.

Here, there is no limit on the amount of water that can be put in a bucket.

For i=1,2,…,Q, answer the following queries:

  • Find the amount of water in bucket Bi​ immediately after the Ti​-th operation.

问题陈述

  • 有 N 人和 N 桶。人和水桶的编号都是 1,2,…,N 。

    最初,人 i 只持有水桶 i ,而水桶 i 是空的。

    从现在起,将执行以下操作 109 次:

  • 对于 i=1,2,…,N同时*, i 将 i 个单位的水添加到他们手中的每个水桶中,并将这些水桶递给 Ai​ 。
  • 在这里,水桶中的水量没有限制。

    对于 i=1,2,…,Q ,请回答下列问题:

  • 求 Ti​ /-操作后,水桶 Bi​ 中的水量。

Input

The input is given from Standard Input in the following format:

N Q A1​ A2​ … AN​ T1​ B1​ T2​ B2​ ⋮ TQ​ BQ​

Output

Output Q lines. The i-th line should contain the answer to the i-th query.

我们设st[i][j]表示i 拿到水桶后 经过1<<j时间 水桶传递给谁 sum[i][j] 表示从i拿到某个水桶后 1<<j这个时间后 水桶的增加量 然后进行查询即可

#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N=2e5+5; ll sum[N][30],st[N][30]; int n,q; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>q; for(int i=1;i<=n;i++){ cin>>st[i][0]; sum[i][0]=i; } for(int i=1;i<30;i++){ for(int j=1;j<=n;j++){ st[j][i]=st[st[j][i-1]][i-1]; sum[j][i]=sum[st[j][i-1]][i-1]+sum[j][i-1]; } } while(q--){ ll res=0; ll t,b; cin>>t>>b; for(int i=0;i<30;i++){ if(t&(1LL<<i)){ res+=sum[b][i]; b=st[b][i]; } } cout<<res<<'\n'; } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/7 11:52:43

安防监控+YOLO完美组合?揭秘高并发场景下的Token使用优化

安防监控与YOLO的深度协同&#xff1a;高并发场景下的Token机制优化之道 在智慧交通、城市天网和大型园区安防等现实场景中&#xff0c;成百上千路摄像头同时运行已成常态。面对如此庞大的视频流输入&#xff0c;系统不仅要“看得清”&#xff0c;更要“反应快”——这正是现代…

作者头像 李华
网站建设 2026/3/31 9:25:49

Matlab实现基于双闭环PID控制的一阶倒立摆系统设计

Matlab 基于双闭环PID控制的一阶倒立摆控制的系统设计实验完整版&#xff0c;源文件&#xff0c;仿真图&#xff0c;实验报告&#xff0c;东西都在视频里最近做了个超有趣的实验——Matlab基于双闭环PID控制的一阶倒立摆控制的系统设计&#xff0c;迫不及待想跟大家分享。实验相…

作者头像 李华
网站建设 2026/4/2 3:24:21

三电平BUCK变换器仿真:电压闭环与中点平衡控制之旅

三电平BUCK变换器仿真&#xff0c;电压闭环控制&#xff0c;带中点平衡控制。最近在研究电力电子领域的三电平BUCK变换器&#xff0c;这玩意儿可有点意思&#xff0c;今天就来和大家唠唠它的电压闭环控制以及中点平衡控制&#xff0c;顺便分享下仿真相关的事儿。 三电平BUCK变换…

作者头像 李华
网站建设 2026/4/6 22:37:50

含电热联合系统的微电网运行优化:MATLAB 代码实现

MATLAB代码&#xff1a;含电热联合系统的微电网运行优化 关键词&#xff1a;微网 电热联合系统 优化调度 [火]参考文档&#xff1a;《含电热联合系统的微电网运行优化》完全复现 仿真平台&#xff1a;MATLAB yalmipcplex [火]主要内容&#xff1a;提出基于电热联合调度的区域并…

作者头像 李华
网站建设 2026/4/3 6:02:11

基于考虑位错攀移的晶体塑性(CPFE)蠕变模拟

基于考虑位错攀移的晶体塑性&#xff08;CPFE&#xff09;蠕变模拟在材料科学领域&#xff0c;对晶体材料在高温下的蠕变行为进行精准模拟至关重要。晶体塑性有限元&#xff08;CPFE&#xff09;方法为我们研究这一现象提供了有力的工具&#xff0c;而考虑位错攀移则能让模拟更…

作者头像 李华