- 博客(8)
- 收藏
- 关注
原创 路径计数
路径计数题解考场上看错了一个条件,导致整整爆炸了85pts,时运不济命途多舛我们容易发现,只有当一个子串能裂成的两个子串是不同的时候才会产生两份的贡献,如果他们的子串是一样的则其产生的贡献必定只有一份。我们可以用差分的思想,先将总的答案求出,再减去算重复的部分。考虑对于一个前边有个字符,后边有个字符,长度为的全相同子串,会多产生多少的贡献。我们先定义表示前边个字符,后边个字符的方案数。容易得到dp转移方程式。这明显是一个近似于杨辉三角形的结构,可以得到。我们可以知道,它所
2020-10-31 17:31:18 189
原创 [牛客2020第4场]牛半仙的妹子序列
牛半仙的妹子序列题解《关于我因过于这道题卡常而将其称为"贞卡常"的这件事》场上被卡常了,下来加了几个优化就卡过去了。这道题应该很容易看出是一个dp,40pts的O(n2)O(n^2)O(n2)的dp式子应该是很好想的。我们定义dpidp_{i}dpi为在只关注第iii个数到第nnn个数之间的序列构成合法序列的方案数。容易得到方程式dpi=∑j=i+1n[满足条件]dpjdp_{i}=\sum_{j=i+1}^{n}[满足条件]dp_{j}dpi=∑j=i+1n[满足条件]dpj。而答
2020-10-30 19:49:50 295
原创 [NOI2018]归程
归程题解挺好想的一道题很容易想到,由于一辆车只能在没有积水的路面上行驶,答案就是它所在的连通块中所有点距号节点的最小值。如果每次询问都来缩一次点的话明显会T掉,而它每次询问的积水线又是不同的,我们考虑如何维护连通块的海拔。由于海拔越高能满足的肯定越多,我们就想到了通过海拔构建一棵最小生成树,当查询为时就是查询大于海拔的路构成的生成树上点所在的联通块的最小距点的距离。很明显,如果可以离线下来做的话这个问题很快就解决了,可是它又要求强制在线,考虑如何在线维护并查集。可持久化的并查集明显.
2020-10-25 10:29:39 195
原创 [SP1839]The Bookcase
The Bookcase题解蛮简单的一道题看到这道题应该很容易想到数位dp。但如果直接把高度,厚度全加到维度上去明显会MLE。我们定义为前本书放到书架上第1行厚度为,第二行厚度为时的每行最大高度之和,第三行的厚度可以通过前缀和算出来。由于不知道每行书的高度,我们可以先将所有的书根据高度排序,这样保证加进去时一行如果有书就一定不会增加高度,这样如果一行厚度为0就没书。这样,很容易就可以得到状态转移方程式了,这里不列出。时间复杂度。注意,三行都必须有书。源码#inclu
2020-10-24 17:11:30 123
原创 [牛客2020第三场]牛半仙的妹儿Tree
牛半仙的妹儿Tree题解其实是很板子的一道树剖,但Indra大佬用分块做出来了我们发现,如果我们将3操作与之前的1操作相匹配,可以发现,3操作的答案为。上面这个式子可以拆分为。只有当上面式子的值应该是小于时它才可以不无视牛半仙。我们假设使得上式最小,故。可得。由于从到上的每一个点都有可能成为之后的祖先,而对于点最小的一定会在上取得。我们可以先将每个点的初值赋值为,之后每次1操作对到加上的标记,查询就查询到上是否有值是小于的,这些操作都可以用树链剖分来进行维护。时间复杂
2020-10-24 08:44:16 181
原创 [牛客2020第三场]牛半仙的妹儿数
牛半仙的妹儿数题解第一次在比赛中被T1(这里指应该被当做T1的题)卡绝望,赛上竟然只会的做法。容易发现,如果我们把看作一个整体的话,它是与成规律变化的。因为在第二个操作中的,的大小不会对我们造成任何影响,于是我们可以把看作一个整体,设作。于是我们得到了下面的操作:当时,操作变为。否则,操作变为。此时,我们可以看出,的值是一个定值。于是,一个不知道如何处理转换过程的傻子出现了,竟然直接用二分去找进行多少次操作达到临界条件!我们发现,在操作一中的,而如果的话,,于是,我们对每次操
2020-10-23 19:07:39 81
原创 [牛客2020第1场]牛牛的凑数游戏
牛牛的凑数游戏这篇稍微比我牛客上的那篇详细一点,其实也看不出来题解其实蛮简单的一道题很容易发现对于一个区间,我们将其排序后,如果前个数之和小于第个数,那么前个数之和是一定无法构造出来的。于是,我们就要找到最早的一个使得其前缀和不存在。很明显,如果用暴力的话,是明显会T掉的,只能拿30pts,时间复杂度,这是在算上递增数列的情况下。考虑如果当前前缀和为时,所有的小于的数都可以用来更新前缀和,因为比他们小的数必定可以构造出来。而如果这样加小于的数的话,由于每次翻的再下一次不会再产生贡献,
2020-10-18 08:26:20 908
原创 [CF932E]Team Work
Team Work题解数学题都贞德好讨厌呀开始推公式。由于当时可以直接用暴力做了,我们下面只考虑的情况。原式。现在这个样子其实可以直接用斯特林数做了,但我们还是先考虑将斯特林数展开一下原式我们设,,也就是后面那一块。我们考虑通过线性递推的方式处理,计算,可得,所以,得到递推式我们只需要线性处理出组合数与的值即可,时间复杂度,也可以用埃筛的方式线性求出。源码#include<cstdio>#include<cmath&g
2020-10-05 17:14:21 976
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人