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

合集-思维

摘要:题目概述 给定 \(n\),连边方式 \(i\) 连向 \(j\) 满足 \(1\leq i<j\leq n\)。 求对于 \(k\in[0,n]\),恰好有 \(k\) 个点 \(x\) 满足 \(1\rightarrow x\rightarrow n\)。 数据范围:\(1\leq n\leq 阅读全文
posted @ 2026-02-27 22:24 high_skyy 阅读(4) 评论(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 阅读(35) 评论(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 阅读(26) 评论(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 阅读(32) 评论(0) 推荐(0)
摘要:## 题目概述 给你一个排列 $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 阅读(54) 评论(0) 推荐(0)
摘要:## 概述 给你一个长度为 $n$ 的排列 $p$,定义集合: $$ S_i=\{x\mid x\geq i\wedge \max_{k\in[i,x-1]}p_k 阅读全文
posted @ 2025-08-01 11:08 high_skyy 阅读(24) 评论(0) 推荐(0)
摘要:# CF520E Pluses everywhere 题目分析 ## 题目概述 给定一个 $n$ 位的十进制数,可以在数字之间加恰好 $k$ 个 `+`,得到一个式子,求每种方案的这个式子的和。 对 $10^9+7$ 取模,数据范围:$1\leq n\leq 10^5$。 ## 分析 有点意思。 不难想到设 $f_{i,j}$ 表示前 $i$ 个数填 $j$ 个加号的方案和,转移是简单的,考虑在不在前面放 `+` 即可。 但是这不是本题的思路。 像这种求所有的全局的方案,一般考虑每一个位置对于总共答案的贡献是多少。 我们考虑从前往后的第 $i$ 个位置,这个数填在当前分割出来的数的从前往后数第 $j$ 位,显然 $j\leq n - i + 1$。 那么对于当前他的数值方面的贡献为 $a_i\times 10^j$ 阅读全文
posted @ 2025-09-23 21:42 high_skyy 阅读(17) 评论(0) 推荐(0)
摘要:# AT_agc012_c [AGC012C] Tautonym Puzzle ## 题目描述 当字符串 $ x $ 满足以下条件时,称 $ x $ 为*好字符串*。 - 条件:$ x $ 可以表示为某个长度不少于 $ 1 $ 的字符串 $ y $ 重复两次所得的字符串 $ yy $。 例如,`aa`、`bubobubo` 等是好字符串,而空字符串、`a`、`abcabcabc`、`abba` 等都不是好字符串。 “ワシ”与猫头鹰设计了关于好字符串的谜题。请找出一个满足下列条件的字符串 $ s $。在本题的约束条件下,一定存在这样的字符串。 - $ 1\leq |s|\leq 200 $ - $ s $ 仅由用 $ 1 $ 至 $ 100 $ 的整数表示的 $ 100 $ 种字符构成。 - $ s $ 的 $ 2^{|s|} $ 个子序列中,成为好字符串的子序列有 $ N $ 个。 ## 题目分析 这显然是一道构造题目,高质量的构造题目。 我们注意到填什么似乎并不重要,重要的是种类不同。 阅读全文
posted @ 2025-09-25 15:05 high_skyy 阅读(26) 评论(0) 推荐(0)
摘要:首先特判 $d=0$ 的情况。 好,对于 $d\geq 1$ 的情况考虑转化。 注意到等差序列满足: - 模 $d$ 同余。 - 值两两不同。 我们先把 $a$ 变为正数,然后全部除以 $d$,这肯定是正确的,你可以想一想。 那么我们就全部转化为了 $d=1$ 的情况。 考虑符合条件的序列 $[l,r]$ 满足什么: - $\max_{i\in[l,r]}a_i-\min_{i\in[l,r]}a_i-1-(r-l+1-2)\leq k$。 - $[l,r]$ 内没有元素重复。 先考虑没有重复的情况:直接记录每个值之前出现最晚的位置。 考虑枚举 $r$,使得最左的 $l$ 满足条件,且 $l\in[x+1,r]$,其中 $x$ 表示 $a_r$ 上次出现的位置。 那么我们只需要使:$\max(l,r)-min(l,r)+l\leq k+r$ 即可。 那么我们如何维护这种东西呢? 注意 $\max,\min$ 用单调栈是好维护的。 阅读全文
posted @ 2025-09-29 16:36 high_skyy 阅读(16) 评论(0) 推荐(0)
摘要:题目概述 小K的花园种着n颗竹子(竹子是一种茎部中空并且长得又高又快的热带植物)。此时,花园中第i颗竹子的高度是hi米,并且在每天结束的时候它生长ai米。 实际上,小K十分讨厌这些竹子。他曾经试图去砍光它们,但由于竹子的茎部太坚固而失败了,然而,小K制作了魔法锤使这些竹子只能在地面上生长。 由于魔法 阅读全文
posted @ 2025-09-29 20:21 high_skyy 阅读(25) 评论(0) 推荐(0)
摘要:一个很妙的思路就是暴力。 考虑什么时候会对答案多 $1$。无非就是某一位 $+1$。 如果没有变化就是 $\times 10$。 我们发现这样做一定可以把所有的情况搞到。 本质上就是一个 01 bfs 求最短路。 阅读全文
posted @ 2025-10-02 20:31 high_skyy 阅读(23) 评论(0) 推荐(0)
摘要:感觉很典,所以就记下来了。 我们考虑一个非常重要的事实: - 田忌赛马对于每一个 $a_i$ 找的是第一个比他大的 $b_i$。 - 而字典序最大又需要前面的尽可能大。 这似乎产生了矛盾,让这道题目看起来有点难。 我们考虑不用 `multiset` 或者双指针求这个值,我们考虑分治的过程。 CDQ 分治是这样的: >对于左区间算好其分内的答案,右区间算好其分内的答案。 > >要合并区间的时候,左区间和右区间匹配就行了。 那么我们只需要记录每个区间剩下多少个 $a$ 中的元素和 $b$ 中的元素还没有匹配即可。 最精华的部分来了:由于我们对于每一个 $a_i$ 肯定进行二分答案是否可行,因为字典序本质上就有一个贪心的过程。我们考虑把这个思想搬到一个可支持修改的线段树上面即可。 在线段树上面这个是好维护的,于是这道题就做完了。 阅读全文
posted @ 2025-10-10 08:27 high_skyy 阅读(19) 评论(0) 推荐(0)
摘要:我们括号匹配的经典做法就是把左括号看作 $+1$,右括号看作 $-1$,那么任意一个位置上的前缀和必须 $\geq0$,且最后一个位置的前缀和必须为 $0$。 这个可以引申出来一个定理: > 对于第 $i$ 个左括号一定满足其位置 $pos\leq 2i-1$。 显然的,因为如果不满足就说明前面的右括号多了,也就是上一个前缀和出现了负数。 那么我们就转化为了处理左括号与这个的偏序关系,又因为字典序天然的贪心,所以说我们从前往后枚举能不能填左括号,如果能填就尽量填。 那怎么判断呢?我们只需要判断这个位置能不能找到偏序关系即可,而且与它数字相同的那一组也要满足。 这个思路很巧妙,位置用 `set` 维护就行了。 阅读全文
posted @ 2025-10-10 09:37 high_skyy 阅读(16) 评论(0) 推荐(0)
摘要:题目概述 定义一个 test 为一个长 \(n+1\) 的序列且第 \(1\) 项是 \(n\)。 定义一个 multitest 为满足如下条件的序列: 后 \(n−1\) 项可以划分为 \(m\) 个 test。 第 \(1\) 项为 \(m\)。 给定一个序列 \(a\),你需要对于 \(a\) 阅读全文
posted @ 2025-10-13 11:45 high_skyy 阅读(34) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P3084。 有 \(n\) 个牛,拍了 \(m\) 张照片,拍了 \([a_i,b_i]\) 中的牛,现在牛群中有一些特殊的牛,而且每一张照片有且仅有一个特殊的牛。问最多有多少特殊的牛。 分析 一开始会想到跟区间 阅读全文
posted @ 2025-10-16 15:28 high_skyy 阅读(23) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P5366。 有编号为 \(1\) 到 \(n\) 的物品,小 \(X\) 忘记了自己选的什么物品,它只记得他选的部分的物品的编号最大公约数为 \(g\),最小公倍数为 \(l\)。现在给你 \(q\) 个询问,每 阅读全文
posted @ 2025-10-17 20:26 high_skyy 阅读(27) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P3643。 给你 \(n\) 个班级,每个班级要么不选数要么选的数在 \([a_i,b_i]\),且选的数比编号比他小的班级选的数都要大,问有多少种方案(对 \((10^9+7)\) 取模)。 分析 感觉挺经典的 阅读全文
posted @ 2025-10-17 22:14 high_skyy 阅读(22) 评论(0) 推荐(0)
摘要:题目概述 给你 \(n\) 个数 \(a_i\)。 求:\(\max_{i\ne j\ne k}(a_i+a_j)\bmod a_k\)。 分析 好题! 我一开始看到是无从下手的。 但是细想一下,关键点在于 \(a_k\),所以的说,枚举 \(a_k\) 是必不可少的。 然后我们令剩余的数全部对 \ 阅读全文
posted @ 2025-10-20 20:25 high_skyy 阅读(15) 评论(0) 推荐(0)
摘要:题目概述 合并石子。 其中 \(n\leq 4\times 10^4\)。 分析 贪心。 注意到我们如果要合并 \(a,b,c\) 为一个,那么: 先合并前两个有:\(2a+2b+c\)。 县合并后两个有:\(a+2b+2c\)。 我们发现跟 \(b\) 没有关系,只跟 \(a,c\) 有关系。 所 阅读全文
posted @ 2025-10-21 09:17 high_skyy 阅读(16) 评论(0) 推荐(0)
摘要:题目概述 给你区间 \([L,R]\),从中选出 \(N\) 个数的 \(\gcd\) 恰好为 \(k\) 的数量。 分析 一开始直接套路:设 \(f(d)\) 表示倍数,\(F(d)\) 恰好。 然后搞完之后发现后面很复杂。 你需要进行一些转化,设 \(f(d)\) 表示倍数的方案(但是要求不全相 阅读全文
posted @ 2025-10-21 11:23 high_skyy 阅读(13) 评论(0) 推荐(0)
摘要:题目概述 这是一个 \(n\) 个点的无向图 \(G\),然后给你 \(m\) 次操作。 给你每个点的点权 \(p_i\),定义一条边 \((i,j)\) 的边权为 \(p_i+p_j\) 每个操作对应 \((x,l,r)\) 保证 \(x\notin [l,r]\)。 然后对于所有的 \(y\in 阅读全文
posted @ 2025-10-28 21:48 high_skyy 阅读(28) 评论(0) 推荐(0)
摘要:题目概述 给出一棵树,边权为 \(1\),现在让你求一个完全图的最大生成树的边权和,其中 \((i,j)\) 的边权为两个点在树上的路径。 动态加叶子节点。 分析 许多 trick 的题目。 考虑不加点怎么做,可以想到 Tree MST,用了点分治进行边优化,使得边的数量为 \(\mathcal{O 阅读全文
posted @ 2025-10-29 09:49 high_skyy 阅读(75) 评论(0) 推荐(0)
摘要:题目概述 给定长度为 \(n\) 的 \(a,b\),给定 \(m\) 个区间 \(l,r\),如果 \(\sum_{i=l}^r a_i=\sum_{i=l}^r b_i\),那么就令这个区间的 \(a_i=b_i\)。 问能否将所有的 \(a\) 变成 \(b\)。 分析 转化一下不难想到令 \ 阅读全文
posted @ 2025-10-29 20:37 high_skyy 阅读(20) 评论(0) 推荐(0)
摘要:题目概述 求有多少个 \((l,r)(l\leq r)\),存在一组 \((i_1,i_2,\dots,i_m)\) 满足: 对于任意 \(j\in[2,m]\) 有 \(i_j>i_{j-1}\)。 \(i_1=l,i_m=r\)。 \(|a_{i_j}-a_{i_{j-1}}|\leq k\)。 阅读全文
posted @ 2025-10-30 15:41 high_skyy 阅读(14) 评论(0) 推荐(0)
摘要:题目概述 Snuke 决定玩 \(N\) 张卡片和一个双端队列(即 deque)。每张卡片上显示一个从 \(1\) 到 \(N\) 的整数,而 deque 最初是空的。 Snuke 将按照从 \(1\) 到 \(N\) 的顺序,一次将卡片插入 deque 的开头或末尾。然后,他将执行以下操作 \(N 阅读全文
posted @ 2025-10-30 21:39 high_skyy 阅读(16) 评论(0) 推荐(0)
摘要:题目概述 题目链接:https://www.luogu.com.cn/problem/P4198。 给出一个 \(x\) 轴长度为 \(n\),\(y\) 轴长度为 \(10^9\) 的二维平面。 一共有 \(n\) 天,第 \(i\) 天令坐标为 \(x_i\) 的线段变长为 \(y_i\)(屋顶 阅读全文
posted @ 2025-11-03 20:53 high_skyy 阅读(18) 评论(0) 推荐(0)
摘要:题目概述 给一个含有 \(n\) 个点和 \(m\) 条边的无向连通图,求恰好有 \(d\) 个叶子的生成树的个数。 数据范围:\(1\leq d\leq n\leq 10,m\leq \frac{n(n-1)}{2}\)。 分析 注意到 \(n\leq 10\),我们可能会有 \(2^n\) 或者 阅读全文
posted @ 2025-11-07 11:40 high_skyy 阅读(35) 评论(0) 推荐(0)
摘要:题目概述 你需要确定 \(n\) 个数,每个数形如 \(\frac{1}{2^x}(x\geq 0)\),其中 \(x\) 是非负整数,求他们的和为 \(k\) 的方案。 数据范围:\(1\leq k\leq n\leq 3000\)。 分析 真的妙! 我们假设最后的结果为 \(\{\frac{1} 阅读全文
posted @ 2025-11-10 19:37 high_skyy 阅读(8) 评论(0) 推荐(0)
摘要:题目概述 给定一个整数数组 \(b_1, b_2, \ldots, b_n\)。 如果一个整数数组 \(a_1, a_2, \ldots, a_n\) 满足对于每个 \(i\)(\(1 \leq i \leq n\)),至少满足以下两个条件之一: \(b_i = a_i\),或者 \(b_i = \ 阅读全文
posted @ 2025-11-10 20:20 high_skyy 阅读(10) 评论(0) 推荐(0)
摘要:题目概述 给你一棵树,定义一条路径 \(a\rightarrow b\) 表示从 \(a\) 到 \(b\) 的最短路。 这是一颗 \(n\) 个点的树。 现在有 \(q\) 个工程方案,他们互相独立并且修建一条长度为 \(l\) 的路(你自己选,不能重边)。 对于每个工程方案你需要使 \(1\ri 阅读全文
posted @ 2025-11-13 15:55 high_skyy 阅读(29) 评论(0) 推荐(0)
摘要:题目概述 给出 \(n\) 个 \(a_i,b_i\),其中 \(a_i\) 代表 \(0\) 的个数,\(b_i\) 代表 \(1\) 的个数,让你求对于所有的 \((i,j)(i<j)\) 这些 \(0,1\) 组合起来的本质不同的个数之和。 分析 思维好题! 首先我们不难想到卡特兰数的方法去求 阅读全文
posted @ 2025-11-16 22:06 high_skyy 阅读(9) 评论(0) 推荐(0)
摘要:题目概述 在这个编辑器中,可以执行如下几种操作来输入某个字符串,设 \(X\) 为屏幕上的字符串,\(Y\) 为剪切板中的字符串,初始均为空串: 操作 A:输入字符 \(c\),即将 \(X\) 更新为 \(X+c\)。 操作 B:选择所有字符并剪切,即将 \(Y\) 更新为 \(X\),并将 \( 阅读全文
posted @ 2025-11-18 21:56 high_skyy 阅读(19) 评论(0) 推荐(0)
摘要:题目概述 定义好图当且仅当 \(1\) 和 \(n\) 不连通而且没有重边以及自环。 现在给出 \(n\) 个点和 \(m\) 条无向边,然后小 \(A\) 先手,可以选择两个点进行连边,小 \(B\) 后手。 请问先手是否有必胜策略,输当且仅当无法连边使得他是好图。 分析 博弈论好题。 一般先考虑 阅读全文
posted @ 2025-11-20 19:39 high_skyy 阅读(10) 评论(0) 推荐(0)
摘要:题目概述 给定一个数列 $ A = (A_1, \ldots, A_N) $。你可以对 $ A $ 进行以下两种操作,顺序和次数不限: 交换操作:设操作前 $ A $ 的长度为 $ K $。选择满足 $ 1 \leq i \leq K - 1 $ 的整数 $ i $,交换 $ A $ 的第 $ i 阅读全文
posted @ 2025-11-20 22:29 high_skyy 阅读(25) 评论(0) 推荐(0)
摘要:感觉是经典题目。 题目概述 给出一个有 \(n\) 个点并且其中有 \(k\) 个关键点的无根树,要求从 \(s\) 走到 \(t\) 途中必须包含这 \(k\) 个关键点,求最短路径。 分析 考虑以一个关键点作为根。 由于这道题目 \(s,t\) 是会变的,所以我们把注意力放在这几个关键点上面。 阅读全文
posted @ 2025-11-21 15:32 high_skyy 阅读(10) 评论(0) 推荐(0)
摘要:应该比CSP-S还简单。 T1 分讨+贪心即可。 T2 简单题,贪心 T3 原题,做过,USACO的题目,大概是只吃 \([l,r]\) 的,然后留一个 \(k\) 最后给一个牛吃。题单里面有。 T4 好玩。 我们假设我们并没有看到数据随机。 题目概述 给定一个有 \(n\) 个点的树,定义 \(F 阅读全文
posted @ 2025-11-27 20:51 high_skyy 阅读(47) 评论(0) 推荐(0)
摘要:题目概述 给定 \(n,m\),求有多少个长度为 \(n\) 的序列 \(a\) 满足 每个元素在 \([1,m]\)。 存在一种删除方式,使得整个序列得以被删除。删除方式:选择一个长度不小于 \(2\) 的区间且这两端数字相同即可删除。 数据范围:\(1\leq n\leq 3000,1\leq 阅读全文
posted @ 2026-02-26 21:43 high_skyy 阅读(5) 评论(0) 推荐(0)

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