摘要:
题目链接 题解 可以发现,字符串子序列并集的大小即为 f 函数,并集可以由交集容斥得出,因此考虑交集。对于字符串 si ,f(si)=′z′∑x=′a′(cnti,x+1),其中 cnti,x 表示字符 x 在 阅读全文
摘要:
题解 设dp状态dp[i][j]表示前i行黑色单元格间列数(含黑色)单调不降且第i行列数为j的方案数,也就是t行及以上部分的方案数。因为洞的左右位置不影响它的形态,所以只需记录列数而非左右端点。\(dp[i][j]=\sum\limits_{k=2}^mdp[i-1][k]\ti 阅读全文
摘要:
题解 设逆序对个数为cnt,如果只有Jeff进行游戏,只需执行cnt次操作(每次操作减少一个逆序对)。考虑Furik,他有12的概率增加一个逆序对,也就是增加2次操作;剩下的一半概率减少一个逆序对,也就是不增加操作数。所以他每次操作对期望的贡献是$2\times \ 阅读全文
摘要:
题目链接 简化题意 构造一个长度为 n×m 的合法括号序列。第 i 个位置上的左括号代价为 ai mod n,右括号代价为 bi mod n。求构造符合要求的括号序列的最小代价。 题解 首先,可以推出一个时间复杂度为 \(O(n^2m) 阅读全文
摘要:
题解 分行考虑,每一行都被火山截断为若干个区间(由于n数据范围较大,只考虑有火山的行)。如果上一行不存在与当前区间有交集的区间,则将其删去,判断最后是否留有可行区间即可。 具体实现:将每行的区间放入一个集合之中,对于一个区间[l,r]\(,二分上一行中第一个左端点\)≥l的区间和最后一 阅读全文
摘要:
题解 对于一对方向相反的牛,它们之间的顺序是无关紧要的,因为一定有一头会看到对方被挤奶,所以只需要考虑方向相同的牛。对于向左的牛,从右到左挤奶,反之亦然。 代码 #include<bits/stdc++.h> #define int long long using namespace std; co 阅读全文
摘要:
题解 易得,两条路径一定分别通过$(1,2)到(n-1,m)和(2,1)到(n,m-1)的路径。因此可以算出(1,2)→(n-1,m)和(2,1)→(n,m-1)的方案数,将它们相乘,但这样会多余计算在中间有交点的情况。因为(1,2)→(n,m-1)\ 阅读全文
摘要:
题解 因为一棵树的权值被根节点各子节点的子树平分,因此可以求出叶子节点i的权值对根节点的贡献,设其为1vai。也就是说,对于节点i,1权值的比重是1vai⋅ai,而目标就是将这些叶子节点单位权值的比重统一,并使其最小。因为随着 阅读全文