把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

随笔分类 -  思维

摘要:## 题目概述 给你一个排列 $p$,共有 $n$ 个元素,你可以选择两个数 $i,j$,然后将 $p_i$ 移动到位置 $j$,这个过程需要花费 $i+j$ 的代价,问你通过这些操作过后所能使 $p$ 变为降序的最小代价。 ## 思路 变成降序似乎不是我们所擅长的,我们先转化为变成升序,这个是容易的只需要令 $p_i=n-p_i+1$ 即可。 我们先考虑暴力的做法,总结出来一些性质: - 每个数显然只能移动一次,如果移动了两次还不如一步到位。 - 按照从大到小的顺序移动这些数比按照其他顺序移动更好。 因此我们可以得到 $\mathcal{O}(n2^n)$ 的暴力。 阅读全文
posted @ 2025-07-30 12:27 high_skyy 阅读(44) 评论(0) 推荐(0)
摘要:# CF140E New Year Garland 题目分析 挺不错的动态规划题目。 ## 思路 一看到题目便可以知道每一层和层与层之间是要分开来算的(这种类似的动态规划还有很多)。 我们先看看层与层之间的。 ### 层与层 题目要求:**相邻的两层的小球颜色集合不相同**。 那么区分相邻两层小球颜色集合不同可以通过**数量不同来区分**,然后再进行讨论即可。 根据上述,显然地,设 $f_{i,j}$ 表示已经完成前 $i$ 层,到了第 $i$ 层小球颜色集合的数量为 $j$ 的总方案。 我们先抛开重不重复不谈,那么它的总方案肯定是从前面的那一层转移过来,即 $f_{i-1,k}$,其中 $k\in [1,l_{i-1}]$。 那么是不是就是 $$ f_{i,j}=\sum_{k=1}^{l_{i-1}}f_{i-1,k} $$ 呢?显然不是,这里的 $j$ 是数量,并不是选了什么,因此还要有 $C_m^j$ 来确定选 $j$ 种颜色球的方案(这是对于当前 $i$ 的)。 阅读全文
posted @ 2025-03-11 19:17 high_skyy 阅读(19) 评论(0) 推荐(0)
摘要:给一个 $1$ 到 $n$ 的排列 $a$,并且给出点权 $x_i$,并定义: $$ LCA\{b\}=lca(lca(\dots(b_1,b_2),\dots),b_m) $$ 其中 $lca(x,y)$ 表示 $x$ 和 $y$ 的最近公共祖先。 并且给出一颗树。 求: $$ ans=\sum_{i=1}^n\sum_{j=i+1}^nx_{LCA_{i\in[i,j]}\{a_i\}} $$ 像这种比较经典的双 sigma 题目,最最最最暴力的解法是 $\mathcal{O}(n^3)$(先不考虑这里求 $LCA$ 的 $\log$)。 于是就很简单地拿到了此题的 $40$ 分。 那么怎么优化到 $\mathcal{O}(n\log n)$ 呢? 我一般的思路是直接上线段树。 我们这颗线段树(显然维护的是 $dfs$ 序区间)维护两个值,一个是 $cnt$ 代表这段区间内有点作为 $lca$ 的总方案,$sum$ 就是加和实际的数量 $\times x_{lca}$,注意到这里只有在有可能作为 $lca$ 的点上相乘,`pushup` 的时候都是加和(这里的思路比较巧妙)。 阅读全文
posted @ 2025-02-11 11:18 high_skyy 阅读(14) 评论(0) 推荐(0)
摘要:## 评价 一道非常好的思维题目!!! ## 分析 注意到:从三个数选一个中位数。 似乎没有什么好的方法,但是每一层的迭代有一种相似方法。 我们假设一个答案。 将大于等于答案的标记为 $1$,其他的为 $0$。 三——一个非常重要的数,我们要考虑以下: ``` 全是0:000 -> 0 一个1:001 -> 0 两个1:101 -> 1 三个1:111 -> 1 ``` 我们发现得到的答案取决于数量($0$ 多还是 $1$ 多)。 那我们怎么确定他能一直走到尾呢? 注意到: ``` ??? -----> 00? x00zy x00zy ``` 也就是说,两个连续的在一起,能够使得上面也一样(但是要看边界)。 注意到要是中间有连续的(即最靠近中间的一段 $0$ 或者 $1$)说明顶尖就是大于等于数字。 我们发现这样具有单调性,于是乎可以考虑二分答案解决。 然后我们就很好的解决了该问题。 总时间复杂度 $\mathcal{O}(n\log n).$ 阅读全文
posted @ 2025-02-09 12:19 high_skyy 阅读(27) 评论(0) 推荐(0)

浏览器标题切换
浏览器标题切换end