摘要:
把每天所学的东西记录下来,算是对自己的一种监督吧。 更新按照时间降序排列。2017-8-14 心态爆炸 为什么心态爆炸呢,昨天写了一道裸树链剖分,debug3小时,wa 31发,最后发现居然是在点更新的时候没写pushdown。。。滚了个大粗。这告诉我们一个道理,有lazy标记的时候... 阅读全文
摘要:
这是一篇老文章,不过由于无法找到最初的发文地址,这里就不能粘贴原文网址了。本站转载此文与ACMer们共勉。感谢acmerfight供稿。题解:还记得2年前的一个晚上,我和一个女孩一起写完了这篇文章。写完后,她哭了,我笑了。然后,她走了,我哭了。2年后,我又找到她,这次,我没有让她走掉... 阅读全文
摘要:
动态规划总结(01背包 完全背包 多重背包)一、学习资料1.UVA DP 入门专题 2.夜深人静写算法(二) - 动态规划 3.算法之动态规划 4.什么是动态规划?动态规划的意义是什么? 5.01背包问题和完全背包问题 6.背包九讲二、练习题目1.01背包练习 2.完全背包 多重背包... 阅读全文
摘要:
HDOJ(HDU).2844 Coins (DP 多重背包+二进制优化)题意分析先把每种硬币按照二进制拆分好,然后做01背包即可。需要注意的是本题只需要求解可以凑出几种金钱的价格,而不需要输出种数。因此用0表示不可以,1表示可以。最后对dp数组扫描一遍即可。代码总览#include ... 阅读全文
摘要:
HDOJ(HDU).1059 Dividing(DP 多重背包+二进制优化)题意分析给出一系列的石头的数量,然后问石头能否被平分成为价值相等的2份。首先可以确定的是如果石头的价值总和为奇数的话,那么肯定不能被平分。若为偶数,则对valuesum/2为背包容量,全体石头为商品做完全背包... 阅读全文
摘要:
HDOJ(HDU).2191. 悼念512汶川大地震遇难同胞――珍惜现在,感恩生活 (DP 多重背包+二进制优化)题意分析首先C表示测试数据的组数,然后给出经费的金额和大米的种类。接着是每袋大米的价格,重量和袋数。 每种大米的数量是有限的,应该能看出是多重背包的问题。关键是多重背包的... 阅读全文
摘要:
HDOJ(HDU).2159 FATE (DP 带个数限制的完全背包)题意分析与普通的完全背包大同小异,区别就在于多了一个个数限制,那么在普通的完全背包的基础上,增加一维,表示个数。同时for循环多写一层即可。#include #include #include #include #... 阅读全文
摘要:
HDOJ(HDU).4508 湫湫系列故事――减肥记I (DP 完全背包)题意分析裸完全背包代码总览#include #include #include #include #define nmax 100005#define nn 105using namespace std;int... 阅读全文
摘要:
HDOJ(HDU).1284 钱币兑换问题 (DP 完全背包)题意分析裸的完全背包问题代码总览#include #include #include #include #define nmax 33000#define ll long longusing namespace std;l... 阅读全文
摘要:
HDOJ(HDU).1114 Piggy-Bank (DP 完全背包)题意分析裸的完全背包代码总览#include #include #include #include #define nmax 100000#define INF 0x3f3f3f3fusing namespace ... 阅读全文
摘要:
HDOJ(HDU).3466 Dividing coins ( DP 01背包 无后效性的理解)题意分析要先排序,在做01背包,否则不满足无后效性,为什么呢? 等我理解了再补上。代码总览#include #include #include #include #define nmax ... 阅读全文
摘要:
POJ.3624 Charm Bracelet(DP 01背包)题意分析裸01背包代码总览#include #include #include #include #define nmax 13000#define nnmax 3500using namespace std;int d... 阅读全文
摘要:
HDOJ(HDU).1864 最大报销额题意分析题目有点问题,原题中说的单项物品的价值不得超过600元应该是单类物品的价值不能超过600元。一开始以为是01背包,后来按贪心写过了。一张一张发票处理,读入一整张发票的数据。然后检查一下里面是否有不能报销的类别(即除ABC)以外的其他类。... 阅读全文
摘要:
HDOJ(HDU).2546 饭卡(DP 01背包)题意分析首先要对钱数小于5的时候特别处理,直接输出0。若钱数大于5,所有菜按价格排序,背包容量为钱数-5,对除去价格最贵的所有菜做01背包。因为这时候还剩下5块钱,直接买最贵的那个菜,就可以保证剩下来的钱数是最小的。代码总览#inc... 阅读全文
摘要:
HDOJ(HDU).2602 Bone Collector (DP 01背包)题意分析01背包的裸题#include #include #include #include #define nmax 1005using namespace std;int v[nmax],w[nmax]... 阅读全文
摘要:
UVA.357 Let Me Count The Ways (DP 完全背包)题意分析与UVA.UVA.674 Coin Change是一模一样的题。需要注意的是,此题的数据量较大,dp数组需要使用long long 类型;另外输出方案为1个和多个的时候,语句是不同的。代码总览/* ... 阅读全文
摘要:
UVA.10192 Vacation (DP LCS)题意分析某人要指定旅游路线,父母分别给出了一系列城市的旅游顺序,求满足父母建议的最大的城市数量是多少。对于父母的建议分别作为2个子串,对其做LCS处理,最后的结果即为所求。核心状态转移方程: if(c1[i] == c2[j]) ... 阅读全文
摘要:
UVA.10130 SuperSale (DP 01背包)题意分析现在有一家人去超市购物。每个人都有所能携带的重量上限。超市中的每个商品有其相应的价值和重量,并且有规定,每人每种商品最多购买一个。求这一家人所能购买到的最大价值是多少。每个人的所能携带的最大重量即为背包容量。此题只是换... 阅读全文
摘要:
UVA.10066 The Twin Towers (DP LCS)题意分析有2座塔,分别由不同长度的石块组成。现在要求移走一些石块,使得这2座塔的高度相同,求高度最大是多少。问题的实质可以转化为LCS(最长公共子序列)问题。 推荐一篇写的比较好的博文: 动态规划求解最长公共子序列(... 阅读全文
摘要:
UVA.562 Dividing coins (DP)题意分析给出一堆不同面额的硬币,要求将这这些硬币分为价值接近的2堆(越接近越好,相等的情况最佳,且单个硬币不可再分),并最后输出这2堆硬币价值差值的绝对值。先累加求出这堆硬币的总和sum,然后令sum/2为背包容量,所有硬币为商品... 阅读全文
摘要:
UVA.674 Coin Change (DP)题意分析有5种硬币, 面值分别为1、5、10、25、50,现在给出金额,问可以用多少种方式组成该面值。每种硬币的数量是无限的。典型完全背包。 状态转移方程 dp[j+c[i]] = dp[j] + dp[j+c[i]]代码总览/* ... 阅读全文
摘要:
HDOJ(HDU).2660 Accepted Necklace (DFS)点我挑战题目题意分析给出一些石头,这些石头都有自身的价值和重量。现在要求从这些石头中选K个石头,求出重量不超过W的这些石头的最大价值是多少?类似于之前讨论到的数字选不选的问题,此处面临的情况是石头选不选,若选... 阅读全文
摘要:
HDOJ(HDU).1058 Humble Numbers (DP)点我挑战题目题意分析水代码总览/* Title:HDOJ.1058 Author:pengwill Date:2017-2-15*/#include #include #include #inclu... 阅读全文
摘要:
HDOJ(HDU).1025 Constructing Roads In JGShining’s Kingdom (DP)点我挑战题目题目分析题目大意就是给出两两配对的poor city和rich city,求解最多能修几条不相交的路。此题可以转化为LIS问题。转化过程如下:数据中有... 阅读全文
摘要:
HDOJ(HDU).1003 Max Sum (DP)点我挑战题目算法学习—–动态规划初探题意分析给出一段数字序列,求出最大连续子段和。典型的动态规划问题。用数组a表示存储的数字序列,sum表示当前子段和,maxsum表示最大子段和。不妨设想:当sum为负数的时候: 1.当下一个数字... 阅读全文