Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为:每次都取走当前值最大的且可取的数,并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex 表示 x x x 的前一个元素, n x t x nxt_x nxtx 表示 x x x 的后一个元素, w ( x ) w(
mk<=5e6,m<=5e4 m k <= 5 e 6 , m <= 5 e 4 mk<=5e6,m<=5e4 解法 先考虑可以有相同怎么做: 枚举一个第一个脱离限制的位置,然后用一个脱离限制的数来安排使得异或和为0,其他数可以任意取(要分是否脱离限制确定方案数)。这样可以计算出g(n)表示n个可以相同的数,异或和为0的答案。 斯特林反演式子: [n=1]=∑m的集合划分A
求 ∑ k = 0 n f ( k ) x k ( n k ) \sum_{k=0}^{n} f(k) x^{k} \binom{n}{k} k=0∑nf(k)xk(kn) n ≤ 1000 \ n \le 1000 n≤1000, m ≤ 1000 \ m \le 1000 m≤1000 求杨辉三角,枚举即可。 m = 0 \ m=0 m=0 根据二项式定理,即 a
[ZJOI2017]仙人掌 发现可以把一个仙人掌看做所有环组成的图,如果不是环而是单个边,我们可以手动给它填一条边变成环 考虑一棵树怎么做? 就是在树上选若干条互不相交的链的方案数,考虑树形 d p dp dp f i f_{i} fi 表示到 i 的子树的方案数, g i g_i gi 表示一个点有 i 条边相连,两两配对或者单身的方案数 g i = g i − 1 + ( i − 1
T1 开始是这么写的,修改父亲的时候,改 E [ A [ i ] ] E[A[i]] E[A[i]],然后改 A [ i ] A[i] A[i] 一圈的 C [ i ] C[i] C[i] 然后这样最坏是 O ( n ) O(n) O(n) 的 令 G [ i ] = B [ i ] − E [ i ] ∗ D [ i ] + E [ i ] G[i]=B[i]-E[i]*D[i]+E[
传送门 没有题解是真的秀,连蒙带猜搞了一天结果今天早上才写完,不过还好有 3 个神仙学长助力 不知道题解是怎么想到的,所以只好直接说结论了 经观察发现可以先求出 ( i k i − 1 ) 1 i \binom{ik}{i-1}\frac{1}{i} (i−1ik)i1,这个在 k = 2 k=2 k=2 的时候是卡特兰数也就是二叉树的个数 考虑将其扩展为 k k k 叉树,即证
C a v e P a i n t i n g s Cave Paintings CavePaintings 考虑一层与上面一层的连边,最后会连成一个森林,一个点选了它的子树必须都选,于是做一遍树形 d p dp dp 就可以了,建边可以用并查集模拟 C o d e Code Code N o n − D e c r e a s i n g S u b s e q u e n c e
3.14 3.14 3.14题解:如果一个大区间不合法那么必存在一种颜色使得它在这个区间的出现次数 < b [ l e n ] <b[len] <b[len], 注意到 l e n len len 缩短 b [ l e n ] b[len] b[len] 将增大,于是我们选出的子区间必定不包含这种颜色 这种颜色会将区间分成若干段,但是没必要分裂完,我们找到左右第一个不满足的颜色往下分,复杂
传送门 先说一下 k = 2 k=2 k=2怎么做,要求 E ( a i 2 ) = E ( ∑ ( a i + a j ) 2 ) = 2 ∑ E ( a i 2 ) + 2 ( ∑ a i ) 2 E(a_i^2)=E(\sum (a_i+a_j)^2)=2\sum E(a_i^2)+2(\sum a_i)^2 E(ai2)=E(∑(ai+aj)2)=2∑E(ai2)+2(∑a
A A A 考虑容斥,1表示钦定选,0 的位置表示 0/1 均合法,这样的好处是可以只考虑 1 的限制 并且最后我们只需对超集容斥就可以得到答案 发现钦定一些 1 选的意义就是在原图上选若干条不相交的链,复杂度和拆分数有关 预处理一个集合有多少条链,那么就是一个子集卷积 并且发现只用求出最后一项,所以可以 O ( 2 n ) O(2^n) O(2n) 暴力容斥回去 复杂度 O ( n 2
A A A l d x ldx ldx 大神的 60 60 60 分做法: 用二元组 ( a , b ) (a,b) (a,b) 记录最小段数和最小代价来 d p dp dp,记 d p i dp_i dpi 表示以 i i i 结尾的最小值 考虑如何为一个区间选择一个最优的匹配点,暴力枚举 d p j dp_j dpj,考虑将某一个区间从 j j j 挪到 i i i
Pro Sol 考场疯狂 r u s h rush rush 两份 5 k 5k 5k 的代码,死掉了。。。 A A A:直接小常数 n 3 n^3 n3 d p dp dp 可以拿 70 考虑可反悔贪心,一个不是最优的策略是每次将这一位加 2,将下一位加 1 考虑反悔,用最快的策略将当前位填满,并且只需要考虑反悔 i − 1 i-1 i−1 的决策 对于 ( i − 1 ,
A A A 发现只需要压黑白开头存不存在为偶数的,若存在,其他偶数边随便选不选这条边的选发是唯一的, d p dp dp 即可, C o d e Code Code B B B 补集转换一下,枚举两个不交的集合,考虑他们向外的连边,强制指向这个集合 对于选定的集合,要统计其联通的方案数,容斥 d p dp dp 即可, C o d e Code Code C C C 性质:最后选
Sol A A A 考虑每个位置有个被最早染黑的时间,求的就是这些时间的第 k k k 大 m i n m a x minmax minmax 容斥一下,就是求 ∑ T ≠ ∅ ( ∣ T ∣ − 1 k − 1 ) ( − 1 ) ∣ T ∣ − k ( n + 1 2 ) ( n + 1 2 ) − c o e f ( T ) \sum_{T\neq \empty}\binom{
A A A 从父亲继承线性基,每一位保留深度最大的点, C o d e Code Code B B B 考虑二分这个 k k k,我们暴力建出图,用 h a s h hash hash 来判重和连边,合法当且仅当没有环,考虑怎么输出方案,首先可以在 d a g dag dag 贪心出每个点向后的最长链,只需要考虑起点,发现需要支持比较两个串的字典序,选好起点之后在 d a g d
A A A 考虑限制为 [ l , r ] [l,r] [l,r] 中没有值出现两次, m a x i ∈ [ l , r ] a i = l e n max_{i\in [l,r]} a_i=len maxi∈[l,r]ai=len, m i n i ∈ [ l , r ] a i = 1 min_{i\in [l,r]}a_i=1 mini∈[l,r]ai=1,对每个右端点统计,
我找不到原题链接 题目描述 题解 答案可以分为两部分:树上的原边、额外边。假设我们要用 i i i 条额外边,那么一定是选当前可选的最短的 i i i 条边,所以选的额外边的权值和一定是关于 i i i 单增的下凸包。 对于树上的原边,如果不加额外边那么代价一定是 2 ∗ 边 权 和 2*边权和 2∗边权和。加一条额外边时,正好可以让树上少走一条简单路径,我们要最小化代价,即
Description n < = 5 e 5 n<=5e5 n<=5e5 Solution O(n^4) 直接放弃思考矩阵树即可过 n < = 80 n<=80 n<=80,获得23分。 O(n^2) 考虑先枚举一些特殊边,将n个点分成m个联通块,再用prufer序列计算这个完全图的方案数: n m − 2 ∏ i = 1 m s i n^{m-2}\prod_{i=1}^ms
题目描述 对于一棵树,我们可以将某条链和与该链相连的边抽出来,看上去就象成一个毛毛虫,点数越多,毛毛虫就越大。例如下图左边的树(图 1 )抽出一部分就变成了右边的一个毛毛虫了(图 2 )。 输入格式 在文本文件 worm.in 中第一行两个整数 N , M ,分别表示树中结点个数和树的边数。 接下来 M 行,每行两个整数 a, b 表示点 a 和点 b 有边连接( a, b ≤ N )。