标签:持久 线段 son 复杂度 sum operatorname SD
D1T1
树形 \(\text{DP}\)。
令 \(f_{u,s,k},(k\in\{0,1\})\) 表示仅考虑以点 \(u\) 为根的子树,固定 \(u\) 的权值为 \(s\),\(u\) 子树中是否有点的权比 \(u\) 的权大的方案数。
\[\begin{aligned}\\ f_{u,s,0}&=\sum_{v\in\operatorname{son}(u)}\sum_{w\in\operatorname{son}(u),w<v}[(\sum_{i=0}^sf_{v,i,0})\times(\sum_{i=0}^sf_{w,i,0})]\\ \end{aligned}\]\[f_{u,s,1}=\sum_{v\in\operatorname{son}(u)}\sum_{w\in\operatorname{son}(u),w<v}[(\sum_{i=s}^mf_{v,i,1}+\sum_{i=s+1}^mf_{v,i,0})\times(\sum_{i=s}^mf_{w,i,1}+\sum_{i=s+1}^mf_{w,i,0})] \]把 \(f_{u,i,k}\) 做个前缀和然后逐个合并,时间复杂度 \(O(nm)\)。
D1T2
朴素的 \(\text{DP}\) 是令 \(f_{i,j}\) 表示当前数列的和为 \(i\),最后一个数为 \(j\) 的价值和,那么 \(f_{i,j}=c\times f_{i-j,j+1}+f_{i-j,j-1}\)。直接转移,时间和空间复杂度 \(O(n^2)\)。
优化的还没看懂。
UOJ218 【UNR #1】火车管理
我们建一棵以下标为键值的可持久化线段树,维护每个位置的栈顶元素是哪个时刻加入的,然后另维护一棵普通线段树来维护答案,每次区间 push
的时候在可持久化线段树和答案树上分别做一个区间覆盖,同时维护一个 \(Q[t]\) 表示时刻 \(t\) push
进去的元素 \(x\)。
对于单点 pop
,首先在可持久化线段树上查询单点的栈顶的加入时刻 \(t\),然后在 \(t-1\) 时刻的可持久化线段树上查询当时的栈顶加入时刻 \(t'\),\(Q[t']\) 就是 pop
后栈顶的元素。在两棵线段树上分别单点修改即可。
可持久化线段树都要支持区间改值,可以直接用标记永久化。
时间复杂度 \(O(q\log n)\)。
标签:持久,线段,son,复杂度,sum,operatorname,SD 来源: https://www.cnblogs.com/yukari1735/p/16390707.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。