随笔分类 - 动态规划
摘要:http://blog.csdn.net/cc_again/article/details/25866971 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力、建模抽象能力、灵活度。 本人动态规划博客地址:http://blog.csdn.n
        阅读全文
            
摘要:d.最长上升子序列 s.注意是严格递增 c.O(nlogn) #include<iostream> #include<stdio.h> using namespace std; const int MAXN=1005; int a[MAXN],b[MAXN]; //b[k]是序列a中所有长度为k的递
        阅读全文
            
摘要:d.求对字符串最少添加几个字符可变为回文串。 s. 法1:直接对它和它的逆序串求最长公共子序列长度len。N-len即为所求。(N为串长度) 因为,要求最少添加几个字符,我们可以先从原串中找到一个最长回文子序列,然后对于原串中不属于这个回文子序列的字符,在串中的相应位置添加一个相同的字符即可。那么需
        阅读全文
            
摘要:d.n个节点的树,删除一个点,得到的最大联通分支大小不大于总节点数的一半,求这样点的集合 s.树形dp c.网上找的一个,看着头文件啥的可以参考,先贴在着,抽空自己写写 #include <map> #include <set> #include <list> #include <cmath> #i
        阅读全文
            
摘要:题意:不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,包括A和B,总共有多少个windy数? 思路:数位dp #include<iostream> #include<stdio.h> #include<string.h> #include<algor
        阅读全文
            
摘要:题意:求n~m间的数中,多少不带4和62的数。 思路:数位dp #include<iostream> #include<stdio.h> using namespace std; long long dp[10][3]; /* dp[i][0],不含有不吉利数字 dp[i][1],不含有不吉利数字,
        阅读全文
            
摘要:题意:求1到n有多少个数中含有49,1<=n<=2^63-1(2^32是10位,2^64约20位) 思路:数位dp dp[i][0],长度为i,不含有49的个数dp[i][1],长度为i,不含有49,最高位为9的个数dp[i][2],长度为i,含有49的个数 状态转移方程: dp[i][0]=10*
        阅读全文
            
摘要:题意:完全背包 思路:完全背包 可以直接转化为 多重背包,num[i]=_v/c[i];//转为多重背包然后运用 多重背包 3种解法如下码1: #include<iostream> #include<stdio.h> #include<string.h> using namespace std; i
        阅读全文
            
摘要:题意:给出经费的最大值n,再给出 种类m和每种的袋数c、价格p、重量h,求能买大米的最大重量 思路:每种物品有一个固定的次数上限。为多重背包问题。转换为01背包来做 以下方法,均为转化为01背包来做思路1:物品不摊开,选取每一种时,进行讨论,(相当于竖着填背包v的一列,一列一列的填码1:kj #in
        阅读全文
            
摘要:题意:给出包裹的大小v,然后给出n块骨头的价值value和体积volume,求出一路下来包裹可以携带骨头最大价值 思路:01背包 1.二维数组(不常用 #include<iostream> #include<stdio.h> #include<math.h> using namespace std;
        阅读全文
            
摘要:题意:给出一个存钱罐的容量,给出n种硬币的价值p和重量w(注意:每种硬币可无限取) 1.如果存钱罐能够正好塞满,输出塞满存钱罐需要的最少硬币的价值。 2.若不能完全塞满,则输出impossible。 思路:每种物品可以放无限多次。所以为完全背包问题。此题是求最小值,为完全背包的变形。 注意初始化 d
        阅读全文
            
浙公网安备 33010602011771号