文章分类 - 题解
记录好题与解法
摘要:题意简述 令全集 。 一个序列 是好的,当且仅当 $\forall (S\subseteq U,s.t.\ |S|=m),\prod \limits_{i\in S}{Q_i}=\sum \limits_{j\in(\complement_US)} Q
阅读全文
摘要:题意简述 给定一棵树,每个节点上有一个权值 。若当前节点为 ,则每个点 的贡献是 到 路径上权值比 大的点的数量(包括 ),答案就是所有贡献的和。给出若干个询问 ,回答以 为根节点时的答案。 形式化地,就是求: $$\sum_{
阅读全文
摘要:~~这么臭的题有必要存在吗?~~ 题意转化 题目所说的“先辈”序列,其实就是一个不下降序列。一个不下降序列,就是“先辈”。这个不再证明。 所以要求的就是:维护一个支持区间加的序列,可以判断区间是否为不下降序列。 实现方式 我们考虑简单的写法:用线段树维护。显然区间加可以用延迟标记来维护,这里不再赘述
阅读全文
摘要:例题:Luogu P3373 【模板】线段树 2 step 0 - 引子 在看了众多题解后,我仍然没明白这样一个问题:为什么会想到延迟标记下传要分加法和乘法,而做乘法时还要把加法的 tag 一并乘了?如何想到这种联系? 显然,在尝试一个 lazytag 不行之后,我们肯定能想到同时维护两个延迟标记。
阅读全文
摘要:秦九韶算法 秦九韶算法是由中国古代数学家秦九韶提出来的多项式算法,将一个一般多项式化为若干个一次多项式计算。优点很明显:不用乘方了。具体操作如下: $$=a_0+x(a_1+a_2x+a_3x^2+\dots+a_nx^
阅读全文
摘要:例题:POJ3974 Manacher,俗称马拉车(谐音),用于计算最长回文子串长度,时间复杂度与代码量相较其它解决此问题的算法有压倒性优势。线性时间复杂度。 我们发现偶回文串(长度为偶数的回文串)相较奇回文串更加麻烦。因此我们可以做一个预处理,把原字符串转化成易处理的:在字符串两头和每对相邻字符见
阅读全文
摘要:本题考察了组合数的递推以及矩阵前缀和。我们可以得出: $$C_n^m=\frac{n!}{m!\cdot(n-m)!}=\frac{(n-1)!}{(n-m-1)!\cdot m!}+\frac{(n-1)!}{(n-m)!\cdot (m-1)!}=\left{ \begin{aligned} &
阅读全文
摘要:这道题洛谷评分这么低我是没想到的。感觉这是目前我做得最巧妙的橙题了。 先简述一下题目: 平面内有随机分布的 个格点 ,点不可重合。每次操作可以选一个点朝 上/下/左/右 四个方向移动一格。问把这些点移动成一条连续的、平行于 轴的线段的最小操作数。 我们一步一步来解决这
阅读全文
摘要:不定长子段和~ 采用前缀和加单调队列来维护。 我们通过 来表示子段 的和。其中, (前缀和)。 求出: $$\max \limits_{i\in [1,N]}\Big{S_i-\min \limits_{j\in [i
阅读全文
摘要:思路可以看 yxc 的视频 link 这里采用了偷懒的离散化思想,即把 x,y 合并起来考虑。如果分离,效率更高。 code: #include<bits/stdc++.h> using namespace std; int c,n,x[505],y[505],sum[1005][1005]; ve
阅读全文
摘要:题目的关键点是:给定 次操作,每次操作是以上四种操作,求每次操作后的当前列表的末尾最后一个数(若数组为空输出 -1)。 如果放在 trie 树里,不就是叶子节点吗? 默认根节点为 1,根节点的父亲节点是它自己。记录每个节点的父亲节点,以及自己存的值。当前列表的最后一位(终点)则用指针 now
阅读全文
摘要:合理使用 C++ STL,在比赛中有利于减少失误,加快打题速度。这道题使用 STL map 很好做。 根据题意,我们先把数列去重观察。设数列构成大小为 的集合 。 刚好有 个数比目标值大,其实就是说目标值在集合中是第 大的。 那么题
阅读全文