![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
文章平均质量分 72
DP
_lifehappy_
这个作者很懒,什么都没留下…
展开
-
不要666升级版(数位DP,三次方和)
不要666升级版∑(pre+suc)2n×pre2+2×pre∑suc+∑suc2\sum(pre + suc) ^ 2\\n \times pre ^ 2 + 2 \times pre \sum suc + \sum suc ^ 2\\∑(pre+suc)2n×pre2+2×pre∑suc+∑suc2∑(pre+suc)3∑(pre3+3×pre2×suc+3×pre×suc2+suc3)n×pre3+3×pre2∑suc+3×pre∑suc2+∑suc3\sum (pre + suc) ^原创 2021-07-13 20:36:39 · 238 阅读 · 0 评论 -
P5175 数列(矩阵快速幂)
P5175 数列anb=(x×an−1+y×an−2)2x2×an−12+y2×an−22+2×x×y×an−1an−2x2×an−12+y2×an−22+2×x×y×an−2(x×an−2+y×an−3)x2×an−12+y2×an−22+2×x×y×(x×an−22+y×an−2×an−3)a_n ^ b = \left(x \times a_{n - 1} + y \times a_{n - 2}\right) ^ 2\\x ^ 2 \times a_{n - 1} ^ 2 + y ^ 2 \t原创 2021-07-13 20:04:05 · 247 阅读 · 0 评论 -
吉哥系列故事——恨7不成妻(数位 DP)
吉哥系列故事——恨7不成妻∑i=1n(pre+suc)2∑i=1npre2+suc2+2×pre×sucn×pre2+∑suc2+2×pre∑suc\sum_{i = 1} ^{n}(pre + suc) ^ 2\\\sum_{i = 1} ^{n} pre ^ 2 + suc ^ 2 + 2 \times pre \times suc\\n \times pre ^ 2 + \sum suc ^ 2 + 2 \times pre \sum suc\\i=1∑n(pre+suc)2i=1∑np原创 2021-07-13 19:59:41 · 261 阅读 · 0 评论 -
E. Surprise me!(莫比乌斯反演 + 虚树 DP)
E. Surprise me!∑i=1n∑j=1nϕ(ai×aj)d(i,j)设pai=i∑i=1n∑j=1nϕ(i×j)d(pi,pj)∑i=1n∑j=1nϕ(i)ϕ(j)ϕ(gcd(i,j))×gcd(i,j)×d(pi,pj)∑d=1ndϕ(d)∑i=1nd∑j=1ndϕ(id)ϕ(jd)×d(pid,pjd)[gcd(i,j)=1]∑d=1ndϕ(d)∑k=1ndμ(k)∑i=1nkd∑j=1nkdϕ(ikd)ϕ(jkd)×d(pikd,pjkd)T=kd∑T=1n(∑i=1nT∑j=1nT原创 2021-07-08 21:19:04 · 280 阅读 · 3 评论 -
P1848 [USACO12OPEN]Bookshelf G(线段树优化 DP)
P1848 [USACO12OPEN]Bookshelf G有nnn间物品,每个物品有两个属性Wi,HiW_i, H_iWi,Hi,宽度跟高度,要求把这nnn件物品划分成若干连续的组,每组内∑Wi≤L\sum\limits W_i \leq L∑Wi≤L,并且要求最小化每组最大高度之和。设f[i]f[i]f[i]表示以iii为结尾的代价,则有:f[i]=min(f[j]+maxj≤k≤ih[k])[∑k=jiw[i]≤L]f[i] = min(f[j] + max_{j \leq k \leq原创 2021-05-19 16:46:12 · 258 阅读 · 0 评论 -
POJ1742 Coins(DP)
Coins思路没分析复杂度写了个二进制拆分,然后做010101背包O(nlog(c)m)>10e7了O(nlog(c)m) > 10e7了O(nlog(c)m)>10e7了,所以还是想办法优化吧。我们引入一个needneedneed数组,need[j]need[j]need[j]表示,在枚举到第iii件物品的时候要得到jjj这个状态,需要物品iii的最小个数。所以在转移的时候我们只要考虑$need[j - a[i]] < c[i] ? ,如果是符合要求的,并且,如果是符合要求原创 2020-10-15 20:18:42 · 293 阅读 · 0 评论 -
[CQOI2007]涂色PAINT
[CQOI2007]涂色PAINT思路显然我们可以考虑用dpdpdp来求解问题,碰到那种一眼没思路的题稳是dpdpdp没跑了,那么我们就往dpdpdp方面去考虑吧。我们定义dp[i][j]dp[i][j]dp[i][j],表示把[i,j][i, j][i,j]这个区间涂上颜色要用多少步,显然有dp[i][j]=1,i==jdp[i][j] = 1, i == jdp[i][j]=1,i==j,接下来我们考虑如何使这个状态进行转移,当有两个邻近的颜色使一样的时候,我们可以把它们当成一种颜色一起涂色,所原创 2020-07-27 22:09:03 · 396 阅读 · 0 评论 -
乌龟棋(dp)
乌龟棋思路最优值问题,显然可以通过dpdpdp解决,我们定义dp[i][j][k][l]dp[i][j][k][l]dp[i][j][k][l]表示到达1+i∗2∗j+3∗k+4∗l1 + i * 2 * j + 3 * k + 4 * l1+i∗2∗j+3∗k+4∗l这个点之前已经走过的价值最大的值(i,j,k,li, j, k, li,j,k,l分别是走一步,走两步,走三步,走四步的数量),显然这个点我们可以从dp[i−1][j][k][l]dp[i - 1][j][k][l]dp[i−1][j][原创 2020-07-24 17:37:49 · 236 阅读 · 0 评论 -
C 简单瞎搞题(牛客练习赛22)(bitset优化dp)
Bitset优化Dp题目链接一般DP做法显然后面的数是与前面的数字相关的,所以我们有dp数组,dp[i][j]dp[i][j]dp[i][j]选取了jjj个数,iii是否可以被创造出来,如果可以其值为1,否则为0。所以我们显然有如下的状态转移方程:n = read(); dp[0][0] = 1;//初始化,一开始dp[0][0]就是是满足条件的。 for(int i = 1; i <= n; i++) { l = read(), r = read(); for(in原创 2020-07-17 21:50:08 · 303 阅读 · 0 评论 -
[SCOI2008]着色方案(DP)
题目链接思想显然我们后面的决策是跟前一步相关的,因此我们可以考虑DP,可以用一个15维的数组来进行转移,但是这样显然回mle,所以我们考虑如何压缩状态,由于1<=Ci<=51 <= C_i <= 51<=Ci<=5,所以我们可以有dp数组:dp[a1][a2][a3][a4][a5][last]dp[a_1][a_2][a_3][a_4][a_5][last]dp[a1][a2][a3][a4][a5][last],a1a_1a1表示可以涂1块木块的有原创 2020-07-17 13:28:50 · 256 阅读 · 0 评论 -
二进制状态压缩DP
描述给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并且 ...原创 2020-02-21 17:15:46 · 312 阅读 · 0 评论 -
背包问题——第一篇
一,01背包最简单也是最经典的背包问题。原创 2019-12-10 22:37:44 · 526 阅读 · 1 评论