随笔分类 -  -----动态规划 1.背包DP

摘要:题目链接:Educational Codeforces Round 26 D. Round Subset 题意: 给你n个数,让你选其中的k个数,使得这k个数的乘积的末尾的0的个数最大。 题解: 显然,末尾乘积0的个数和因子2和因子5的个数有关。 然后考虑dp[i][j]表示选i个数,当前因子5的个 阅读全文
posted @ 2017-08-21 22:55 bin_gege 阅读(205) 评论(0) 推荐(0)
摘要:题目链接:hdu 6125 Free from square 题意: 从不大于n的所有正整数中选出至少1个且至多k个使得乘积不包含平方因子。 题解: 很容易想到,选出来的数所包含的每个质因子只能有一个。 那么我们对所有的质因子进行状压dp,500以内大概有100个质因子。 那么就成了2100,显然不 阅读全文
posted @ 2017-08-16 16:41 bin_gege 阅读(246) 评论(0) 推荐(0)
摘要:题目链接:hdu 6092 Rikka with Subset 题意: 给你n和m,让你找一个字典序最小的含有n个数的A序列,使得A序列的和为m, 然后给你m+1个数,是A序列所有的集合的和的个数,然后让你找出这个A序列。 题解: 和题解一样的思想。 1 #include<bits/stdc++.h 阅读全文
posted @ 2017-08-08 18:11 bin_gege 阅读(136) 评论(0) 推荐(0)
摘要:题目链接:hdu_5800_To My Girlfriend 题意: 给你n和物品和一个重量m,让你求 题解: To My Girlfriend 令dp[i][j][s1][s2]表示前i个物品填了j的体积,有s1个物品选为为必选,s2个物品选为必不选的方案数(0<=s1,s2<=2),则有转移方程 阅读全文
posted @ 2016-08-06 15:40 bin_gege 阅读(161) 评论(0) 推荐(0)
摘要:题目连接:hdu_2159_FATE 题意:完全背包的题意 题解:把杀敌数看成背包的容量,维护一个经验的最大值,我是多开一维来记录最大的忍耐度,当然你也可以直接开一位,并记录忍耐度,最后扫一遍 1 #include<cstdio> 2 #include<cstring> 3 #define F(i, 阅读全文
posted @ 2016-07-11 19:54 bin_gege 阅读(158) 评论(0) 推荐(0)
摘要:题目连接:hdu_2844_Coins 题意:给你n个硬币的价值和对应的数量,问你从1到m有那些数能组合出来 题解:如果我们将硬币的价值看成一个物品的容量和价值,那么对应1-m,如果dp[i]==i,那么这个数就能组合出来,所以这题就变成了一个多重背包,多重背包可以分为完全和01背包,也可以直接用0 阅读全文
posted @ 2016-07-11 17:49 bin_gege 阅读(153) 评论(0) 推荐(0)
摘要:题目连接:hdu_2546_饭卡 题意:中文,不解释 题解:先拿5元来买最贵的,最后就是一个01背包,这里也算用到贪心的思想 1 #include<bits/stdc++.h> 2 #define F(i,a,b) for(int i=a;i<=b;i++) 3 using namespace st 阅读全文
posted @ 2016-07-09 22:41 bin_gege 阅读(122) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 题意:给一个概率p和n个银行,每个银行有一些钱和被抓的概率,问在满足被抓的概率在p以下,抢到的最多的钱是多少 题解:很裸的01背包,不过这里要换成钱的总量当作背包的容量,概率当作价值,维护一个最小 阅读全文
posted @ 2016-05-31 21:24 bin_gege 阅读(99) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5677 题意:给你N个串,问能否选出小于K个回文字符串使得选出的字符串的长度之和为L。 题解:很容易想到求一下回文字符串的个数和长度,然后就背包处理一下,数据比较水,用了manacher和二进制背包加速, 阅读全文
posted @ 2016-05-08 21:22 bin_gege 阅读(161) 评论(0) 推荐(0)