Remainder Problem
2024-10-06 21:01:10
这个其实并不难,只是看看考察有没有分块的思路
思路:用一个
ans[i][j]
来记录所有k=(1~5e5)
中所有a[k]%i==j
的和,在查询的时候可以达到复杂度位O(1)当然因为数据很大,不能够分很多块,而且也没有必要分很多块,因为如果在进行
2
操作的时候,如果x=1e5,y=1e5-1
,那么在数据范围内只有五个数满足条件,可以每次跳过x
个数计算值的和,操作:ll Ans=0;
for(int i=y;i<=int(5e5);i+=x) Ans+=a[i];
cout<<Ans<<endl;
另外:还发现了,在输出换行的时候使用
cout<<'\n'
会比cout<<endl
块很多,甚至差一倍,因为cout<<endl
还要清空缓存区,所以会慢一点
代码:
// Created by CAD on 2019/8/24.
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int blo=280;
const int maxn=5e5+5;
ll ans[blo+5][blo+5];
int a[maxn];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int t; cin>>t;
while(t--)
{
int op,x,y; cin>>op>>x>>y;
if(op==1)
{
a[x]+=y;
for(int i=1;i<=blo;++i) ans[i][x%i]+=y;
}
else
{
if(x<=blo) cout<<ans[x][y]<<'\n';
else
{
ll Ans=0;
for(int i=y;i<=int(5e5);i+=x) Ans+=a[i];
cout<<Ans<<'\n';
}
}
}
return 0;
}
最新文章
- socket编程知识
- Day Tips:Remote 服务器黑屏
- HashMap常用方法
- Python Base HTTP Server
- phpstorm取消自动保存并标识修改的文件为星星标记
- Java控制语句——if语句
- 用于MySql的SqlHelper
- VB.NET中使用代表对方法异步调用
- 九度OJ 1163 素数
- 产品设计中先熟练使用铅笔 不要依赖Axure
- Sublime Text 2 自动开启换行 Word Wrap
- android软键盘的管理和属性的设置
- HDU 4454 - Stealing a Cake(三分)
- SpringData系列四 @Query注解及@Modifying注解
- opencv 离线文档下载地址在哪里?
- chrome的console功能
- Python os.access() 方法
- tips:Jquery的attr和prop的区别
- Spring 异常处理三种方式 @ExceptionHandler
- ajax与文件上传
热门文章
- JS基础_自增自减练习
- opencv+ linux + cmake 生成 opencv静态库
- 微信小程序返回箭头跳转到指定页面
- 编辑docker容器中的文件
- 第六篇.文件处理之python2和3字符编码的区别
- [转] - Linux中使用alternatives切换Jdk版本
- apache简介与安装
- maven报错 java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector, see the following errors
- SDK更新失败问题解决
- Java语言基础(12)