E. K Multiple Longest Commom Subsequence
题意
两个数组 1≤k,n,m≤1e3, 问最长 k 倍公共子序列是多少, k 倍子序列指的是, 将子序列等分, 每份为 k 个数, 且这 k 个数相同. 如 1,1,2,2 是一个 2 倍子序列
题解
pre_a[i] 表示从 i 开始往前数, 第 k 个 a[i] 的下标
代码
1 | int pre_a[N],pre_b[N]; |
F. Defending Plan Support
题意
给一棵树, 每个点有权值 ω(i), 每条边有权值 d(i,j), 找一个点 x 使 F(x)=∑ω(i)×d(x,i) 最小
题解
以 1 为根节点画出这棵树, 设 j 的父节点为 i, tot=∑ω(i), sum[i] 表示以 i 为根节点的子树的权值和
F(j)=F(i)+d(i,j)×(tot−2∗sum[j])代码
1 | ll dp[N],ans,tot; |
K. Bitmap
题意
给一个 n×n(1≤n≤2000), 一个 m×m(1≤m≤1000,m≤n) 的矩阵, 值的范围为 [0,255], 问 A 中有几个 B, 只要每个元素相差一个定值就视为相同
题解
hash, 枚举 A 中 B 的左上角
代码
1 | const int M=1.1e3; |
I. Beautiful Array
题意
长度为 y, 乘积为 x 的序列的个数
如 x=2,y=2, [1,2],[2,1],[−1,−2],[−2,−1]
题解
分解 x,
x=pa11∗pa22⋯pamm对方案数来说, 不同素因子是独立的, 对于 pi, 其贡献相当于将 ai 个相同的球放进不同的盒子, 且允许有空, 为
Cy−1ai+y−1再考虑负数, 负号只能为偶数个, 其贡献为
C0y+C2y+C4y+⋯=2y−1代码
1 | ll qPow(ll a, ll b, ll c) { //求(a^b) % c |