https://www.luogu.org/problemnew/show/P4868

题目大意

单点修改,查询前缀前缀和。

分析

遇到了单点修改,前缀和,很明显是要树状数组维护解决问题。
请看以下我的数列的转换

\[s1+s2+s3+ \cdots +sn\]

\[a1+a1+a2+a1+a2+a3+ \cdots +an\]

\[a1*n+a2*(n-1)+a3*(n-2)+...an*1\]

\[(a1+a2+a3+...+an) \times N - (a2+a3^2+a4^3+...+an^{n-1})\]

ac代码

  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define ms(a, b) memset(a, b, sizeof(a))
  4. #define inf 0x3f3f3f3f
  5. #define N 100005
  6. using namespace std;
  7. template <typename T>
  8. inline void read(T &x) {
  9. x = 0; T fl = 1;
  10. char ch = 0;
  11. while (ch < '0' || ch > '9') {
  12. if (ch == '-') fl = -1;
  13. ch = getchar();
  14. }
  15. while (ch >= '0' && ch <= '9') {
  16. x = (x << 1) + (x << 3) + (ch ^ 48);
  17. ch = getchar();
  18. }
  19. x *= fl;
  20. }
  21. struct bittree {
  22. #define lowbit(x) (x&(-x))
  23. ll tr[N];
  24. int n;
  25. void add(int k, ll val) {
  26. for (int i = k; i <= n; i += lowbit(i))
  27. tr[i] += val;
  28. }
  29. ll query(int x) {
  30. ll res = 0;
  31. for (int i = x; i; i -= lowbit(i))
  32. res += tr[i];
  33. return res;
  34. }
  35. }tr1, tr2;
  36. int n, m;
  37. ll a[N];
  38. int main() {
  39. read(n); read(m);
  40. tr1.n = tr2.n = n;
  41. for (int i = 1; i <= n; i ++) {
  42. read(a[i]);
  43. tr1.add(i, a[i]);
  44. tr2.add(i, a[i] * (i - 1));
  45. }
  46. while (m --) {
  47. char opt[10];
  48. scanf("%s", opt);
  49. ll x, y;
  50. if (opt[0] == 'Q') {
  51. read(x);
  52. printf("%lld\n", (ll)(tr1.query(x) * x) - 1ll * tr2.query(x));
  53. }
  54. else {
  55. read(x); read(y);
  56. tr1.add(x, y - a[x]);
  57. tr2.add(x, (y - a[x]) * (x - 1));
  58. a[x] = y;
  59. }
  60. }
  61. return 0;
  62. }

[luogu4868]Preprefix sum的更多相关文章

  1. [bzoj3155]Preprefix sum(树状数组)

    3155: Preprefix sum Time Limit: 1 Sec  Memory Limit: 512 MBSubmit: 1183  Solved: 546[Submit][Status] ...

  2. BZOJ 3155: Preprefix sum( 线段树 )

    刷刷水题... 前缀和的前缀和...显然树状数组可以写...然而我不会, 只能写线段树了 把改变成加, 然后线段树维护前缀和, 某点p加, 会影响前缀和pre(x)(p≤x≤n), 对[p, n]这段 ...

  3. Preprefix sum BZOJ 3155 树状数组

    题目描述 前缀和(prefix sum)Si=∑k=1iaiS_i=\sum_{k=1}^i a_iSi​=∑k=1i​ai​. 前前缀和(preprefix sum) 则把SiS_iSi​作为原序列 ...

  4. 3155: Preprefix sum

    3155: Preprefix sum https://www.lydsy.com/JudgeOnline/problem.php?id=3155 分析: 区间修改,区间查询,线段树就好了. 然后,这 ...

  5. 差分+树状数组【p4868】Preprefix sum

    Description 前缀和(prefix sum)\(S_i=\sum_{k=1}^i a_i\). 前前缀和(preprefix sum) 则把\(S_i\)作为原序列再进行前缀和.记再次求得前 ...

  6. 树状数组【bzoj3155】: Preprefix sum

    3155: Preprefix sum 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3155 把给出的a_i当成查分数组d_i做就可以了 ...

  7. 2021.08.09 P4868 Preprefix sum(树状数组)

    2021.08.09 P4868 Preprefix sum(树状数组) P4868 Preprefix sum - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 前缀和(pr ...

  8. BZOJ3155: Preprefix sum

    题解: 写过树状数组搞区间修改和区间求和的就可以秒出吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath& ...

  9. BZOJ 3155: Preprefix sum

    大意:给一个数组,先求出SUM[I],然后动态的求出1-I的SUM[I]的和, 这题得化公式: 树状数组维护两个和:SUM(A[I])(1<=I<=X); SUM(A[I]*(N-I+1) ...

随机推荐

  1. 多线程-synchronized、lock

    1.什么时候会出现线程安全问题? 在多线程编程中,可能出现多个线程同时访问同一个资源,可以是:变量.对象.文件.数据库表等.此时就存在一个问题: 每个线程执行过程是不可控的,可能导致最终结果与实际期望 ...

  2. Luogu P2002 消息扩散&&P1262 间谍网络

    怕自己太久没写Tarjan了就会把这种神仙算法忘掉. 其实这种类型的图论题的套路还是比较简单且显然的. P2002 消息扩散 很显然的题目,因为在一个环(其实就是强连通分量)中的城市都只需要让其中一个 ...

  3. 51nod 1295 XOR key 可持久化01字典树

    题意 给出一个长度为\(n\)的正整数数组\(a\),再给出\(q\)个询问,每次询问给出3个数,\(L,R,X(L<=R)\).求\(a[L]\)至\(a[R]\)这\(R-L+1\)个数中, ...

  4. Spring Cloud 入门教程(五): Ribbon实现客户端的负载均衡

    接上节,假如我们的Hello world服务的访问量剧增,用一个服务已经无法承载, 我们可以把Hello World服务做成一个集群. 很简单,我们只需要复制Hello world服务,同时将原来的端 ...

  5. cmd命令入门

    第一类: 介绍原生的DOS 首先在cmd命令输入help,看到如下图的结果,这里展示的原生的DOS命令. 这里列出了一些命令,可以自己试试的玩.一般看到一个命令后,如果没有说明文档,你就尝试的在其命令 ...

  6. 这里已不再更新,访问新博客请移步 http://www.douruixin.com

    这里已不再更新,访问新博客请移步 http://www.douruixin.com

  7. 百度之星-1002-list应用

    用stl的list即可,注意...代码的简洁性(被debug伤痛)注意合并时可以手动pop,或者用splice进行合并,不能用merge!!!merge合并是自带排序!!! #include<b ...

  8. 【Alpha阶段】展示博客发布!

    1.团队成员简介 Email:qianlxc@126.com Free time:8:00 7:00 a.m ~ 11:00 12:00p.m Introduction: 我是一个热情的人.开朗的人. ...

  9. varnish页面缓存服务

    varnish页面缓存服务 https://www.cnblogs.com/L-dongf/p/9310144.html http://blog.51cto.com/xinzong/1782669 阅 ...

  10. Beta 冲刺 随笔合集

    团队展示: Team一二一 Beta 冲刺 凡事预则立 Beta冲刺 一 Beta冲刺 二 Beta冲刺 三 Beta冲刺 四 Beta冲刺 五 Beta冲刺 六 Beta冲刺 七 Beta总结 用户 ...