
dp
ergedathunder
我见青山多妩媚,料青山见我应如是
展开
-
最长不下降子序列及二分优化
最长不下降子序列是动态规划的必做入门题 普通做法如下: #include #include #include using namespace std; int a[1001][3]; //a[i][1]用来记录输入的值,a[i][2]用来记录从最后一个到编号为i的数最长不下降子序列的长度,a[i][3]用来记录上一个数,便于打印; int main(){ int i,j,k,m,n; ci原创 2016-08-14 16:33:07 · 2081 阅读 · 3 评论 -
Corn fields poj 3254 (状压dp入门)
状态压缩动态规划: 动态规划的状态有时候比较恶心,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。 典型方式:当需要表示一个集合有哪些元素时,往往利用2进制用一个整数表示。 再普及一下位运算: & 按位与 如果两个相应的二进制位都为1,则该位的 结果值为1,否则为0 | 按位或 两个相应的二进制位中只原创 2017-01-21 16:53:53 · 324 阅读 · 0 评论 -
P2737 [USACO4.1]麦香牛块Beef McNuggets
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块。奶牛们正在想尽一切办法让这种可怕的设想泡汤。奶牛们进行斗争的策略之一是“劣质的包装”。“看,”奶牛们说,“如果你只用一次能装3块、6块或者10块的三种包装盒包装麦香牛块,你就不可能满足一次只想买1、2、4、5、7、8、11、14或者17块麦香牛块的顾客了。劣质的包装意味着劣质的产品。” 你的任务是帮助这原创 2017-03-21 21:48:26 · 1288 阅读 · 0 评论 -
多重背包的优化
好久没写博客,今天认真写一波~ 多重背包问题: 有N种物品和容量为V的背包,若第i种物品,容量为v[i],价值为w[i],共有num[i]件。怎样装才能使背包内的物品总价值最大? 复杂度O(n * V * sigma(num[i]))的算法大家学完01背包应该就会了 dp[j] = max(dp[j], dp[j - k*v[i]] + k * w[i]);(0<=k<=min(num[i]原创 2017-10-12 19:13:18 · 370 阅读 · 0 评论 -
BZOJ 4560 [JLOI2016]字符串覆盖
这是一道如果没想清楚就不要乱打的题目, 否则就像我一样~~ 题目描述 字符串A有N个子串B1,B2,…,Bn。如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠)这样A中的若干字符就被这N个子串覆盖了。问A中能被覆盖字符个数的最小值和最大值。 输入输出格式 输入格式: 第一行包含一个正整数T,表示数据组数。保证T 接下来依次描述T组数据,每组数据中: 第一行包含原创 2018-01-08 14:57:44 · 566 阅读 · 0 评论