- 博客(12)
- 问答 (1)
- 收藏
- 关注
原创 树 杭电多校1 1003 (线段树合并 + 启发式合并)
容易联想到启发式合并,顺着这个思路,思考怎么计算将一个数合并进一个集合对答案的贡献。,显然线段树能实现这个功能,于是我们在启发式合并的基础上再套一个线段树合并,这题就结束了。的差值有关,所以多存一个变量记录。的和,这样就可以快速算出贡献)(关于如何想到这一点,对于。,都需要能够快速求出这三个值。所以,对于每个集合和一个。的数,需要引进两个变量。,那么此时的贡献就为。
2024-08-07 21:15:31
646
原创 天天爱跑步 2024杭电多校6 1011(换根dp + 简单算法大杂烩)
对于这种有环以及有绝对值的式子,直接断环成链会好写很多,断环成链后官方题解用的双指针,笔者这里用的是单调队列,难度上感觉差不多。不会的算法可以去学,用到的也只是些简单算法。先考虑非环点,那么这个点一定会是一个以环上点为根的子树上的节点,这就相当于一棵简单树,但是呢,在这里我们需要先预处理出每个环上点不往以它为根的子树走所能走的最长距离。以上两式均可通过维护前后缀最值得出,不过,按照笔者的写法,第二个式子,除了维护后缀最值还需要开一个。首先,如果给出的是一棵简单树,则直接做两遍。个节点的基环树,求经过第。
2024-08-07 16:16:37
710
原创 Rigged Games (牛客多校3 J)
进入博客阅读体验更佳:[Rigged Games (牛客多校3 J) | 付诺の小站 (https://funuo0728.github.io/2024/07/26/Rigged-Games-%E7%89%9B%E5%AE%A2%E5%A4%9A%E6%A0%A13-J/)
2024-07-26 20:19:26
232
原创 Good Tree (牛客多校4 F)
的最大差值,很明显,形成一条链的时候差值最大,可以选取端点和最中间的点,可以得到最大差值。然后继续在节点为奇数个,且中间点到端点的简单路径长度为偶数时,与上面的分析类似。为奇数的时候再对中间点与端点距离的奇偶进行讨论,这里可以整合为,,则称这棵树为“好树”,求构造出一棵“好树”所需的最小节点数。最后再讨论节点为偶数个的情况,发现,加一个点可以将区间。的简单路径上没有多余的分叉的话,这两个点对应的。的左边加点是等效的,因为,当在节点。的之间的简单路径上加点。及以上的情况,可以将选取的节点。
2024-07-25 21:12:51
965
原创 Malfunctioning Typewriter (牛客多校3 E)
还有一个想法是考虑可以从哪些状态转移到当前状态,本质上感觉是差不多,笔者更习惯自己这种做法,所以这里就只介绍自己的写法了Ciallo~(∠・ω< )⌒★。次,每走一次遍删去所对应的字符串。那么,对于字典树上的某一节点,假设它的左子树上的叶子节点数为。的字符串,你有一个打字机,要求你打印一个字符串,并且它是由这。问采取最优策略,打印出满足要求的字符串的概率是多少?,需要保证遍历到这个节点的时候,往它的左儿子走了。并且每个节点对答案的贡献都是独立的,假设节点。我是这样思考转转移的,考虑。
2024-07-24 22:50:31
607
原创 Bridging the Gap2 (2024牛客多校3 A)
要将所有人送至右侧,自然不会让划回左侧后没体力的人回来,所以从右侧回来的人体力一定大于等于。,即第一次划向右侧后,剩下的体力值能划几个来回,由于将所有人都送至对岸的次数为。个人一开始处在河的左侧,可以推出,从左侧划船至右侧在整个过程中是一定可行的。那么首先,我们算出整个过程中从右侧返回左侧的总次数,个人处在河的一侧,现在有一艘船,船上只能容纳。所以,我们只需要保证整个过程中,每次都至少有。个人能从右侧划回左侧,并且他们的体力大于等于。,则可以将所有人送至河的另一侧,反之则不能。个人,最后上取整即可。
2024-07-24 18:34:33
947
原创 并 (杭电多校1 1012)
官方题解的做法是用任选的方案数减去没有被覆盖的方案数,思路比较清晰简单。笔者认为还算是一次较为有益的尝试,所以这篇博客主要探究容斥的做法,至于离散化以及二维差分或二维前缀将不再赘述。表示从仅被一个矩形覆盖的区域上选择覆盖了这一块区域的其中一块矩形的方案数,表示从仅被两个矩形覆盖的区域上选择覆盖了这一块区域的其中一块矩形的方案数,个不同的矩形,其所有覆盖部分的并集的面积的期望值,由于答案可能很大,请对。这一块可以看作是计算任选一块矩形,其所覆盖的区域对答案的贡献,个矩形,然后参考这样一个经典的图,
2024-07-23 01:01:57
1110
原创 Red Playing Cards (牛客多校2 I)
当[1, i - 1]中有数与a[i]相同,假设其下标为l,那么状态转移为f[i] = f[l - 1] + g[l][i] + (i - l + 1)\cdot a[i],其中g[i][j]表示这段区间最多能获得的分数比单纯用两端点删掉[l, r]这一区间所获得的分数要大多少;f[i]表示区间端点为i的区间[l, r]可获得的最大分数,状态转移则对区间[l + 1, r - 1]中的可操作区间对于操作与不操作取个max即可,由于可操作区间的端点一定大于i,所以i应该从大到小进行遍历。具体操作请参考代码。
2024-07-21 19:37:42
826
原创 Floor Tiles (牛客多校2 A)
上面一种类型为A,下面一种类型为B,现在一个n \times m(1 \le n,m \le800)的矩阵,最初会在某一格上放置一个A或B类型的地砖,你需要填满剩下n \times m - 1格,问是否有一种摆放方式使得恰好能使其显示k(1 \le k \le 2 \cdot nm)条曲线,若有,请输出Yes,并给出摆放方案,否则,输出No。当矩阵左上角为A时,曲线个数的取值范围为[n + m, \lfloor \frac{nm -n -m + 2}{2} \rfloor + n + m];
2024-07-21 18:55:48
933
原创 Mirror Maze (2024牛客多校1 I)
结果这样写还得把当前点所处的一整条链遍历处理才行,也就是说,笔者的做法是对于处在一条链上的点,首先按照反方向找到链的起点,再反向遍历到终点才行。继续思考每个每个点之间的关系,发现每个点只能唯一地转移到下一个点,所以光的运动轨迹要么是个环,要么是一条链,环与链都是各自独立的,并且链的两端一定对应矩形的边界。那么如何统计环和链所反射的镜子个数呢,只需要用一个set去存储所遍历过的镜子即可,注意到对于斜放的镜子,两面都有可能会被光经过,所以笔者采用set避免重复计算。
2024-07-21 18:00:19
575
原创 A Bit More Common (2024牛客多校1 B)
对于除去第0位和特殊位的其他位,每一位的总方案数为2 ^ i,减去全为1的情况为2 ^ i -1,再减去使这一位成为特殊位的情况2 ^ i - i - 1,最后这样的位有m - 1 - j个,那么方案数为(2^i - i - 1) ^ {m-1-j},第0位全部为1,每个数至少对应1个特殊位,那么现在确定特殊位的个数j,至少为i,至多为m - 1,取j个特殊位的方案数为C_{m -1}^{j},考虑二维dp,f[i][j]表示总共有i个数,j位特殊位,每个数至少对应一个特殊位的方案数。
2024-07-21 17:51:18
1042
1
空空如也
快速幂hdu1420
2022-11-15
洛谷P1835素数密度
2022-11-08
这两种写法有什么不同吗,
2022-11-03
看一下,两道入门题,急
2022-10-25
谁能来教一下,一道很简单的题
2022-10-25
B.Death's Blessing 能不能看看哪里错了啊
2022-10-21
洛谷,明明的随机数,帮改一下
2022-09-24
求解,兔纸的难题,数据总是溢出
2022-09-21
牛顿迭代法求数的平方根
2022-09-18
矩阵乘法,+=与=有什么区别
2022-09-16
C语言,解一元二次方程
2022-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人