数据结构-线段树
Zbr162
滑天下之大稽
展开
-
序列 [线段树]
#include<bits/stdc++.h>#define reg registerint read(){ char c; int s = 0, flag = 1; while((c=getchar()) && !isdigit(c)) if(c == '-'){ flag = ...原创 2019-10-22 16:21:12 · 204 阅读 · 0 评论 -
花火之声不闻于耳 [线段树]
/# 花火之声不闻于耳花火之声不闻于耳花火之声不闻于耳/## 正解部分\color{red}{正解部分}正解部分现在要求的是 ∏i=LRφ(ai)=∏i=LRai×∏pj−1pj\prod_{i=L}^R \varphi(a_i) = \prod_{i=L}^R a_i \times \prod \frac{p_j-1}{p_j}∏i=LRφ(ai)=∏i=LRai×∏pjp...原创 2019-09-12 20:34:08 · 132 阅读 · 0 评论 -
连续区间计数 [线段树, 单调栈]
连续区间计数连续区间计数连续区间计数最初想法\color{grey}{最初想法}最初想法一个区间合法当且仅当 max_v−min_v==r−lmax\_v-min\_v == r-lmax_v−min_v==r−l, 移项得 min_v==max_v−(r−l)min\_v == max\_v - (r-l)min_v==max_v−(r−l),可以想到枚举 min_v=A[i]min...原创 2019-09-17 20:11:07 · 266 阅读 · 0 评论 -
神奇的集合 [set维护区间, 线段树]
/# 神奇的集合神奇的集合神奇的集合 /## 正解部分\color{red}{正解部分}正解部分因为 1≤x≤n1 \le x \le n1≤x≤n, 所以可以对每个 xxx 使用 std::set< std::pair<int, int> > 存储其出现的区间, 线段树 维护答案,对 111 操作, 如图所示, 黄色为修改的区间, 黑色为原有的 xxx 出现...原创 2019-09-21 20:06:33 · 414 阅读 · 0 评论 -
序列方差 [线段树, 推式子, 组合数, NTT]
/# 序列方差序列方差序列方差/## 正解部分\color{red}{正解部分}正解部分考虑一个长度为 mmm 的 儿序列 对答案贡献怎么计算,1m∑i=1m(ai−a‾)2=1m(∑i=1mai2+∑i=1ma‾2−2∑i=1maia‾)=1m(∑i=1mai2+m(∑i=1mai)2m2−2∑i=1mai∑j=1majm)=1m(∑i=1mai2+1m(∑i=1mai)2−2m(∑i...原创 2019-10-04 16:38:11 · 375 阅读 · 0 评论 -
区间覆盖 [动态规划, 线段树]
区间覆盖区间覆盖区间覆盖正解部分\color{red}{正解部分}正解部分设 F[i]F[i]F[i] 表示 完全覆盖 [1,i][1, i][1,i] 的答案,考虑将区间按 左端点 从小到大 排序, 从左向右 枚举区间 进行状态转移, 设当前区间为 iii,可以初步得到状态转移方程 F[ri]=Vi ×∑j=li−1riF[j]F[r_i] = V_i\ \times\su...原创 2019-10-10 19:55:49 · 448 阅读 · 0 评论