分块——cf1207F
2024-09-06 00:01:38
这么傻逼的题当时想了那么久
用a数组维护原序列,b[i][j]表示 pos%i=j 的 a[pos]之和
对于每个修改1 x y,先直接修改a[x],然后枚举i=1..700,修改b[i][x%i]
对于每个查询2 x y,如果x>700,那么我们直接去a数组里枚举i=kx+y,
如果x<700,b[x][y]就是答案
#include<bits/stdc++.h>
using namespace std;
#define N 500005
#define ll long long
ll a[N],b[][];
int q;
int main(){
cin>>q;
while(q--){
int op,x,y;
scanf("%d%d%d",&op,&x,&y);
if(op==){
a[x]+=y;
for(int i=;i<=;i++)
b[i][x%i]+=y;
}
if(op==){
ll ans=;
if(x>){
for(int i=y;i<=;i+=x)
ans+=a[i];
}
else ans=b[x][y];
cout<<ans<<endl;
}
}
}
最新文章
- [java]OutOfMemoryError 原因及解决办法
- Service 与 Thread 的区别
- 关于FastStone Capture输入中文出现乱码.
- storm spout的速度抑制问题
- Mysql转化blob为可读
- 全方位解读";CPU load average";
- Maven项目构建管理
- cubeui
- 面试2——java基础2
- git merge以及比较两个repo
- java 遍历指定目录下的文件夹并查找包含指定关键字的文件
- 7.1 服务暴露前的准备-ServiceBean的装配
- MySql log_bin
- 继承方法-->;call继承
- Wireframe Process
- flask插件系列之flask_cors跨域请求
- RHCE7 学习里程-2.telnet 服务配置
- 【Android】Android之Copy and Paste
- html调用commonjs规范的js
- luogu P1651 塔