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

P3924 康娜的线段树 看起来$O(nlogn)$可过其实由于巨大常数是无法通过的 $O(nlogn)$:70pts 我们手玩样例发现 线段树上某个节点的期望值$f[o]=(f[lc]+f[rc])/2+sum[o]$ $s[o]$表示该节点代表的区间和. 每次$Add(l,r,x)$时,每个x对于$f[o]$的贡献是固定的,即$f[o]+=x*k[o]$ 这个$k[o]$可以在建树时预处理. 然鹅卡不过TAT #include<iostream> #include<cstdio>…
P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她OI. 今天康娜学习了一种叫做线段树的神奇魔法,这种魔法可以维护一段区间的信息,是非常厉害的东西.康娜试着写了一棵维护区间和的线段树.由于她不会打标记,因此所有的区间加操作她都是暴力修改的.具体的代码如下:(略) 显然,这棵线段树每个节点有一个值,为该节点管辖区间的区间和. 康娜是个爱思考的孩子,于是她突然想到了一个问题: 如果每次在线段树区间加操作做完后,从根节点开…
P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的"魔法"产生了浓厚的兴趣,于是小林开始教她\(OI\). 今天康娜学习了一种叫做线段树的神奇魔法,这种魔法可以维护一段区间的信息,是非常厉害的东西.康娜试着写了一棵维护区间和的线段树.由于她不会打标记,因此所有的区间加操作她都是暴力修改的.具体的代码如下: struct Segment_Tree{ #define lson (o<<1) #define rson (o<<1|1) in…
P3924 康娜的线段树 题目描述 小林是个程序媛,不可避免地康娜对这种人类的“魔法”产生了浓厚的兴趣,于是小林开始教她OI. 今天康娜学习了一种叫做线段树的神奇魔法,这种魔法可以维护一段区间的信息,是非常厉害的东西.康娜试着写了一棵维护区间和的线段树.由于她不会打标记,因此所有的区间加操作她都是暴力修改的.具体的代码如下: struct Segment_Tree{ #define lson (o<<1) #define rson (o<<1|1) int sumv[N<&l…
题面传送门 我们可以画图找规律 这里没图,要看图可以去看M_sea dalao的题解(逃 可以发现单个节点\(i\)对答案的贡献为该节点的点权\(*\frac{1}{2^{dep_i}}\)(\(dep_i\)为从上往下\(i\)节点所在的层数-1,也就是深度,令根节点的\(dep=0\)) 我们可以发现,所有叶子节点的深度都是最大深度(记为\(ma\))或者最大深度-1,所以除开最下面一层,从上往下第\(i\)层的贡献都是序列中所有数之和\(*\frac{1}{2^{i-1}}\),最下面一层…
题意 题目链接 Sol 思路就是根据期望的线性性直接拿前缀和算贡献.. 这题输出的时候是不需要约分的qwq 如果你和我一样为了AC不追求效率的话直接#define int __int128就行了.. 代码十分清新 #include<bits/stdc++.h> #define int __int128 using namespace std; const int MAXN = 1e6 + 10; inline int read() { char c = getchar(); int x = 0…
T1 无聊的数列 来自:Link flag 帖先从水题入手. 首先分析题目,它是以等差数列为原型进行的修改.等差数列一大性质就是其差分数列的值除第一项以外均相等. 于是不难想到使用差分数列进行维护. 假设原数组为 \(A\),其差分数列为 \(num\).规定 \(num_i = A_i - A_{i - 1}(i \in [1, n])\). 当前更改区间 \(l, r\).需累加的等差数列首项为 \(k\),公差为 \(d\),长度为 \(r - l + 1\). 对于 \(l\),我们需要…
正解:动态开点线段树 解题报告: 传送门! 因为最近学主席树的时候顺便get到了动态开点线段树?刚好想起来很久很久以前就想做结果一直麻油做的这题,,,所以就做下好了QAQ 然后说下,这题有很多种方法,我目前是先只写个最傻逼的方法,等学了splay什么的再来upd一下QAQ(这题好像有,线段树.树状数组.splay等各种方法,我可能都会写只要我麻油咕QAQ 然后就直接进入正题QAQ 首先其实要知道动态开点线段树和线段树思想什么的都是一样儿的,只是实现方法有一点儿区别(就是动态开点线段树节省点儿空间…
正解:线段树分治+线性基 解题报告: 传送门$QwQ$ 考虑如果只有操作3,就这题嘛$QwQ$ 欧克然后现在考虑加上了操作一操作二 于是就线段树分治鸭 首先线段树叶子节点是询问嘛这个不用说$QwQ$.然后把每条边放到所有它存在的区间上. 然后处理询问的话就$dfs$遍历线段树,删边操作就可以直接按栈序撤销了 最后梳理下这题的大致思路趴$QwQ$.首先以询问为节点建一棵线段树,并把每条边放到所有它会出现的节点处,然后$dfs$整棵线段树计算答案. 具体说下$dfs$的过程趴$QwQ$. 首先显然是…
题目描述 给定n个整数构成的序列,将对于指定的闭区间查询其区间内的第k小值. 输入输出格式 输入格式 第一行包含两个正整数n,m,分别表示序列的长度和查询的个数. 第二行包含n个整数,表示这个序列各项的数字. 接下来m行每行包含三个整数l,r,k, 表示查询区间[l,r]内的第k小值. 输出格式 输出包含m行,每行一个整数,依次表示每一次查询的结果 输入输出样例 输入样例 5 5 5957 6405 15770 26287 26465 2 2 1 3 4 1 4 5 1 1 2 2 4 4 1…