随笔分类 -  DP

CodeForces #363 div2 Vacations DP
摘要:题目链接:C. Vacations 题意:现在有n天的假期,对于第i天有四种情况: 0 gym没开,contest没开 1 gym没开,contest开了 2 gym开了,contest没开 3 gym开了,contest开了 所有题主每天可能就有三种选择,rest,do sport,do cont 阅读全文
posted @ 2016-09-08 18:17 小小八 阅读(243) 评论(0) 推荐(0)
CodeForces #369 C. Coloring Trees DP
摘要:题目链接:C. Coloring Trees 题意:给出n棵树的颜色,有些树被染了,有些没有。现在让你把没被染色的树染色。使得beauty = k。问,最少使用的颜料是多少。 K:连续的颜色为一组,一共有多少组。 颜料用量:p[i][j]表示第i棵树用颜料j染色 需要p[i][j]颜料。 思路:DP 阅读全文
posted @ 2016-08-30 14:10 小小八 阅读(210) 评论(0) 推荐(0)
CodeForces #367 div2 C
摘要:题目链接: Hard problem 题意:每个字符串可以选择反转或者不反转,给出反转每个字符串的代价,问使最少的代价使得这个字符串序列成字典序。 dp[i][j] = x : 第一维是第i个字符串,第二维表示当前字符串是否反转。x表示当前状态下使前i个字符串成字典序的最小代价。 感觉可以做的dp, 阅读全文
posted @ 2016-08-12 15:30 小小八 阅读(177) 评论(0) 推荐(0)
HDU 5773 The All-purpose Zero 求LIS
摘要:求最长上升子序列长度: 单纯的dp时间复杂度是O(n*n)的 dp[i] = max(dp[j]+1); (0=<j<=i-1 && a[i]>a[j]) 用二分可以减少查找的时间:时间复杂度:O(n*log(n)) 模板: Eg:题目链接:The All-purpose Zero 题意:给一个序列 阅读全文
posted @ 2016-07-30 15:22 小小八 阅读(219) 评论(1) 推荐(0)
HDU 5763 Another Meaning
摘要:HDU 5763 Another Meaning 题意:一个字串有可能在模式串出现多次,问有多少种可能出现的情况。关键是有重合的字串是不能同时计入的。 思路:先用kmp求出所有字串的位置。然后,dp. 二维的时候:dp[i][j] i表示前i个子串,j的值1表示一定用这个串,0表示不用。值表示字串出 阅读全文
posted @ 2016-07-29 19:09 小小八 阅读(183) 评论(0) 推荐(0)
经典DP 二维换一维
摘要:HDU 1024 Max Sum Plus Plus POJ 1322 Chocolate 二维: 一维: 阅读全文
posted @ 2016-07-27 21:54 小小八 阅读(334) 评论(0) 推荐(0)
蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索
摘要:问题描述 X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿 阅读全文
posted @ 2016-05-24 10:55 小小八 阅读(345) 评论(0) 推荐(0)
FZU 2093 找兔子 状压DP
摘要:题目链接:找兔子 n的范围是[1, 15],可以用0 到 (1<<n)-1 的数表示全部状态,用dp[i] = t表示到达状态i的最少时间是t,对于每个点,如果它能到达的所有点在t秒时都已经确定了会不会有兔纸,那这个点就确定了在(t+1)s会不会有兔纸。对于每个时刻,可以询问<=2个点,所以由初始状 阅读全文
posted @ 2016-04-15 13:04 小小八 阅读(265) 评论(0) 推荐(0)
FZU 2092 收集水晶 bfs+记忆化搜索 or 暴力
摘要:题目链接:收集水晶 一眼看过去,觉得是普通的bfs,初始位置有两个。仔细想了想...好像如果这样的话..........【不知道怎么说...T_T】 dp[12][12][12][12][210] 中dp[x1][y1][x2][y2][t] =value 表示t时刻人和影子分别到x1,y1 和x2 阅读全文
posted @ 2016-04-14 16:55 小小八 阅读(259) 评论(0) 推荐(1)
FZU 2129 子序列个数
摘要:题目链接:子序列个数 思路:使用一个数组(map超时了)记录一个数字在之前出现的位置,然后状态转移方程有两个,如果一个数字在之前出现过:dp[i] = (dp[i - 1] * 2 - dp[index[temp] - 1] + MOD) % MOD;,如果没有出现过:dp[i] = (dp[i - 阅读全文
posted @ 2016-04-02 21:27 小小八 阅读(375) 评论(0) 推荐(0)
HDU 1074 Doing Homework 状压DP
摘要:被水题卡了三个点,真是不开心... 题目链接:Doing Homework 思路:全排列枚举所有的状态,找出哪种状态时减少的人数最少,状态最多是2^15-1。不到40000,不会超时。然后为了节省空间,可以用状压DP,以一个16位的十进制数的第0位,第1位...第n-1为的0或1分别表示第1项,第2 阅读全文
posted @ 2016-03-24 21:11 小小八 阅读(198) 评论(0) 推荐(0)
动态规划的无后效性和最优子结构
摘要:一般来说,一个问题如果能用动态规划方法求解,必须满足无后效性原则和最优子结构。 【1】最优子结构:对于多阶段决策问题,如果每一个阶段的最优决策序列的子序列也是最优的,且决策序列具有“无后效性”,就可以将此决策方法理解为最优子结构。 【2】无后效性:动态规划法的最优解通常是由一系列最优决策组成的决策序 阅读全文
posted @ 2016-03-23 20:06 小小八 阅读(5580) 评论(0) 推荐(3)
蓝桥杯练习系统算法提高 求最大值
摘要:问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大。并且要求你选定的数对的ai之和非负,bi之和非负。 输入格式 输入的第一行为n,数对的个数 以下n行每行两个整数 ai bi 输出格式 输出你选定的数对的ai+bi之和 样例输入 5-403 -625 阅读全文
posted @ 2016-03-12 11:58 小小八 阅读(1185) 评论(0) 推荐(0)
HDU 1074 Doing Homework 状压DP
摘要:题目链接:Doing Homework 巨恶心。找了一晚上bug,发现for循环初始化居然不能代替memset。真心不服、 附AC代码: 1 #include <stdio.h> 2 #include <string.h> 3 #include <iostream> 4 using namespac 阅读全文
posted @ 2016-02-14 00:08 小小八 阅读(265) 评论(0) 推荐(0)
HDU 1069 Monkey and Banana 基础DP
摘要:题目链接:Monkey and Banana 大意:给出n种箱子的长宽高。每种不限个数。可以堆叠。询问可以达到的最高高度是多少。 要求两个箱子堆叠的时候叠加的面。上面的面的两维长度都严格小于下面的。 简单的DP,依然有很多地发给当时没想到。比如优先级,比如这么简单粗暴的选择。 1 /* 2 大意是。 阅读全文
posted @ 2016-02-12 13:14 小小八 阅读(171) 评论(0) 推荐(0)
HDU 1029 基础dp
摘要:题目链接:Ignatius and the Princess IV 大意:就是在N个数里找出唯一一个至少出现过(N+1)/ 2 次的数。 1 <= N <= 999999。 hash: 1 /* 2 题意好懂。就是在N个数里找出唯一一个至少出现过(N+1)/ 2 次的数。 1 <= N <= 999 阅读全文
posted @ 2016-02-11 22:03 小小八 阅读(264) 评论(0) 推荐(0)
UVALive 4764 dp
摘要:DES:这是一个新的游戏。给你一套牌、编号从1到100000.正常来说。你手中的牌和这次翻的牌是一样的,就会加一分。但是。如果是999的话。加三分。所以问你最大的分是多少。貌似是简单的DP吧。(DP菜鸟...再简单我也不会...T_T...)于是...我看懂了...但是不可言传....~~~~(>_... 阅读全文
posted @ 2015-08-03 22:54 小小八 阅读(161) 评论(0) 推荐(0)