10 2024 档案
摘要:P9131 [USACO23FEB] Problem Setting P 题解 注意到最终形成的困难序列是一个不断包含的子集的关系,包含是非严格单调的,考虑转化为单调的形式易于计数 dp。具体地,对于一些相同的困难值 ,算出其内部排列数 ,于是转化成了单调的 dp 形式。
阅读全文
摘要:[ABC134F] Permutation Oddness 题解 朴素的想法显然是状压 dp,枚举选择的子集,但复杂度不可接受。 考虑优化。注意到对于 ,它的贡献只会有两种可能性, 。于是初步的想法是按照 的正负性选择分类。考虑到对于相同正负性的
阅读全文
摘要:[ABC213G] Connectivity 2 题解 套路的经典图上计数题。 考虑枚举和 相连的子集 。答案显然由两部分构成, 集合和 相连的方案数 和 对于 的补集所有的方案数 。答案就是二者相
阅读全文
摘要:P8386 [PA2021] Od deski do desk 题解 考虑一个大的序列一定被分成几个区间来删除。朴素的 dp 定义是 表示前 个数,最后一个数元素是 的方案数。然而这样不仅不好转移,而且设不下状态。不难发现所有值是等价的。考虑这样一个
阅读全文
摘要:P9021 [USACO23JAN] Subtree Activation P 这种看上去就很不常规的东西不用想着怎么构造最佳方案,这条路一定是行不通的,考虑转化题意。 考虑变化的实质只有两种:全 状态和 子树全满的状态转化; 子树全满和 子树全满的状态
阅读全文
摘要:P9020 [USACO23JAN] Mana Collection P 题解 首先考虑对于长为 的最优路径,最优的方法一定是先在起点等 秒再走以确保收集到的最大。 我们显然考虑状压 dp。考虑最大法力值难以计算,正难则反,考虑使未被选择的
阅读全文
摘要:CSP-S 模拟赛 37 T1 口胡题。显然尽量靠近中间更优,且选端点一定不劣,于是依据结论将中点设为所有端点的中位数。 代码: #include <bits/stdc++.h> #define N 300005 #define int long long using namespace std;
阅读全文
摘要:CSP-S 模拟赛35 T1 其实是傻逼题。常见的套路是枚举右端点,动态维护左端点的贡献。发现右端点移动一位只会对一种颜色有影响,那么考虑线段树维护区间的答案,区间加减每个颜色即时的贡献即可。 代码: #include <bits/stdc++.h> #define N 1000005 #defin
阅读全文
摘要:CSP-S 模拟赛34 T1 考虑对原序列将 的左右分成两个序列。simple 的想法是分别从 开始跑前缀和,每一次总跑到下一个小于它的点,然后依次类推。发现这样做碰到序列最小值之后难以继续。 然而我们发现这样跑点的过程从前往后和从后往前是等价的。这样考虑的原因是发现这样的选
阅读全文
摘要:构树 题解 好题,除了毒瘤卡空间。 “恰好” 这个形式很二项式反演。设 表示树上钦定 条边和原树相同的方案数, 表示树上恰好有 条边和原树相同的方案数,那么原先的形式是: \[f(n)=\sum_{i\ge n}{i\choose n}g(i
阅读全文