Loj #2570. 「ZJOI2017」线段树】的更多相关文章

Loj #2570. 「ZJOI2017」线段树 题目描述 线段树是九条可怜很喜欢的一个数据结构,它拥有着简单的结构.优秀的复杂度与强大的功能,因此可怜曾经花了很长时间研究线段树的一些性质. 最近可怜又开始研究起线段树来了,有所不同的是,她把目光放在了更广义的线段树上:在正常的线段树中,对于区间 \([l, r]\),我们会取 \(m = \lfloor \frac{l+r}{2} \rfloor\),然后将这个区间分成 \([l, m]\) 和 \([m + 1, r]\) 两个子区间.在广义…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 小 Yuuka 遇到了一个题目:有一个序列 a1,a2,...,an,对其进行q次操作,每次把一个区间内的数改成区间内的最大值,问最后每个数是多少. 小 Yuuka 很快地就使用了线段树解决了这个问题.于是充满智慧的小 Yuuka 想,如果操作是随机的,即在这 q 次操作中每次等概率随机地选择一个区间 [l,r] (1<=l<=r<=n),然后将这个区间…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 九条可怜是一个喜欢数据结构的女孩子,在常见的数据结构中,可怜最喜欢的就是线段树. 线段树的核心是懒标记,下面是一个带懒标记的线段树的伪代码,其中 tag​ 数组为懒标记: 其中函数 \(Lson(Node)\) 表示 \(Node\) 的左儿子,\(Rson(Node)\) 表示 \(Node\) 的右儿子. 现在可怜手上有一棵 \([1,n]\) 上的线段树,…
LOJ#3043. 「ZJOI2019」线段树 计数转期望的一道好题-- 每个点设两个变量\(p,q\)表示这个点有\(p\)的概率有标记,有\(q\)的概率到祖先的路径上有个标记 被覆盖的点$0.5p + 0.5 \rightarrow p ,0.5q + 0.5\rightarrow q $ 被覆盖的点子树中的点\(p\rightarrow p,0.5q + 0.5 \rightarrow q\) 经过的点\(0.5p \rightarrow p,0.5q \rightarrow q\) 未…
「模板」 线段树--区间乘 && 区间加 && 区间求和 原来的代码太恶心了,重贴一遍. #include <cstdio> int n,m; long long p; class SegmentTree { private: struct Node { int l,r; long long v,mul,add; Node *c[2]; Node(int l,int r):l(l),r(r),mul(1LL),add(0LL) { c[0]=c[1]=nullp…
「ZJOI2019」线段树 听说有人喷这个题简单,然后我就跑去做,然后自闭感++,rp++(雾) 理性分析一波,可以发现最后形成的\(2^k\)个线段树,对应的操作的一个子集,按时间顺序作用到这颗线段树上. 首先考虑研究一下tag的性质,比如两个操作时间先后是否没有影响,操作是否可以以某种形式进行合并,然后啥也没发现. 然后考虑一下一颗树是否可以被压成某个状态,比如实际上只有\(\log\)个状态然后去dp,发现也不行 再次冷静分析一波,发现好像每个节点可以独立考虑,结合上面\(2^n\),不妨…
题目传送门:LOJ #3043. 题意简述: 你需要模拟线段树的懒标记过程. 初始时有一棵什么标记都没有的 \(n\) 阶线段树. 每次修改会把当前所有的线段树复制一份,然后对于这些线段树实行一次区间修改操作. 即每次修改后线段树棵数翻倍,第 \(i\) 次修改后,线段树共有 \(2^i\) 棵. 区间修改操作的伪代码如下: 和我日常写的递归式线段树完全一致. 每次询问你这些线段树中有懒标记的节点总数. 修改和询问的总个数为 \(q\),\(1\le n,q\le 10^5\). 题解: 灵感来…
传送门 Description 线段树的核心是懒标记,下面是一个带懒标记的线段树的伪代码,其中 tag 数组为懒标记: 其中函数\(Lson(Node)\)表示\(Node\)的左儿子,\(Rson(Node)\)表示\(Node\)的右儿子. 有一棵 \([1,n]\)上的线段树,编号为\(1\) .初始时什么标记都没有. 每次修改会把当前所有的线段树复制一份,然后对于这些线段树实行一次区间修改操作. 每次修改后线段树棵数翻倍,第 \(i\)次修改后,线段树共有 \(2^i\) 棵. 每次询问…
题面 问题可以转化为每次区间覆盖操作有 \(\frac{1}{2}\) 的概率进行,求标记和的期望.于是我们只要求出所有点有标记的概率即可. 我们设 \(f_i\) 表示节点 \(i\) 有标记的概率, \(g_i\) 表示节点 \(i\) 的祖先节点有标记的概率.如果一个节点未完全被包含,那么其未被包含的节点是否有标记取决于其祖先节点是否有标记,故要用来自祖先节点的信息来更新答案(设未包含的节点为 \(j\) ,那么 \(f_j \leftarrow \frac{f_j+g_j}{2}\) )…
传送门 抄题解 \(Task0\),随便做一下,设 \(cnt\) 为相同的边的个数,输出 \(y^{n-cnt}\) \(Task1\),给定其中一棵树 设初始答案为 \(y^n\),首先可以发现,每有一条边和给定的树相同就会使得答案除去 \(y\) 那么可以利用矩阵树定理,已经有的边权值为 \(y^{-1}\),其它的连成完全图,权值为 \(1\) 求解行列式之后乘上 \(y^n\) 即可,\(O(n^3)\) 第一种正解 \(orz~laofu\) 即可 不会 第二种正解 一个小trick…