随笔分类 - dp
摘要:377. 组合总和 Ⅳ - 力扣(LeetCode) dp,跟完全背包反着来,可以当作是爬楼梯来做,相当于每次爬的楼梯数是从数组种选的。 1 #define IO std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) 2 #define bug(x)
阅读全文
摘要:3117. 划分数组得到最小的值之和 - 力扣(LeetCode) 思路 对于这种划分区间段的问题,通常我们可以先考虑dp,dp[i][j]表示第i个num数作为第j段最后一个元素得到的前j段的最小和。用二分去查找合法区间的左右端点,因为m最大为10,考虑使用10颗线段树(用RMQ也可以)去维护区间
阅读全文
摘要:https://codeforc.es/gym/101982 题意 给定k,b两个数,求在0到2^b-1区间中是k的倍数的数的二进制数中1的个数的总和。 题解 dp。 d[i][j]表示:前二进制长度为i的数中模k为j的数的二进制数里1的个数的总和。(所以最终答案就是d[b][0]) f[i][j]
阅读全文
摘要:https://codeforces.com/gym/102082 题意 给定一些数,可以重新排序,求其中最长的等差数列的长度 思路 d[i][j]表示以a[i]和a[j]为开头的等差数列的最大长度,具体见代码 if后面意思就是说两边加起来等于中间的值两倍的时候就可以构成等差数列了,比中间值两倍大的
阅读全文

浙公网安备 33010602011771号