F. Remainder Problem

这个其实并不难,只是看看考察有没有分块的思路

思路:用一个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;
}

最新文章

  1. socket编程知识
  2. Day Tips:Remote 服务器黑屏
  3. HashMap常用方法
  4. Python Base HTTP Server
  5. phpstorm取消自动保存并标识修改的文件为星星标记
  6. Java控制语句——if语句
  7. 用于MySql的SqlHelper
  8. VB.NET中使用代表对方法异步调用
  9. 九度OJ 1163 素数
  10. 产品设计中先熟练使用铅笔 不要依赖Axure
  11. Sublime Text 2 自动开启换行 Word Wrap
  12. android软键盘的管理和属性的设置
  13. HDU 4454 - Stealing a Cake(三分)
  14. SpringData系列四 @Query注解及@Modifying注解
  15. opencv 离线文档下载地址在哪里?
  16. chrome的console功能
  17. Python os.access() 方法
  18. tips:Jquery的attr和prop的区别
  19. Spring 异常处理三种方式 @ExceptionHandler
  20. ajax与文件上传

热门文章

  1. JS基础_自增自减练习
  2. opencv+ linux + cmake 生成 opencv静态库
  3. 微信小程序返回箭头跳转到指定页面
  4. 编辑docker容器中的文件
  5. 第六篇.文件处理之python2和3字符编码的区别
  6. [转] - Linux中使用alternatives切换Jdk版本
  7. apache简介与安装
  8. maven报错 java.lang.RuntimeException: com.google.inject.CreationException: Unable to create injector, see the following errors
  9. SDK更新失败问题解决
  10. Java语言基础(12)