摘要:
每一件物品有两个属性。朴素思想是把这两种属性都设计到状态里,但空间爆炸。又因为这两个属性相互间存在制约关系(差的绝对值最小),不妨把答案设计入状态中,设$f[i][j]$选$i$个人,两者之差$j$。这样dp。于是$O(NM^3)$暴力背包即可,记录转移,也就是$g[i][j][k]$来表示当前到这 阅读全文
摘要:
数 位 D P 开 long long 首先第一问是转化。 于是就可以二进制下DP了。 第二问是递推,假设最后$n-1$个01位的填法设为$f[i-1]$(方案包括0),于是有fib数列递推关系(很好推),然后矩阵快速幂即可。 一开始思路有点乱,导致边界初始化屡次出错。 WA1:见标题赤字。 WA2 阅读全文
摘要:
这题面什么垃圾玩意儿 首先看到问题格式想到数位DP,但是求的是平方和。尝试用数位DP推出。 先尝试拼出和。设$f[len][sum][mod]$表示填到$len$位,已填位置数位和$sum$,数字取余为$mod$时候的方案数,$g[len][sum][mod]$表示在这种情况下的所有满足要求的数的和 阅读全文
摘要:
状压暴力显然可做。但是数据出的再大一点就要稳T了。理论$O(n4^m)$,只不过实际跑不满。 考虑用轮廓线DP,设$f(i,j,S)$为处理到$(i,j)$时候(这格还不确定)的轮廓线为$S$的情况(相当于把$(i,1\sim j-1)$和$(i-1,j\sim m)$的$m$个数用$S$压起来)下 阅读全文
摘要:
题解网上一搜一大坨的,不用复述了吧。 只是觉得网上dp方程没多大问题,但是状态的表示含义模糊。不同于正常哈密顿路径求解,状态表示应当改一下。 首先定义一次移动为从一个点经过若干个点到达另一个点,则$f[S][i]$个人认为应当表示经过若干次移动,每次移动的终点状态记为$1$,由此构成的集合$S$,也 阅读全文
摘要:
统计$[L,R]$内LIS长度为$k$的数的个数,$Q \le 10000,L,R < 2^{63}-1,k \le 10$。 首先肯定是数位DP。然后考虑怎么做这个dp。如果把$k$记录到状态里没有用。需要找到有效方法统一的表示前面填好的数的特点方便之后的填数。 回顾LIS过程,当前数结尾的LIS 阅读全文