![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
Avalon_cc
~~
展开
-
POJ 2184 (01背包)
题意:给出了n头牛的智力值和幽默值,要求智力值和幽默值和的最大值;思路:这是一个01背包问题,要么选要么不选,但由于智力值和幽默值都存在负值,那么问题就是怎么处理负值。我们只需要把数组延长一倍即可。dp[i]代表智力为i时幽默值的最大值。dp[j] = max(dp[j],dp[j-a[i]]+b[i]);需要注意的是在处理负数的时候要从0开始循环;代码:#include <iostream...原创 2018-03-20 11:07:33 · 279 阅读 · 0 评论 -
UVa 1218 (树形dp)
很久之前做的题,今天又做到了,顺手来补一下题解。。。题意:有n台电脑,互相以无根树的方式连接。现在将其中一些电脑作为服务器,且要求每台电脑有且必须连接一台服务器。(不包括本身是服务器的电脑),问需要多少台电脑作为服务器。思路:设u是父亲,v是u的孩子。d(u,0):u本身是服务器;d(u,1):u不是服务器,u的父亲是服务器。d(u,2):u不是服务器,u的父亲不是服务器,u的孩子必须有且只有一个...原创 2018-04-02 10:28:54 · 340 阅读 · 0 评论 -
Gym 100623J Just To Lucky(数位dp)
题意:1-n中有多少个数满足本身能被各个数位的和整除;思路:n是10的12次方,很快就能想到是数位dp,当时没板子,忘了数位dp怎么敲了,后来看了下题解,还是挺裸的数位dp。dp[pos][sum][remain][mod];pos:代表当前数位sum:各数位之和remain:当前枚举的数mod:枚举的膜9*12=108,所以只要枚举1-108即可;#include <iostream>...原创 2018-04-09 16:46:10 · 381 阅读 · 0 评论 -
Gym 101606F Flipping Coins(概率dp)
题意:给n枚硬币,初始全部反面向上,有k次机会挑选一枚硬币抛,求正面向上的最大数学期望。思路:求的是最大数学期望,所以只有两种情况。1.i<n时,挑选反面向上的硬币抛,朝上朝下的概率都为0.5;2.i==n时,这时全部都是反面朝上,挑选一枚硬币抛,朝上朝下的概率都为0.5;这样就可以得出dp方程;dp[i][j]表示第i次抛,有j枚硬币朝上。i<n时,dp[i+1][j] += dp[...原创 2018-04-09 17:44:40 · 219 阅读 · 0 评论 -
Subsequences CodeForces - 597C (树状数组+dp)
题意:给定一个长度为n的序列,给定一个k,求上升序列长度为k+1的序列数思路:dp[i][j]表示到第i个数位置,上升序列长度为j的个数。dp[i][j] = sum(dp[k][j-1]) (k<i)直接三重循环复杂度肯定不够所以考虑用树状数组来优化#include<cstdio>#include<cstring>#include&l...原创 2018-08-13 10:05:47 · 372 阅读 · 0 评论 -
CodeForces - 1051D Bicolorings(dp)
题意:给定一个2*n的矩形,有黑白两种颜色,定义两个小方格相邻如果他们的边界挨着并且颜色相同。求分成k个部分的方案数对998244353取模。思路:dp[i][j][2]代表第i列分成了j块,此时第i列的状态为0或1.0代表第i列颜色相同1代表第i列颜色不同这样先确定j=1时的情况。j=1时,dp[i][j][0] = 2;后面的状态转移方程就比较好推出来了j>...原创 2018-09-28 17:13:18 · 264 阅读 · 0 评论