摘要:
题意:给你一个n * m的矩阵,问所有的a * b的子矩阵的最小的元素的和是多少。题目给出了矩阵中的数的数据生成器。 思路:如果这个问题是1维的,即求所有区间的最小元素的和,用单调队列O(n)就可以做。对于这个问题,我们先给每一行建一个单调队列,枚举子矩阵的行坐标的左端点和右端点。在行的左右端点的基 阅读全文
摘要:
题意:有n只兔子需要喂养,每只兔子被喂养后的幸福感取决于与它相邻的兔子中已经被喂养的数量。现在问喂养这n只兔子可以获得的总幸福感最多是多少? 思路:初步分析题目发现,一只兔子被喂养获得的幸福感取决于其它兔子的喂养情况,所有首先想到状压DP。但是n到3000, 所以不行。我们发现兔子获得的幸福感只取决 阅读全文
摘要:
题面: 维护一个W*W的矩阵,初始值均为S.每次操作可以增加某格子的权值,或询问某子矩阵的总权值.修改操作数M<=160000,询问数Q<=10000,W<=2000000. Input 第一行两个整数,S,W;其中S为矩阵初始值;W为矩阵大小 接下来每行为一下三种输入之一(不包含引号): "1 x 阅读全文
摘要:
题意:你需要维护一个multiset,支持以下操作: 1:在某个时间点向multiset插入一个数。 2:在某个时间点在multiset中删除一个数。 3:在某个时间点查询multiset的某个数的个数。 思路:该题相当于要构建一个在任意位置插入,并查询前缀操作的某个值的多少。乍一看比较棘手,搞不好 阅读全文
摘要:
题意:有一颗树,每个点有一个点权,边权都是1,问路径上的所有点的gcd不是1的最长路径是多少? 思路:之前补这道题的时候,用分解质因数 + 树形DP做的,其实用点分治可以更暴力一点。对于这类统计树上路径的问题,点分治是一种通用,高效的解法。对于所有的路径,无非两种情况:经过某个点,不经过某个点,我们 阅读全文
摘要:
题意及思路:https://blog.csdn.net/mitsuha_/article/details/86482347 如果一条边(u, v),v的拓扑序小于u, 那么(u, v)会形成环,要反向。 代码: 阅读全文
摘要:
题意:给你个序列,你可以给某个数加上2的幂次,问最少多少次可以让所有的数相等。 思路(官方题解):我们先给序列排序,假设bit(c)为c的二进制数中1的个数,假设所有的数最后都成为了x, 显然x >= a[n],那么最后的总花费为Σbit(x - a[i])。不妨假设x = t + a[n], b[ 阅读全文
摘要:
题意:给你一颗树,树的边权都是偶数,并且边权各不相同。你可以选择树的两个叶子结点,并且把两个叶子结点之间的路径加上一个值(可以为负数),问是否可以通过这种操作构造出这颗树?如果可以,输出构造方案。初始树的边权都是0。 思路:A1很简单,只要判断是否有度数为2的点就可以了。对于A2, 由于边权各不相同 阅读全文