两个操作

1对x位置的a[x]+y

2对所有i=y(mod x)求a[i]的和

我们肯定不能n^2 跑,稳超时,但是我们可以这样分块考虑。

为什么n^2不行?因为在x比较小的时候,这个求和操作次数太多了。但是x比较大的时候,这个对时间并没有什么影响

所有我们考虑分块。

用一个dp[i][j]表示(1-5e5的长度分成了长度为x的块,且块内偏移为j)的所有位置的和。

那么操作1,对a[pos]+=x后,需要对所有块长1到sqrt(len)的pos所处的块内偏移位置进行维护,以保证在询问块长1-sqrt(len)的时候,我们都能o(1)回答

如果块长大于sqrt(len)后,我们数组已经开不下,并且维护的时间将超出O(sqrt(5e5)) ,我们考虑直接暴力

因为此时块长大于sqrt(len)后,我们暴力加和的次数最大也就sqrt(5e5),并且随着块长数越大,次数也就越少

通过这个两种情况,我们就把时间复杂度下降到了o(sqrt(5e5))=700*5e5次查询,4秒也是可以接受的。(其实我感觉是接受不了的,谁叫cf跑的快)。。。

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 5e5+;
LL dp[][];
LL a[maxn];
int main(){
int t,op;
LL x,y;
scanf("%d",&t);
while(t--){
scanf("%d",&op);
if(op==){
scanf("%lld%lld",&x,&y);
a[x]+=y;
for(int i=;i<;i++){
dp[i][x%i]+=y;
}
}else {
scanf("%lld%lld",&x,&y);
if(x<){
printf("%lld\n",dp[x][y]);
}else {
LL ans=;
for(int i=y;i<=5e5;i+=x){
ans+=a[i];
}
printf("%lld\n",ans);
}
}
}
return ;
}

E. Remainder Problem 分块的更多相关文章

  1. Remainder Problem

    F. Remainder Problem 这个其实并不难,只是看看考察有没有分块的思路 思路:用一个ans[i][j]来记录所有k=(1~5e5)中所有a[k]%i==j的和,在查询的时候可以达到复杂 ...

  2. Remainder Problem(分块) Educational Codeforces Round 71 (Rated for Div. 2)

    引用:https://blog.csdn.net/qq_41879343/article/details/100565031 下面代码写错了,注意要上面这种.查:2  800  0,下面代码就错了. ...

  3. Educational Codeforces F. Remainder Problem

    [传送门] 题意就是单点加以及查询下标为等差数列位置上的值之和.刚开始看到这道题.我以为一个数的倍数是log级别的.就直接写了发暴力.就T了.还在想为啥,优化了几发才发现不太对劲.然后才想到是$\df ...

  4. Educational Codeforces Round 71 (Rated for Div. 2)

    传送门 A.There Are Two Types Of Burgers 签到. B.Square Filling 签到 C.Gas Pipeline 每个位置只有"高.低"两种状 ...

  5. [Codeforces Educational Round 71]Div. 2

    总结 手速场...像我这种没手速的就直接炸了... 辣鸡 E 题交互,少打了个 ? 调了半个小时... 到最后没时间 G 题题都没看就结束了...结果早上起来被告知是阿狸的打字机...看了看题一毛一样 ...

  6. Educational Codeforces Round 71

    https://www.cnblogs.com/31415926535x/p/11460682.html 上午没课,做一套题,,练一下手感和思维,,教育场的71 ,,前两到没啥,,后面就做的磕磕巴巴的 ...

  7. Educational Codeforces Round 71 (Rated for Div. 2) Solution

    A. There Are Two Types Of Burgers 题意: 给一些面包,鸡肉,牛肉,你可以做成鸡肉汉堡或者牛肉汉堡并卖掉 一个鸡肉汉堡需要两个面包和一个鸡肉,牛肉汉堡需要两个面包和一个 ...

  8. CF Edu Round 71

    CF Edu Round 71 A There Are Two Types Of Burgers 贪心随便模拟一下 #include<iostream> #include<algor ...

  9. Educational Codeforces Round 71 (Rated for Div. 2)-F. Remainder Problem-技巧分块

    Educational Codeforces Round 71 (Rated for Div. 2)-F. Remainder Problem-技巧分块 [Problem Description] ​ ...

随机推荐

  1. Log4j---文件解析以及语法使用

    Log4j------是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程 ...

  2. GIT → 03:Git的下载和安装

    3.1 Git 下载 官网:https://git-scm.com/ 软件下载地址:https://git-scm.com/downloads 根据自己电脑版本下载对应版本: 3.2 Git 安装 3 ...

  3. IO流2 --- File类的常用方法1 --- 技术搬运工(尚硅谷)

    File类的获取功能 @Test public void test2(){ File file1 = new File("hello.txt"); File file2 = new ...

  4. vue+ElementUI项目中,上传控件为必填项,上传图片后清空提示信息

    (ps:以下是我在项目中遇到得问题及解决方法,希望对你们有帮助.如果还有其他方法,可以留言,谢谢) 一个表单页面,使用element-ui中el-upload上传图片,此项为必填项,然后写了校验规则, ...

  5. webstorm/phpstorm破解版教程网址

    http://idea.lanyus.com/ http://www.php.cn/tool/phpstorm/408348.html 如果正版到期了,重新安装不能再次免费试用的话,之后我就用老版的w ...

  6. hdu 1045 Fire Net(二分匹配 or 暴搜)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  7. JS---案例:手风琴 (利用封装好的动画函数)

    案例:手风琴     封装好的动画函数在common.js里面     //function getStyle(element, attr) {...}     //function animate( ...

  8. 官方支持的全新版Neo4j-JDBC驱动3.0

    原文:The All-New, Officially Supported Neo4j-JDBC Driver 3.0 作者: Michael Hunger 译者:仲培艺,关注数据库领域,纠错.寻求报道 ...

  9. Hashkell 第一篇

    心情极差.................. 无事可做,其实是没心情去做事情,只好又翻起了haskell入门 记下几点,以备查询: 1. 函数名首字符是不可以大写的, 而且名称中可以有单引号,这也是合 ...

  10. Directx11教程(62) tessellation学习(4)

    原文:Directx11教程(62) tessellation学习(4)       现在看看四边形在不同tess factor时,四边形细分的细节,下图是tess factor1-8时候的细分.te ...