题解 CF466E Information Graph
题目:CF466E 洛谷链接 CF 链接 模拟赛把 T1 跳了来写这个(T3),离线思路很简单,比 T1 思维题好想。 首先,最终状态是若干颗上下级关系的树,所以我们可以将整个问题放在最后建好的树树上考虑。 对于操作一,将 $x$ 与 $y$ 连边即可。 对于操作二,可以用并查集优化复杂度快速找出当前的最高上司。 对于操作三,我们在每次操作二时把上下两个节点 $(u_p, u_d)$ 储存下来,判断节点 $x$ 是否在路径 $i$ 上可以使用最近公共祖先(LCA),若 $\text{LCA}(u_p, x) = u_p \land \text{LCA}(x, u_d) = x$,则 $x$ 在路径上,反之则不在。 需要注意的是,最终状态不一定是一棵树,可能有多棵树,在 LCA 初始化时要处理一下。 倍增写 LCA 的话时间复杂度为 $O(n \log...
题解 CF755D PolandBall and Polygon
题目:CF755D 洛谷 Codeforces 这是一道数据结构大水题。 打模拟赛的时候把这道题放到了 T4,做完 T1 就看这道题有思路就写出来了。 首先考虑如何暴力模拟计算答案,当每链接一条边 $(x, x + k)$ 时,被分割的区域数 $s$ 会增加 $u + 1$,其中 $u$ 是与这条边在正多边形中有交叉的线段数量。而题目保证边数(即点数)$n$ 与 $k$ 互质,说明在每一个点都被连接后才会回到初始节点,共链接 $n$ 条边。我们把每一次的连边存下来,在新的一次连边时判断有多少条边与此时的连边相交。暴力复杂度 $O(n^2)$,期望得分 $0$ 分。 考虑优化。时间复杂度的瓶颈是计算重复的边。想出了一个很奇怪的判断方法,用两颗树状数组储存每条边的左节点和右节点,由于 $k$ 是确认的,所以只用一个节点的位置就可以求出另一个节点。对于左节点与当前边 $(l, r)$ 相交时,统计左节点在区间 $[r - k + 1, r - 1]$ 的线段数量,右节点则统计 $[l + 1, l + k - 1]$。如果节点越界的话特判一下 $\pm n$...
题解 P11838
题目:P11838 [USACO25FEB] Printing Sequences B - 洛谷 赛场上很自然想到的是区间 DP。 定义 $dp[l][r]$ 为区间 $[l, r]$ 内最少使用 PRINT 语句的次数。考虑转移,在 $[l, r]$ 内枚举 $m$,若 $[l, r]$ 区间可以由 $[l, m]$ 循环得到,就把 $[l, m]$ 的答案转移给 $[l, r]$。如果不可以就把两个区间 $[l, m]$ 与 $[m+1,r]$ 答案相加。 转移方程如下: $$ dp[l][r]= \begin{cases} dp[l][m]+dp[m+1][r] & \text{任意情况} \ dp[l][p] & [l, r] \text{可由若干个} [l, p] \text{循环得到} \end{cases} $$ 常数不是很大,直接暴力循环判断是否满足即可。时间复杂度 $O(T \times n^4)$。 慢着,似乎哪里有问题?这个复杂度能过? 对于任意情况的转移是 $O(T \times n^3)$。把视线放到暴力判断那一块,不难发现,在枚举...
组合数学笔记
等填坑。 二项式定理 定理: $$ (a+b)^{n} = \sum_{i=0}^{n} C_{n}^{i} a^{i} b^{n-i} $$ 当 $b=1$ 时: $$ (a+1)^n = \sum_{i=0}^{n} C_{n}^{i} a^{i} $$ 二项式反演 定理: $$f(i)=\sum_{j=i}^{n}(-1)^{j-i}C_{j}^{i} g(j) $$ $$ g(i)=\sum^{n}{j=i}C^{i}{j} f(j) $$ 证明: $$ \sum_{j=i}^{n} (-1)^{j-i} C_{j}^{i} g(j) = \sum_{j=i}^{n} (-1)^{j-i} C_{j}^{i} \sum^{n}{k=j} C^{j}{k} f(k) = \sum_{k=i}^{n} f(k) \sum_{j=i}^{k} C^j_k \times C^i_j \times (-1)^{(j-i)} $$ 上述等式中求和保证 $i \leq j \leq k \leq n$ 。 令 $\sum_{k=i}^{n}f(k)$ 右侧的系数为 $a$ ,即...
2025/2/9~10 集训 DP IV & V
昨天没写,今天一起补上。 寒假集训(动态规划四)补 - 题单 - 洛谷 | 计算机科学教育新生态 寒假集训(动态规划五)补 - 题单 - 洛谷 | 计算机科学教育新生态 D4T1 #(subset sum = K) with Add and Erase/背包の撤销 题面 原题面 ABC321F 题意 $Q$ 次询问,每次加入或取出一个物品,求此时维护出价值 $K$ 的方案数。 思路 用 $dp[j]$ 表示前 $i$ 次操作后凑出 $j$ 的方案数,有 $dp[j]`=dp[j]+dp[j-x]$ ,可推出柿子。 代码 Submission #62645136 D4T2 Infected Tree/简单染色问题 题面 原题面 CF1689C 题意 给一棵树,节点有点权,一个节点的价值为包含该节点的连通块的权值之和的最大值。求每个节点的价值? 思路 定义 $siz[u]$ 表示以 $1$ 为根节点时,子树 $u$ 的大小 $f[u]$ 表示表示以 $1$ 为根节点时,子树 $u$ 中所有节点 $siz$ 之和 $g[u]$ 表示以 $u$ 节点为根是,所有节点的子树的...
2025/2/8 集训 DP III
在听这个,很上头。 今天挺逆天,就树的那道题有 $60$ 分qwq,写不下去了。 T1 Porcelain 题面 原题面 CF148E $n$ 个货架,用二维数组表示价值,每个货架只能取出头部若干和尾部若干。取 $m$ 个物品价值之和最大多少。 代码 1234567891011121314151617181920212223242526272829303132333435363738int dp[N][M];int val[N][N];int num[N][N];int siz[N];int pre[N],suf[N];int n,m;signed main(){ //输入 n=read(); m=read(); for(int i=1;i<=n;i++){ siz[i]=read(); for(int j=1;j<=siz[i];j++){ num[i][j]=read(); } } //预处理 val[i][j] 第 i 个货架选 j 个最大贡献 for(int...
2025/2/7 集训 DP II
赛事得分:$100 + 0 + 50 + 30$ 鉴定为史。 T1 Palindrome Basis 题面 原题面 CF1673C 题意 问一个数拆成回文数,有多少种拆分方案。 思路 完全背包。想了一个小时差点没想出来。然后局势就很明朗了。 代码 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// Contest code#include<iostream>#include<cstdio>#include<cmath>#include<queue>#include<cstring>#include<algorithm>//#define int long longusing namespace std;typedef long long ll;typedef pair<int,int> pii;const ll inf=1e18;const int...
2025/2/6 集训 DP I
赛事得分:$100 + 0 + 12 + 30$ 鉴定为史。 T1 Running Miles / 最佳の锻炼 题面 原题面 CF1826D Luogu 题意 给一个数组,选取一个区间 $[l, r]$ ,收益为区间最大的三个值减去区间长度,求最大收益 思路1(非动态规划) 令选择的数为 $a_l,a_m,a_r$ ,易得 $l = a_l \leq a_m \leq a_r = r$ 。 将柿子整理为 $(a_l + l) + a_m + (a_r - r)$ ,可以用前缀/后缀最大值优化,枚举 $a_m$ ,答案即为 $pre[i-1]+a_i+suf[i+1]$ ,复杂度 $\text{O}(n)$...
标签外挂笔记
带 下划线 的文本 带 着重号 的文本 带 波浪线 的文本 带 删除线 的文本 键盘样式的文本 command + D 密码样式的文本:这里没有验证码 彩色文字 在一段话中方便插入各种颜色的标签,包括:红色、黄色、绿色、青色、蓝色、灰色。 超大号文字 文档「开始」页面中的标题部分就是超大号文字。 Volantis A Wonderful Theme for Hexo default info success error warning bolt ban home sync cogs key bell 自定义font awesome图标 纯文本测试 支持简单的 markdown 语法 支持自定义颜色 绿色 + 默认选中 黄色 + 默认选中 青色 + 默认选中 ...
随笔之二
写在前面 聊聊压力、生活、音乐和一滩烂泥。 噢多麼美麗的一顆心 怎麼會 怎麼會 就變成了一灘爛泥 噢多麼單純的一首詩 怎麼會 怎麼會 都變成了諷刺 我想要說的 前人們都說過了 我想要做的 有錢人都做過了 我想要的公平都是不公們虛構的 我对于摇滚的态度很奇怪。有时候听着嫌吵,有时候却像珍宝一样握着爱不释手。我听歌喜欢按照专辑听,一次必须听完一整张。在这个快时代里可能显得有些奇怪,但是专辑和歌单不一样。专辑是作者给自己做的诗集,作品里有起承转合,歌单则是后人整理的,只有精华,却总少了些什么。专辑里有电影开场一样的 Intro...