news 2026/4/21 15:31:32

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/17 1:38:05

西门子1200立库机器人码垛机伺服视觉AGV程序大揭秘

西门子1200立库机器人码垛机伺服视觉AGV程序 包括2台西门子PLC1215程序和2台西门子触摸屏TP700程序 PLC与工业相机视觉定位及机器人使用Modbus TCP通讯 PLC和码垛机Modbus TCP通讯&#xff08;SCL语言&#xff09; PLC和4台G120变频使用Profinet通讯 1个伺服轴&#xff0c;AGV …

作者头像 李华
网站建设 2026/4/16 13:09:19

基于 MATLAB 的一维数据二分类

基于MATLAB的一维数据二分类在数据分析和机器学习的世界里&#xff0c;二分类问题是最基础也是最常见的任务之一。今天咱们就来聊聊如何使用 MATLAB 对一维数据进行二分类。 问题背景 假设我们有一组一维的数据&#xff0c;这些数据可以是各种测量值&#xff0c;比如温度、压力…

作者头像 李华
网站建设 2026/4/17 11:48:33

基于主从博弈理论的共享储能与综合能源微网优化运行研究

MATLAB代码&#xff1a;基于主从博弈理论的共享储能与综合能源微网优化运行研究 关键词&#xff1a;主从博弈 共享储能 综合能源微网 优化调度 参考文档&#xff1a;《基于主从博弈理论的共享储能与综合能源微网优化运行研究》完全复现 仿真平台&#xff1a;MATLAB yalmipcple…

作者头像 李华
网站建设 2026/4/19 8:07:44

YOLO模型训练成本太高?试试我们的低成本高性能算力方案

YOLO模型训练成本太高&#xff1f;试试我们的低成本高性能算力方案 在智能制造工厂的质检线上&#xff0c;一台搭载AI视觉系统的机械臂正高速运转——它需要在毫秒级时间内识别出电路板上的微小焊点缺陷。这类对实时性与精度双高要求的任务&#xff0c;如今大多由YOLO系列模型驱…

作者头像 李华
网站建设 2026/4/17 12:46:27

YOLO实时性背后的秘密:浅析网格预测与锚框机制

YOLO实时性背后的秘密&#xff1a;浅析网格预测与锚框机制 在智能制造车间的一条高速SMT贴片线上&#xff0c;每分钟有数百块PCB板流过检测工位。摄像头捕捉图像后&#xff0c;系统必须在15毫秒内完成缺陷识别——是虚焊、错件还是缺件&#xff1f;任何延迟都会导致整条产线停摆…

作者头像 李华
网站建设 2026/4/21 11:21:11

异步电机软启动/软起动(调压调速) (基于导通角或者关断角控制的斜坡电压软启动,功率因数闭环软...

异步电机软启动/软起动&#xff08;调压调速&#xff09; &#xff08;基于导通角或者关断角控制的斜坡电压软启动&#xff0c;功率因数闭环软启动&#xff09;。 提供说明及资料。 异步电机软启动这事儿&#xff0c;说白了就是让电机别一上来就猛冲。直接全压启动的电流冲击能…

作者头像 李华