摘要:
移动火柴,使表达式的值最大化。 题目存在限制条件,不能删除符号,每一个数字的位数不能发生变化,不能出现前导零,单个数字的值不会超过1e9。在这样的条件限制下,可以通过dp求解。 定义dp[i][j],其中i为第i个数字,j为此刻已经使用的火柴总数,dp[i][j]即此时能取得的最大值。 题目没有太多 阅读全文
摘要:
树的性质:n个点,n-1条边,任意两个点之间只存在一条路径,可以人为设置根节点,对于任意一个节点只存在至多一个父节点,其余为子节点。 记忆化树形dp模型较为抽象难以理解,以下通过由浅到深的方式解析树形dp以及树的性质。 树形dp求树的直径:(在一颗树里找到点X,Y,使得|XY|最大) 如图,我们令A 阅读全文
摘要:
给出上下界,让你求出其中满足条件:不同的数字的数量不超过k个的数字的总和,答案模998244353,比如123里不同的数字个数为3,113里不同的数字个数为2,111里不同的数字个数为1。 跟普通的数位dp相比,这道题的不同在于是求总和,不是求数字的个数,但我们可以在求数字个数的基础上再进行求和,以 阅读全文
摘要:
一开始没有想到枚举所有模数求解,卡了很久。 写法见代码注释。 阅读全文
摘要:
在一个平面内随机出现一些连续的区域,以这些区域构成一个矩形,求最大的矩形面积。 解决这一类问题的思路是:枚举所有高度,通过记忆化记录左右侧最远能到达的区域。 以下以一个类似柱状图的模型来说明: 要求求出图中最大的矩形面积。 图中存在四个不同的高度。 高度1左右都没有更高的,记l1=1,r1=1 高度 阅读全文
摘要:
A. Hard to prepare 题面比较复杂,先介绍下题意: n个二进制数字围成一圈,每个数字有k位,相邻的数字至少有一位是相同的,问有多少种合法方案(对1e9+7取模)。 这种描述是题意的简化,不过为了方便理解,我换一种说法: n个人坐成一圈,人一共有k个特点,相邻坐着的人至少要有一个相同特 阅读全文
摘要:
很明显,题目给出的an=n*n+n我们分别有求和公式: 1+2+…+n=(n+1)*n/2 1^2+2^2+…+n^2=n*(n+1)*(2*n+1)/6 很显然,题目给出的m,最多存在8个不同的质因数 那么结合容斥定理,我们最多进行255次求和公式运算,便可以找出结果。 那么,难点有二: 其一:如 阅读全文
摘要:
B. The writing on the wall 观察数据范围,n*m的矩阵(n<=1e5,m<=1e2) m的范围这么小,我们显然可以构造一个复杂度为O(n*m*m)的算法,那么这是否可行呢? 显然我们可以用n*m的时间遍历每一个矩阵,再用m的时间找出以这个矩阵为右下角顶点(假设我们遍历顺序为 阅读全文
摘要:
题目处理起来比较棘手,要分成两个步骤来完成。 先描述一下题意: n个数字排列在一个圆上,我们可以以任意一个数字为起点走不超过m步,每步都要走k格,要使走过的格子里的数字总和最大 步骤一: 先找出循环节,我们可以得知循环节的长度为n/gcd(n,k),一共有gcd(n,k)个循环节,我们每次都取出循环 阅读全文
摘要:
卡特兰数: 有两个维度,限制一个维度(长度为n)不得超过另一个维度(长度为m),所存在的合法方案数为卡特兰数:( C(m+n,n) - C(m+n,m+1) ) * m! * n!或( C(m+n,n) - C(m+n,n-1) ) * m! * n! n==m时表示为(2n)!/(n!*n!)*( 阅读全文