摘要:
提供一个不用组合数的方法。 首先对 \(a_i\) 从小到大排序。 我们定义状态 \(f_{i,j}\) 表示当前最大值为 \(a_i\),排列 \(p\) 填了前面 \(j\) 个方案数。 那么有初值 \(f_{0,0}=1\)。 依题意,我们有两种转移。 第一种是在排列后面加入一个高兴的人,枚举 阅读全文
摘要:
很有意思的动态规划。 这道题的关键点在于想到用 string 作为动态规划的 \(f\) 数组。 首先前 \(i\) 次操作只能影响前 \(i+1\) 个位置,所以我们定义状态 \(f[i]\) 表示前 \(i\) 次操作,前 \(i+1\) 个位置字典序最小的串。 对于 OUDR 操作,直接模拟一 阅读全文
摘要:
JOISC 2020 有一个团子提交题是个加强版,可以看下。 如果我们将可以得团子得地方看成一个点,如果两个团子有交点,则连边,我们要求得就是最大独立集。 由于只有横竖团子之间有边,所以是二分图,直接跑最大匹配即可。不知道时间是否卡的过去,没有试。 但是观察一下发现相交只有三种情况。 RGW R R 阅读全文
摘要:
找规律题。 不难想出区间 \(\rm DP\) ,但是 \(\mathcal{O}(N^3)\) 已经是信息极限了。 观察这道题的特殊性质。 我们只关注最终序列,每一个位置是否取反,所以我们打一个暴搜的代码。 #include<bits/stdc++.h> #define rep(i,a,b) fo 阅读全文
摘要:
比较套路的题目。 首先我们需要求出 \(S\to T\) 的最短路可行边。 我们分别以 \(S/T\) 为起点,跑最短路得到 \(dist_1,dist_2\) ,如果两端 \(dist\) 之和加上边的长度为最短路,则当前边出现在一条最短路中。 现在从 \(U\to V\) ,免费的一定是一条连续 阅读全文
摘要:
DP 神题。 首先观察表格,发现异色的点对无论如何都会产生 \(f\) 的贡献,同色的点对当且仅当该颜色不是它们 \(\rm LCA\) 管辖子树中出现次数最多的颜色时,才会产生 \(2f\) 的贡献。 由于贡献只有 \(0,f,2f\) 的区别,所以我们不难想到,如果我们固定一个路由器的颜色为 \ 阅读全文
摘要:
给你 \(n\) 个字符串,对每个字符串,你可以删除其任意一个字符或让其保持原样,求最后使得字符串字典序不降得方案数。 不难想到一个 \(\mathcal{O}(n(\sum |S|)^2)\) ,我们定义状态 \(f_{i,j}\) 表示前 \(i\) 个字符串,结尾的字符串是第 \(i\) 个字 阅读全文
摘要:
很好奇这个以度数为 \(0/1/2\) 为状态是怎么推出来的。 不应该是定义状态 \(f_{i,0/1}\) 表示以节点 \(i\) 为根的子树中,\(i\) 父亲这条边选不选的最优方案么。 这样当 \(op = 1\) 时,可以从子树中传一条单链上去,否则必须在节点 \(i\) 处匹配完。 htt 阅读全文
摘要:
考虑到 \(N\le 10^4\) ,显然是 \(\mathcal{O}(N^2)\) 可过。 所以我们可以直接枚举两个区间计算贡献。 显然如果我们知道两两区间的距离,可以直接前缀和 \(\mathcal{O}(NQ)\) 求出最终答案。 现在我们计算两两区间的距离,直接枚举并匹配是 \(\math 阅读全文
摘要:
一看就是什么正经的题目,乱搞就完事了。 输出的规模应该是 \(\sqrt{N}\) 级别的,否则也不会让输出。 分析一下,每种玩具有 \(c_i\) 个,那么可以玩 \(\prod (c_i+1)\) 天。 所以写个暴搜就行了。状态 \((n,\ last,\ sum)\) 表示剩下的数乘积为 \( 阅读全文