摘要: 题目大意 给定数组 \(b\),求有多少 \(a\) 数组满足 \(a_i=b_i \ or\ \sum\limits_{k=1}^i a_k=b_i\)。 分析 既然有前缀和,不妨将前缀和计入状态中,设 \(dp_{i,j}\) 为前 \(i\) 个前缀和为 \(j\) 的方案数。 考虑两种条件的 阅读全文
posted @ 2024-07-15 19:41 SmileMask 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 前言 开个巨坑,可能以后会三四天一更? 分析 路径考虑点分治,以下的 \(dis\) 皆为确定根节点的。 以下点对 \((i,j)\) 都钦定 \(dis_i\le dis_j\) 注意到很多点对对答案是无用的,条件为若点对 \((i,j)\)存在 \(k\in[l+1,r-1]\),满足 \(di 阅读全文
posted @ 2024-07-14 09:50 SmileMask 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 分析 可以设状态 \(f_{l,r,k}\) 表示区间 \([l,r],bit(x\in[l,r])\le k\)的{前缀长度,后缀长度,总方案数}。 合并即找一个 \(mid\),类似最大子段和的合并。 如何找个 \(mid\) 是解题的关键,关于二进制分治题目,令 \(mid\) 为 highb 阅读全文
posted @ 2024-07-14 08:42 SmileMask 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 分析 考虑相邻两个字符带来的约束。 若为 "SS",则满足 $|b_i-b_{i+1}| \le m $ 若为 "PP",则满足 \(|b_{i+1}-b_i| \le m\) 若为 "PS",则满足 \(tot_a=b_i+b_{i+1}\) 若为 "SP",则满足 \(tot_a+a_{i}+a 阅读全文
posted @ 2024-07-12 14:50 SmileMask 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 分析 首先显然有 dp 状态 \(g_i\) 表示前 \(i\) 个数,能进行最大的操作次数。 转移有 \(g_i=\max\limits_{j=1}^{i-1} (g_j+\frac{i-j}{2})[2|(i-j)]\) 但这里显然缺少转移条件。 经过基本观察,发现若 \(i\) 操作过,满足条 阅读全文
posted @ 2024-07-12 10:17 SmileMask 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 先考虑非特殊球的贡献,由于只会在非特殊球时改变操作人,那么将 \(n-k\) 个非特殊球插入 \(k\) 个特殊球的空中,第偶数个非特殊球会对 \(Bob\) 做贡献,第奇数个会对 \(Alice\) 做贡献。一共有 \(n-k\) 个球,在奇数位的概率为 \(\frac{\lceil\frac{n 阅读全文
posted @ 2024-07-11 19:30 SmileMask 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 经过基本观察,可得当点对 \((i,j)\) 合法时,有 \(a_i|b_j,a_j|b_i\),其中 \(a_i=i/gcd(p_i,i),b_i=p_i/gcd(p_i,i)\),证明显然。 如何维护?考虑开 \(mp_{x,y}\) 表示 \(x=a_i\),\(y|b_i\) 的个数。对于点 阅读全文
posted @ 2024-07-11 10:58 SmileMask 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 题目大意 每次在每个联通块中选一个点 \(u\),删除这个点使得联通块分成若干个联通块,再从联通块中选点 \(v\),在新树上连接 \(u,v\),求新树叶节点的最大个数。 分析 易转化为求原树的最大独立集,设 \(f_{u,0/1}\) 为以 1 为根时不选/选 \(u\) 的最大独立集。显然有: 阅读全文
posted @ 2024-07-11 10:17 SmileMask 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 题目大意 定义一个子数组的权值为 \(a_i \oplus a_j\),给定一个数组,求 \(kth\) 权值。 分析 可以想到二分解决,问题转化为求一个值的排名。 对于子数组,可以枚举右端点,求满足异或和 \(\le mid\) 的最大端点。 ,去更新当前所有右端点的最大左端点 \(L\),每个右 阅读全文
posted @ 2024-07-08 16:20 SmileMask 阅读(14) 评论(0) 推荐(0) 编辑
摘要: rt 阅读全文
posted @ 2024-07-07 17:23 SmileMask 阅读(157) 评论(1) 推荐(1) 编辑