生日快乐,公主殿下!
点开这篇视频会自动播放,声音有点大小心点。
DP综合
讲解 DP 思路及经典 DP 模板。
ABC419E题解
有点耻辱,打比赛的时候去吃饭了,最后赛后 20 分钟就把 E 题写出来了……还给我掉了分╥﹏╥…又被 ABC 做局了。 题目大意 给定长为 $N$ 的整数序列,每次操作可以将单个元素加一,求至少多少次操作,使得每个长为 $L$ 的子段和为 $M$ 的倍数。 题目分析让每个固定长度的子段和为一个数的倍数……这一眼就很数学,或者说很有规律啊。我们发现,如果有$$\sum_{i=k}^{k+L-1}a_i\equiv \sum_{i=k+1}^{k+L}a_i\equiv0\pmod{M}$$那恒等式两边减去公共部分 $\sum_{i=k+1}^{k+L-1}a_i$,就有$$a_k\equiv a_{k+L}\pmod{M}$$那我们就可以把每隔 $L$ 个的数分为一类,每类的数字对 $M$ 取模相同。那这样,我们只需要把前 $L$ 项的数算出,就可以用把剩下的都算出来了。 只用算前 $L$ 项,观察到 $L\leq N,M\leq500$,我们可以枚举每一项和前一项模 $M$ 的余数,就可使用动态规划进行状态转移(一眼 dp)。 令 $dp_{i,j...
ABC416E题解
前言十年 OI 一场空,不开 long long 见祖宗。这是我第一次洛谷的官方题解。 题目大意给你一个 $N$ 个点,$M$ 条边的无向图,图中有 $K$ 个点有机场,有机场的点可以耗时 $T$ 时抵达另一个有机场的点。 有 $Q$ 个查询,分为 $3$ 种:加边、加机场、询问所有联通的点之间的最短距离之和。 分析注意到 $N\leq500$,还要求最短路、加边,我们可以直接使用邻接矩阵存图,并用 Floyd 计算多源最短路。 使用 Floyd 进行加边操作很简单,假设加上了连接 $u,v$ 长度为 $w$ 的边,状态转移方程如下: $$dis_{i,j}=min{dis_{i,j},dis_{i,u}+w+dis_{v,j},dis_{i,v}+w+dis_{u,j}}$$ 但是添加机场应该怎么处理呢?其实很简单(虽然我在比赛的时候 D 没开 long long 调了好久导致E没时间)。 可以添加一个虚点 $N+1$,让这个点与所有有机场的点连接一条长为 $\frac{T}{2}$ 的边。有点新建机场时,只需让它与 $N+1$ 连边,即转化为加边操作,如上述方程转移...
环染色方案数
题目描述有一个大小为 $n$ 的环,要求给环上每个节点染色为 $1 \sim k$ 中的某种颜色,使得任意两个相邻的节点颜色不同,询问染色的方案数。答案对 $10^9+7$ 取模。 数学推导注意到 $n,k\leq10^9$,连数组都开不了,于是我们考虑数学(还有数列大佬嘿嘿嘿)。 定义 $A_n$ 表示染色方案数,如右图: 若 $1,n-1$ 不同色,方案数为 $(k-2)A_{n-1}$ 若 $1,n-1$ 同色,方案数为 $(k-1)A_{n-2}$ $$\therefore A_n=(k-2)A_{n-1}+(k-1)A_{n-2}$$ 考虑到 $A_1=k$ 不满足上式,令 $a_n=A_{n+1},a_1=k(k-1),a_2=k(k-1)(k-2)$,也有: $$a_n=(k-2)a_{n-1}+(k-1)a_{n-2} \ ①$$ 熟悉的待定系数法,仿照斐波那契数列,设 $a_n+\mu a_{n-1}=\lambda (a_{n-1}+\mu a_{n-2})\ ②$ 联立 $①②$...
ABC408E题解
前情提要本题与这一道或最小生成树思路一样,做完本题可以做这一道巩固一下。 题目大意给你一个连通无向图,求 $1$ 到 $n$ 的简单路径的边权之或的最小值。 思路分析看到路径的最小值,首先想起最短路,用 dijkstra?但立即意识到不太行,并不是一个边权越大它与另个一个值按位或的值就会越大。 接下来以按位或的性质作为突破口。位运算中不同位是相对独立的,我们可以考虑从每一位枚举。 如果答案的第 $i$ 位可以为 $0$,无论后面其它位是多少和都不会超过 $2^{i-1}$。 即若能取 $0$ 则永远比取 $1$ 优。所以我们从高位到低位贪心,尽量让高位不要取 $1$,如果可以取 $0$ 就取 $0$。 注意到数据范围 $0\leq w <2^{30}$,枚举 $0\leq i \leq 30$。什么时候这一位必须要取 $1$ 呢?当只用这一位是 $0$,且前几位满足之前枚举的要求的边无法使 $1$ 与 $n$ 连通时,这一位就只能取 $1$ 了。 举个例子 第一个样例: 当 $i=2$ 时,我们去掉所有第 $3$ 位是 $1$ 的边,发现 $1$->$2$...
ABC407F题解
看到滑动窗口,很容易想到单调队列,但该做法在本题中时间复杂度达到了 $O(n^2)$,不可取,于是考虑计算每个元素在不同窗口的贡献。 首先,元素在哪些窗口会作为最大值?对于每一个 $i∈[1,n]$ 我们可以用单调栈预计算出左右两边第一个大于他的值,并得到其能向左/右扩展多少步。同时为了避免重复计算贡献,我们使用左闭右开,即: 向左找到最近的一个位置 $j$ 使得 $a_j\geq a_i$ (若不存在则为 $0$),则 $l_i=i-j$ 向右找到最近的一个位置 $j$ 使得 $a_j>a_i$ (若不存在则为 $n+1$),则 $r_i=j-i$ 接下来分类讨论,计算贡献,记 $k$ 为滑动窗口的长度,$x=min(l_i,r_i),y=max(l_i,r_i)$,有: 当 $k∈[1,x]$,对长度为 $k$ 的窗口有贡献的共有 $x$ 个,$ans_k=ans_k+a_i k$ 当 $k∈(x,y]$,对长度为 $k$ 的窗口有贡献的共有 $x$ 个,$ans_k=ans_k+a_i x$...
博客「创世纪」
我的博客,终于启用了1Hello World! 经历了 4 天的调试,反反复复删了 2 次容器,花 15 块买了个域名 muyang.blog,结果没钱升级所以服务不安全,暂时放弃了。能有现在的效果我已经很满意了。 我之后会持续在博客更新的,欢迎大家来观看!内容包括但不限于: 数学/信息知识分享 生活趣事(日记) 偶然灵感 看番、作品心得 总之,以此篇为证,2025/8/25 22:32 开始,这篇博客绝对会发扬光大!
ABC420经历
太好了,这次写了 ABCDEG,就差 F 就能 AK 了!(这次题太水了) A - What month is it?求 $X$ 月往后 $Y$ 月是几月。 有周期,直接对 $12$ 取模。但月份是 $[1,12]$,余数是 $[0,11]$,平移一下即可。 1cout<<(x+y-1)%12+1; B - Most Minority这题我读题读了10分钟,总共做了20分钟……所以我决定提供最好的题意。 题目大意$N$ 个人(奇数)投了 $M$ 轮票,每一行给你每个人投的共 $M$ 轮票($0$ 或 $1$),求得分最高的人,若有同分升序输出。 得分规则:设一轮票中,有 $x$ 人投 $0$,$y$ 人投 $1$ $x=0$ 或 $y=0$,所有人得 $1$ 分 $x<y$,投 $0$ 得一分 $x>y$,投 $1$ 得一分 由于 $N$ 是奇数,不存在 $x=y$ 题目分析数据范围很小,枚举即可。值得注意的就是竖着一列才是一轮! 12345678910111213141516 for(int j=1;j<=m;j+...












