题面传送门

我们可以画图找规律

这里没图,要看图可以去看M_sea dalao的题解(逃

可以发现单个节点\(i\)对答案的贡献为该节点的点权\(*\frac{1}{2^{dep_i}}\)(\(dep_i\)为从上往下\(i\)节点所在的层数-1,也就是深度,令根节点的\(dep=0\))

我们可以发现,所有叶子节点的深度都是最大深度(记为\(ma\))或者最大深度-1,所以除开最下面一层,从上往下第\(i\)层的贡献都是序列中所有数之和\(*\frac{1}{2^{i-1}}\),最下面一层的每个叶子节点的贡献就是点权\(*\frac{1}{2^{ma}}\).为了方便,下面算答案时把所有数\(*2^{ma}\),输出的时候再除掉

我们先预处理最初的答案,记\(b=\sum_{j=1}^{ma}2^j\),序列中第\(i\)个数的贡献为\(a_i*(b+[dep_{i\text{在线段树中对应的叶子节点}}=ma])\)(如果是最后一层就多加上\(a_i\)是吧) 这里字不太好看先憋着

每次的区间加法,记\(c=\)区间内深度为\(ma\)的叶子节点个数,可以发现答案加上了\(x*(r-l+1)*b+x*c\)

最后答案要\(/2^{ma}*qwq\),并且注意将\(2^{ma}\)和\(qwq\)约分,不然会爆\(long\ long\)

我做题时居然那啥到强行用树状数组求前缀和qwq

// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define LL long long
#define il inline
#define re register
#define db double
#define max(a,b) ((a)>(b)?(a):(b)) using namespace std;
const int N=1000000+10;
il LL rd()
{
re LL x=0,w=1;re char ch=0;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
#define lc (o<<1)
#define rc ((o<<1)|1)
#define mid ((l+r)>>1) int n,m,a[N],mm;
LL qwq,b=1,ans,c[N];
void init(int k,int l,int r)
{
if(l==r){mm=max(mm,a[l]=k);return;}
init(k+1,l,mid),init(k+1,mid+1,r);
}
il LL gcd(LL a,LL b){return b?gcd(b,a%b):a;} int main()
{
n=rd(),m=rd(),qwq=rd();
init(0,1,n);
b=(1ll<<(mm+1))-2; //这就是题解中的b
for(re int i=1;i<=n;i++)
{
LL x=rd();
ans+=x*b;
c[i]+=c[i-1];
if(a[i]==mm) ++c[i],ans+=x;
}
mm=1ll<<mm;
LL gg=gcd(mm,qwq);mm/=gg,qwq/=gg;
for(re int i=1;i<=m;i++)
{
int l=rd(),r=rd();
LL x=rd();
ans+=1ll*(r-l+1)*x*b+(c[r]-c[l-1])*x;
printf("%lld\n",ans/mm*qwq);
}
return 0;
}

luogu P3924 康娜的线段树的更多相关文章

  1. P3924 康娜的线段树(期望)

    P3924 康娜的线段树 看起来$O(nlogn)$可过其实由于巨大常数是无法通过的 $O(nlogn)$:70pts 我们手玩样例发现 线段树上某个节点的期望值$f[o]=(f[lc]+f[rc]) ...

  2. P3924 康娜的线段树

    P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她OI. 今天康娜学习了一种叫做线段树的神奇魔法,这种魔法可以 ...

  3. 洛谷 P3924 康娜的线段树 解题报告

    P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她\(OI\). 今天康娜学习了一种叫做线段树的神奇魔法,这种 ...

  4. 洛谷 P3924 康娜的线段树

    P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的“魔法”产生了浓厚的兴趣,于是小林开始教她OI. 今天康娜学习了一种叫做线段树的神奇魔法,这种魔法可以维护一段区间的信息, ...

  5. 洛谷P3924 康娜的线段树(期望 前缀和)

    题意 题目链接 Sol 思路就是根据期望的线性性直接拿前缀和算贡献.. 这题输出的时候是不需要约分的qwq 如果你和我一样为了AC不追求效率的话直接#define int __int128就行了.. ...

  6. luogu P2574 XOR的艺术 (线段树)

    luogu P2574 XOR的艺术 (线段树) 算是比较简单的线段树. 当区间修改时.\(1 xor 1 = 0,0 xor 1 = 1\)所以就是区间元素个数减去以前的\(1\)的个数就是现在\( ...

  7. 【原创】洛谷 LUOGU P3373 【模板】线段树2

    P3373 [模板]线段树 2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第 ...

  8. 【原创】洛谷 LUOGU P3372 【模板】线段树1

    P3372 [模板]线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含两个整数N.M,分别 ...

  9. Luogu P1198 BZOJ 1012 最大数 (线段树)

    手动博客搬家: 本文发表于20170821 14:32:05, 原地址https://blog.csdn.net/suncongbo/article/details/77449455 URL: (Lu ...

随机推荐

  1. timescale 时间尺度

    1 `timescale为模块指定参考时间单位 `timescale<reference_time_unit>/<time_precision> 2 module endmou ...

  2. Python从入门到放弃系列(Django/Flask/爬虫)

    第一篇 Django从入门到放弃 第二篇 Flask 第二篇 爬虫

  3. TortoiseSVN 忽略文件 忽略已提交文件

    主要以下两种情况: 1.首次提交就做好了忽略拦截:项目首次提交到svn服务器的时候,把该删的删了,然后设置忽略规则,就没问题了. 2.提交一段时间忽然想忽略拦截:经常碰到的,发现设置忽略规则后,没法生 ...

  4. MT【235】两道函数题

    已知$g(x)=x^2-ax+4a$,记$h(x)=|\dfrac{x}{g(x)}|$,若$h(x)$在$(0,1]$上单调递增,求$a$的取值范围. 解答: 已知$$g(x)=\begin{cas ...

  5. Partition Numbers的计算

    partition numbers的定义 A000041 就是将正整数n分为k(\(1\le k\le n)\)个正整数相加,即\(n=a_1+a_2+...+a_k\)且\(a_1\le a_2\l ...

  6. Intent 跳转Activity

    Intent 跳转 显示跳转(用类名跳转) Intent i = new Intent(a.this,b.class); 隐士跳转 自定义Action <!--配置跳转Activity--> ...

  7. [poj3278]抓住那头牛

    题目描述 Farmer John has been informed of the location of a fugitive cow and wants to catch her immediat ...

  8. 洛谷 P4408 逃学的小孩 解题报告

    P4408 [NOI2003]逃学的小孩 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:"喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?&q ...

  9. Linux中无权限使用sudo

    提示:$USER is not in the sudoers file. This incident will be reported. 解决方法: 切换到root用户,su 编辑sudo配置文件,v ...

  10. (转)Servlet的生命周期——初始化、运行、销毁全部过程

    背景:面试中很基础的一个问题,所以有必要好好整理一番. Servlet体系结构是建立在 Java 多线程机制上的,它的生命周期由 Web 容器负责. 当客户端第一次请求某个 Servlet 时,Ser ...