让题面也变得音游起来,紧扣题目标题。
  • 板块P5891 Fracture Ray
  • 楼主Kenton
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/6/30 11:20
  • 上次更新2025/6/30 11:28:10
查看原帖
让题面也变得音游起来,紧扣题目标题。
1256270
Kenton楼主2025/6/30 11:20

有一个 long long 类型的数组 a[]。

在Hikari进行所有操作之前,给定上界参数 v。

Hikari将进行 q 次操作。每次操作为以下两个函数之一:

void Fracture(int u,int p) { for (int i=u;i<=v;i+=count(i)) a[i]+=p; } long long killTairitsu(long long u) { long long ret=0; for (int i=u;i<=v;i+=count(i)) ret+=a[i]; return ret; } 上述程序为 C++ 代码,其中 count(i) 表示 i 二进制下 1 的个数,例如 count(0) 的返回值为 0,而 count(10001279) 的返回值为 15。补充:__builtin_popcount(int)可解决count(i)

上述程序中出现的变量 v 即上界参数 v。

Hikari将执行上述操作,并在每次执行 killTairitsu() 函数后,输出函数的返回值。

输入格式 从标准输入中读取数据。

第一行,两个正整数 q,v,表示操作数,以及上界参数。

接下来 q 行,每行为以下二者之一:

1 u p 表示执行 Fracture(u, p); 2 u 表示执行 killTairitsu(u) 并输出一行一个整数,为函数的返回值。 输出格式 在每次执行 killTairitsu() 函数后,输出函数的返回值。

本人已pure memory此题(人话:AC了),但是ftr11只有986(悲

2025/6/30 11:20
加载中...