d数组是来算(x整除y)*y中y比x小的数

s数组是算(x整除y)*y中y比x大的数

(x整除y)*y    看x对于前面大于他的数是枚举,对于前面小于他的数是d树状数组储存。

d中 x整除y表示x中有多少个y 所以 每个y对于他的倍数都加上y 比如d【y】+y ,d【y*2】+y...d【y*n】+y;当一个比y大的x要求(x整除y)*y的时候就可以根据d【x】来求

{要还是不明白的话就设y=3,x=10 (10/3)*3=9=3+3+3 =d【3】+d【6】+d【9】这真的很巧妙。这样每个数字对于他后面的数字的贡献就可以确定了。就是这个意思。}

那样就看代码吧。

#include<iostream>
#include<cstdio>
using namespace std;typedef long long ll;
const int N=1e6+10;
ll d[N],s[N],ans,sum,num;     //d  s 是上述的意思;  void add(ll *x,int k,int p)
{while(k<N)x[k]+=p,k+=k&-k;
}
ll ask(ll *x,int k)
{ll ans=0;while(k)ans+=x[k],k-=k&-k;return ans;
}int main()
{int n;scanf("%d",&n);for(int i=0;i<n;i++){scanf("%lld",&num);ans+=1ll*num*i+sum;     sum+=num;ans-=ask(d,num);  //这里是求(x整除y)*y中 小与num的数; for(int j=num;j+num<N;j+=num) //枚举num的倍数 {ans-=1ll*(ask(s,j+num-1)-ask(s,j-1))*j; //枚举num的倍数  s存的是数量,求j-num-1到j-1的数量,这段中那个式子等于j; add(d,j,num);//到时候不懂再说; }add(s,num,1); //num的数量+1; printf("%lld ",ans);}return 0;} 

F-Pairwise Modulo相关推荐

  1. codeforces 7.22 F Pairwise Modulo

    codeforces 7.22 F Pairwise Modulo 给出n个数的数列a,每个数互不相同且都小于3e5,求出qk=∑1<=i,j<=kaimodajq_k=\sum_{1&l ...

  2. Harbour.Space Scholarship Contest 2021-2022 F. Pairwise Modulo 逆向思维 + 树状数组

    传送门 文章目录 题意 思路: 题意 给定一个不同数组成的序列aaa,定义pkp_kpk​为pk=∑i=1k∑j=1kaimodajp_k=\sum_{i=1}^k\sum_{j=1}^ka_i\bm ...

  3. codeforces1553 F. Pairwise Modulo(数学)

    F. Pairwise Modulo 想到了,但又没完全想到..wtcl 首先 pk=pk−1+∑1≤i<kakmodai+∑1≤i<kaimodakp_k=p_{k-1}+\sum_{1 ...

  4. CodeForces - 1553F Pairwise Modulo(数论+树状数组)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,求 pk=∑1≤i,j≤kaimodajp_k = \sum_{1 \le i, j \le k} a_i \bmod a_jpk​=∑1 ...

  5. Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2)

    Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2) 题号 题目 知识点 A ...

  6. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 F

    f(cos(x))=cos(n∗x) holds for all xxx. Given two integers nnn and mmm, you need to calculate the coef ...

  7. 245热图展示微生物组的物种和功能丰度或有无、距离矩阵

    245热图展示微生物组的物种和功能丰度或有无 本节作者:吴一磊 中科院微生物所 版本1.0.7,更新日期:2020年8月13日 本项目永久地址:https://github.com/YongxinLi ...

  8. Tutorial of Codeforces Round 729 (Div.2)

    文章目录 A 题目 C++代码 B 题目 分析 C++代码 C 题目 C++代码 A 题目 Example input 5 2 2 3 4 5 3 2 3 4 5 5 5 1 2 4 1 2 3 4 ...

  9. 2018 11.1 PION 模拟赛

    期望:250  100+100+50 实际:210   80+100+30 期望:100   实际:80 最后:两个点T了.可能是求逆元的方法太慢了,也可能是闲的又加了一个快速乘的原因. #inclu ...

  10. 矩阵快速幂2Jzzhu and Sequences Recurrences Contemplation! Algebra Reading comprehension

    来!接着写题解,立个flag:矩阵快速幂题解不写完今晚不睡觉! 此题解是接着矩阵快速幂1写的,此篇有哪里写不清楚的地方导致看不懂的可以先看1:https://blog.csdn.net/qq_4536 ...

最新文章

  1. 合种樟子松、云杉和胡杨
  2. linux shell用户交互,鱼 - 一个明智的和用户友好的交互式shell为Linux
  3. 几个有用的word小技巧,保准提升效率~
  4. 在fritzing中怎么导入_电路图制作软件(Fritzing)
  5. 平均负载及CPU上下文切换
  6. 算法导论-VLSI芯片测试问题
  7. 解决微信小程序的video元素层级太高无法遮盖问题
  8. Linux字符集的修改方法
  9. 用python画玫瑰花-使用Python画一朵玫瑰花
  10. 系统学习深度学习(十一)--dropout,dropconect
  11. 【NOIP 模拟赛】Evensgn 剪树枝 树形dp
  12. [Cocoa]深入浅出 Cocoa 之消息
  13. PAT Basic Level 1072 开学寄语 (20 分)
  14. Super Enhancer(超级增强子)分析——ROSE包(v1.3.1)的安装及使用详解
  15. 项目管理工具二、STAR原则
  16. 数论:欧几里得与扩展欧几里得算法
  17. 基于51单片机的指纹解锁自动开门
  18. 如何让您的第一个物联网产品成功
  19. Java顺序栈的初始化_java - Java类变量初始化的顺序是什么? - 堆栈内存溢出
  20. 使用easyBCD在Win10下安装Ubuntu16.04LS双系统详细教程

热门文章

  1. UVa 815 Flooded
  2. flutter 刷脸_传说哥教你如何假装架构师
  3. qq小程序绑定服务器,QQ小程序 用户信息
  4. 为什么BAT公司宁愿花25K重新招人,也不愿花20K留住老员工?
  5. 全球 26 个主流视频网站高清视频下载全搞定,包括 P 站!
  6. python爬虫英文单词_非常适合新手的一个Python爬虫项目:打造一个英文词汇量测试脚本...
  7. 考研词汇测试软件,考研词汇 - 在线打字测试(dazi.kukuw.com)
  8. html判断是否在微信里打开,JavaScript判断浏览器内核,微信打开自动提示在浏览器打开...
  9. C语言文件重定向---“系统找不到指定的文件”
  10. my music / NightWish / Groove Coverage / DJ