首页 > 其他分享 >题解:P3352 [ZJOI2016] 线段树

题解:P3352 [ZJOI2016] 线段树

时间:2024-10-29 11:11:43浏览次数:6  
标签:方案 P3352 题解 元素 ZJOI2016 区间 操作 转移 dp

首先,题目上说让期望乘上 \((\frac{n(n+1)}{2})^q\) 的目的就是让我们求方案数与值的乘积。

然后我们考虑在操作过后一个位置上的值相对于原来的值肯定是不降的,于是可以想到对每一个值 \(v\) ,原序列中所有 \(\le v\) 的元素一定构成了若干连续的区间。对每一个这样的区间而言,操作过后这个区间的左右端点一定是向中间移动的。

于是我们可以对每个区间都考虑一个 DP。设 \(dp_{v,x,l,r}\) 表示操作 \(x\) 次后区间 \([l,r]\) 中的数字均 \(\le v\),且第 \(l-1\) 和 \(r+1\) 个元素都 \(\gt v\) 的方案数。

转移的话显然可以从 \(dp_{v,x-1,l,r},dp_{v,x-1,i,r},dp_{v,x-1,l,i}\) 转移过来。具体的,第一种转移相当于第 \(x\) 次操作对于区间 \([l,r]\) 来说应该是无用的,即操作区间 \([1,l-1],[l,r],[r+1,n]\) 的总方案数。第二种和第三种转移类似,以第二种为例,相当于第 \(x\) 次操作应当在区间 \([1\sim i-1,l-1]\) 进行,这个可以使用两个前缀和优化。转移方程就不写了,其中 \(x\) 这一维显然可以滚掉。

回到题面,我们现在要解决的问题就是求每个数字最终大小为某个定值时的方案数。上述 DP 求的是每个区间最终值不大于某个定值时的方案数,那我们对于一个区间 \([l,r]\) 而言,若用 \(f(j)\) 表示 \(dp_{j,q,l,r}\),那么这个区间最终值等于 \(j\) 的方案数显然就是 \(f(j)-f(j-1)\)。

这样对于每一个元素,我们只需要找到所有包含它的区间,再对于这个元素在该区间内可能变成的所有值都累加答案即可。根据定义,可以保证方案不会重复。

根据数据随机的条件,时间复杂度近似 \(\mathcal{O}(n^2q)\),可以通过本题。

标签:方案,P3352,题解,元素,ZJOI2016,区间,操作,转移,dp
From: https://www.cnblogs.com/Lydic/p/18512565

相关文章

  • P6803 星际迷航 题解
    P6803星际迷航题解题目大意给定一颗\(N\)个节点的树。这样的树有\(D+1\)层,编号从\(0\)到\(D\)。对于\(i=0,1,\dots,D-1\),需要选择第\(i\)层的任意一个节点向第\(i+1\)层的任意一个节点连一条有向边。最初人在第\(0\)层图的\(1\)号节点。两个玩家交替选择下一......
  • CF1249F Maximum Weight Subset 题解 / 长链剖分复习
    CF1249FMaximumWeightSubset题解题目大意给定一个\(n\)个节点的树,每个节点有点权\(a_i\)。从中选出若干节点,要求这些点两两之间距离大于给定常数\(k\),使得点权和最大。Solve给出一种线性做法。前置知识:长链剖分优化DP。考虑一个DP:设\(f(u,d)\)表示在\(u\)的子......
  • Codeforces Round 982 (Div. 2) 10.26 (ABC)题解
    CodeforcesRound982(Div.2)10.26(ABC)题解A.RectangleArrangement数学(math)题意:有一个无限长宽的方形网格,初始为白色,现在有\(n\)个印章,每个印章有自己的宽\(w_i\)和高\(h_i\)。印章会使得网格涂色,变成黑色。这\(n\)个印章都需要使用一次,需要求解出最后网格中黑色......
  • Codeforces Round 982 (Div. 2) 题解(A-D)
    目录A思路codeB思路codeC思路卡题原因codeD思路未ac原因codeCodeforcesRound982(Div.2)A思路因为图形可以重叠,所以答案就是最长的长和最长的宽组成的矩形周长.codevoidfunc(void){ intn; cin>>n; intl=0,r=0; while(n--) { intx,y; cin>>x>>y......
  • 题解:CF1666J Job Lookup
    被迫来写篇题解。首先,第一个要求我们只需要在递归构造的时候保证子树对应区间连续即可,现在考虑第二个要求。就题目中的二叉树而言,想要确定其结构,我们只需要关注这段区间,即这棵子树根节点的编号,又因为子树区间连续,所以我们不难想到区间动态规划。设\(dp_{l,r}\)表示\(l\simr......
  • 【最新华为OD机试E卷-支持在线评测】机器人活动区域(200分)多语言题解-(Python/C/Java
    ......
  • CF1738F 题解
    blog。duel的时候对上了脑电波很快过了,记一下这种我本来完全不会的题。肯定是搞掉平方。把\(n_c\)移到左边:\(\dfrac{\sum\limits_{u\inS}deg_u}{|S|}=\text{平均数}\le|S|\)。然后直接放缩左边,于是一个充分条件是:\[\max\limits_{u\inS}deg_u\le|S|\]考虑构造合法解。......
  • CSP-S 2024 游记/题解
    CSP-S2024去年S打成屎了,我要蓝√!!!!!!!!CSP怎么能不CS?CS了一个上午,顺便背了下快读。进厂!看见了退役的同学在做志愿者,祝他未来可期吧。也希望自己能够超常发挥。垃圾鼠标真难用。很好,全是传统题。只有T2开了两秒。T1,这不排个序然后优先队列乱搞就好了。5min过了,NOIP我来......
  • Removing People 题解
    前言题目链接:Atcoder;洛谷。题意简述\(n\)人站成一个圆圈,按顺时针方向依次为\(1,2,\cdots,n\)。每个人面对的方向由长度为\(n\)的字符串\(S\)给出。对于第\(i\)个人,如果\(S_i=\texttt{L}\),则\(i\)面向逆时针方向。如果\(S_i=\texttt{R}\),则面向顺时针方向。......
  • 字节跳动青训营 X 豆包MarsCode入营考核部分题解
    中等:观光景点组合得分问题小R正在研究一组观光景点,每个景点都有一个评分,保存在数组 values 中,其中 values[i] 表示第 i 个观光景点的评分。同时,景点之间的距离由它们的下标差 j-i 表示。一对景点 (i<j) 的观光组合得分为 values[i]+values[j]+i-j,也就......