【2019北京集训2】Elephant 平衡树】的更多相关文章

题目大意:给你一个长度为$n$的序列$A_i$,有$q$次操作,每次操作为以下三种之一: 询问区间的$F_M(A_i)$的最大公约数. 区间翻转,区间加一个正数. 我们定义$gcd(0,0)=0$,且$F_M(A_i)$为在一个$M$个点的无向完全图中从第一个点开始走$k$步后回到第一个点的方案数. 数据范围:$n,q≤10^5$,$0≤A_i≤10^8$,$2≤M≤10^9$. 我们先考虑下如何求$F_M(x)$. 经过打表(大雾),我们发现: 若$x$为偶数,则$F_M(x)=M\times…
题目大意:给你一个代表区间$[1,n]$的线段树,问你随机访问区间$[1,n]$中的一个子区间,覆盖到的线段树节点个数的期望(需要乘上$\frac{n(n-1)}{2}$后输出). 数据范围:$n≤10^{18}$ 貌似各位的做法都非常优秀,代码也非常短,那么我来讲一个垃圾做法: 我们设$f[i]$表示一个构建出$[1,i]$的线段树,随机访问一个子区间覆盖线段树节点个数的期望(为方便处理,乘上了$\frac{i(i-1)}{2}$). 显然$f[n]$就是答案. 我们再设$fl[j][i]$表…
题目大意:你有$n$个操作和一个初始为$0$的变量$x$. 第$i$个操作为:以$P_i$的概率给$x$加上$A_i$,剩下$1-P_i$的概率给$x$乘上$B_i$. 你袭击生成了一个长度为$n$的排列$C$,并以此执行了第$C_1,C_2....C_n$个操作. 求执行完所有操作后,变量$x$的期望膜$998244353$的值. 数据范围:$n≤10^5,0≤P,A,B<998244353$ 我太菜了. 考虑如果并没有排列的要求,而是强行依次执行,会发生什么事情: 令$X_i$表示执行完前$…
此题niubi! 题目大意:给你一颗n个点的点带权无根树,现在请您进行以下两步操作: 1,选择一个$[0,T]$之间的整数$C$,并令所有的点权$wi$变为$(wi+C)%MOD$ 2,选择若干条点不相交的路径:设选择的条数为$k$,覆盖的点的点权和为$S$,则收益为$\frac{S}{k+1}$ 请您求出收益最大可能为多少. 数据范围:$T,S≤10^5$,$n≤5000$ 我们先不考虑修改点权的过程,只考虑求最大收益应该如何做. 我们显然有一种$O(n^2)$的做法,但是复杂度太高了,加上修…
题目大意:有一颗有$m$个叶子节点的二叉树. 对于叶子节点$i$,$x[i]=(a[i]\ xor\ V_{p[i]})or(b[i]\ xor\ V_{q[i]})$ 对于非叶子节点$i$,$x[i]=x[sonl]\ and\ x[sonr]$. 上文的$or$和$xor$均为逻辑运算符.且V为一个长度为$n$的布尔数组,需要你自己构造. 下面问:对于每个非叶子节点$i$,问是否存在一个序列V,使得$x[i]=true$. 数据范围:$n,m≤2\times 10^{5}$ 我们先来考虑下暴…
题目大意:给你$n$个点,第$i$个点有点权$v_i$.你需要将这$n$个点排成一排,第$i$个点的点权能被累加当且仅当这个点前面存在编号在$[l_i,r_i]$中的点,问你这些点应该如何排列,点权和才能最大. 数据范围:$n≤10^5$,$1≤v_i≤10^4$. 这题状压居然给了70分,场上压根没想正解. 我们不难发现,对于点i,我们连接$l_i→i$,$(l_i+1)→i$,....,$r_i→i$的边,然后跑一个tarjan,缩点后我们得到了一棵树. 对于每棵树,我们显然只需要减去这棵树…
[北京集训D2T3]tvt \(n,q \le 1e9\) 题目分析: 首先需要对两条路径求交,对给出的四个点的6个lca进行分类讨论.易于发现路径的交就是这六个lca里面最深的两个所形成的链. 然后即可再分两种情况进行讨论. 对于同向的路径,我们可以求出到达交的起点的时间差,然后与链上的最长边进行比较,如果大于说明可行. 对于对向的路径,如果能在时间差内走到交集上,同时不是在一个顶点相遇那么一定就是合法情况,否则就是不合法情况.这部分可以用倍增解决. #include <bits/stdc++…
北京集训的题都是好题啊~~(于是我爆0了) 注意到一个重要的性质就是期望是线性的,也就是说每一段的期望步数可以直接加起来,那么dp求出每一段的期望就行了... 设$f_i$表示从$i$出发不回到$i$直接到达终点的概率,显然期望步数就是$\frac{1}{f_i}$: 考虑转移,设下一个事件概率为$p$,则 如果下一个事件是敌人:$f_i=f_{i+1}*p$ 如果下一个事件是旗子: $f_{i}=(1-p)*(1-f_{i+1})*(1+p*(1-f_{i+1})+p^{2}*(1-f_{i+…
题意 你有一个字符串,你需要支持两种操作: 1:在字符串的末尾插入一个字符 \(c\) 2:询问当前字符串的 \([l,r]\) 子串中的不同子串个数 为了加大难度,操作会被加密(强制在线). \(n,m\le 50000\),空间 \(\text{1GB}\) 题解 原题好像是[北京集训 2017 String],题意:给你一个模板串 \(T\),有 \(Q\) 组询问,每组询问给出 \(2\) 个正整数 \(l,r\),请你找出 \(T[l...r]\) 中出现至少 \(2\) 次的最长子串…
一道很有意思的神题~ 暴力平衡树的复杂度很对(并不),但是$2^{30}$的空间一脸屎 这题的正解是一个类似线段树的数据结构,我觉得很有创新性Orz 首先可以想到一种暴力就是用一个点代表一个区间,然后用链表维护这些点的集合,每次alloc操作就相当于割开未分配的区间,即增加了一个点,free操作就相当于合并.所以最多会产生$n$个点,单次操作$O(n)$,时间复杂度$O(n^2)$但是不满,貌似常数小就可以拿60: 把这个集合看成一个序列的话,快速修改点的信息肯定会想到线段树,正解就是用线段树去…