ACM_Dynamic_Programming
文章平均质量分 78
Gatevin
这个作者很懒,什么都没留下…
展开
-
HDU 5576 Expection of String (DP, 前缀和维护) 2015年上海现场赛E题
题目大意:就是现在给出一个串, 只包含一个*号, 表示乘法, 剩下的是数字于是对于这个乘法式子, 当*某一边没有数字的时候视为那一侧的数字是0现在进行K次操作, 每次操作随机选择两个不同的位置交换为最后表达式的值的期望, 乘上(C[n][2])^K的结果, n是串的长度, 结果对于10^9 + 7取模大致思路:这个可能的是从学长那边听到的...然后推了一下...然后原创 2015-11-28 22:01:53 · 3430 阅读 · 0 评论 -
Codeforces Gym 100379J Move the (p, q)-knight to the corner! 组合数学DP, Lucas定理
题目大意:就是现在一个n*m的棋盘上有一个位于顶点的马(1, 1), 现在要从(1, 1)移动到(n, m), 中间有k个位置是不能走的 k 并且每次走的时候必须遵循马走的规则: 从(x , y)走到(x + p, y + q)或者 (x + q, y + p)n, m 大致思路:首先考虑每一个位置(x, y)到达这个位置需要的两种走法的次数分别是t1, t2, 那么原创 2015-08-14 14:57:03 · 798 阅读 · 0 评论 -
HDU 4340 Capturing a country 树形DP
题目大意:就是现在又A和B两种颜色, 给一棵树涂色, 每个点u有两种花费A[u]和B[u]代表直接涂上两种颜色分别的花费, 但如果和这点的相连的点被涂色了, 那么吧这个点涂上和相连那个点一样的颜色的话, 花费降至直接涂的一半, 求将这棵树都涂色的最小花费大致思路:就是一个树形DP...转移方程什么的看代码注释吧...代码如下:Result : Accepte原创 2015-08-02 22:23:13 · 579 阅读 · 0 评论 -
HDU 4313 Matrix 树状DP
题目大意:就是现在给出一棵树节点数不超过10万, 然后给出K个点表示这K个点需要被隔开, 树上的每条边都有一个权值, 现在为了将这K个点隔开(没有边连通)需要删除一些使得删除的边的权值和最小大致思路:用dp[u][0]表示结点u及其子树部分没有能向上连通的要隔离的点需要的最小花费, 用dp[u][1]表示结点u及其子树中有1个点会向上连通时需要的最小花费那么就是一个简单的树原创 2015-07-31 20:13:46 · 821 阅读 · 2 评论 -
HDU 4219 Randomization? 树形概率DP
恩先膜拜一下岩哥.....出的题真好.....题目大意:就是现在有一棵有N个点的树, N 大致思路:训练赛的时候想到了用dp[u][d]表示对于结点u其子节点到它的最远距离是d的概率作为选择的状态来进行转移, 但是当时没想出来转移过程....对于u结点有多个儿子的情况不知道该怎么办结果是个对于我来说第一次见的做法....每次考虑儿子结点的时候一个一个的考虑,原创 2015-07-27 00:11:09 · 972 阅读 · 0 评论 -
POJ 1625 Censored! AC自动机 + 动态规划 + 高精度
题目大意:就是现在给出N个字符 ( ASCII原创 2014-11-20 16:25:56 · 785 阅读 · 0 评论 -
Codeforces 366C Dima and Salad 背包DP
题目大意:就是现在又n个水果, 每个水果都有两个属性值ai表示美味程度, bi表示能量值, 现在要求选出多个或一个水果, 使得选出的水果的ai和与bi和之比是k问在这种清形可能出现的情况下ai的和最多是多少, 如果这样的情形不存在输出 -1(1 大致思路:首先我们最终要满足sigma(ai)/sigma(bi) = k所以对于每一个水果记ci = ai - k*bi那么原创 2015-03-23 17:53:50 · 829 阅读 · 0 评论 -
Codeforces 367E Sereja and Intervals DP
题目大意:就是现在在一个长度为m的区间上找出一组区间, 这组区间要有n个并且其中任意两个区间不存在包含关系且必须存在至少一个区间其左边界的值是x(1 大致思路:就是一个dp...状态转移方程见代码注释吧代码如下:Result : Accepted Memory : 1408 KB Time : 140 ms/* * Auth原创 2015-03-23 21:57:11 · 1410 阅读 · 0 评论 -
Codeforces 337D Book of Evil 树状DP 或 BFS找子树直径端点
题目大意:就是现在对于一个n个点的树 (1 大致思路:这个题试了两种解法, 第一种是官方题解的树状DP, 另外一种是比较巧妙的转化成树的直径端点相关的问题细节都写在代码注释里了, 详情见代码吧代码如下:解法一: 树状DP解法Result : Accepted Memory : 7504 KB Time : 216 ms/*原创 2015-03-04 22:12:20 · 1208 阅读 · 0 评论 -
HDU 4343 Interval query 倍增思想, DP
题目大意:就是现在给出N个区间(纠结了一下应该都是开区间), 区间(l, r)满足两边端点都是不超过10^9的非负整数, 现在有M次询问, 每次询问区间(L, R)中最多可以找出多少个区间(来自于N), 这些区间互不相交且都是(L, R)的子区间N, M 大致思路:第一次写这种题......被vector的lower_bound和upper_bound弄得纠结了一会原创 2015-08-03 15:00:18 · 1869 阅读 · 0 评论 -
Codeforces 559C Gerald and Giant Chess 组合数学 DP
题目大意:就是现在对于一个H*W的棋盘从点(1, 1)走到(H, W), 每次只能x++或者y++地走, 其中棋盘上有n个点是坏点, 也就是不能走的点, 那么从(1, 1)到(H, W)不经过这n个坏点的路径有多少种, H, W 大致思路:首先在不考虑坏点的情况下, 从(x1, y1)走到(x2, y2), x2 >= x1, y2 >= y1一共有C(x2 - x1 + y2原创 2015-08-14 13:10:56 · 1433 阅读 · 0 评论 -
HDU 4328 Cut the cake 最大相同子矩阵, 悬线法
题目大意:就是现在有一个n*m的矩阵(n , m 大致思路:白书例题的一个小变形, 还是使用悬线法来做, 用up[i][j]表示当前位置向上能匹配到的最长长度, 用left[i][j]表示保证up[i][j]的情况下向左平移的最大步数, right[i][j]表示向右平移的最大步数于是就是一个简单的DP了, 对于颜色交叉的问题, 选择一种对角例如(i + j)是奇数的所有(原创 2015-08-03 22:12:28 · 846 阅读 · 0 评论 -
Codeforces 589H Tourist Guide (2015~2016 NEERC Southern Subregional H题) 树形DP
题目大意:就是现在给出一个n个点m条边的无向图, 其中有k个点被标记要求从图中找到尽量多的路径, 这些路径起点和终点互不重合(也就是每个标记点作为起点或者终点只能用一次), 并且没有公共边输出能找到的最多的路径条数, 以及其中一种方案大致思路:首先对原图求出一个生成森林, 于是可以将这个问题转化成在每一个生成树上问连接标记点, 路径没有公共边且每个标记点只能作为起点或者原创 2015-10-23 11:04:12 · 896 阅读 · 2 评论 -
Codeforces Gym 100325A String Decomposition 字符串DP
题目大意:就是给出一个长度不超过5000的字符串进行压缩S = S1(d1) + S2(d2) + ... + Sk(dk)Si是字串, di表示这个字串连续出现的次数要使得Si的总长度最小大致思路:很明显可以用DP来做思路和Gym 100337B 类似, 先处理出以 i 位置和 j 位置作为结尾向前能匹配的最大长度dp[i][j]然后枚举循环节的长度即可原创 2015-09-04 22:31:58 · 530 阅读 · 0 评论 -
Codeforces Gym 100340I Longest Common Subpair 字符串DP
题目大意:给出两个字符串P和Q, 找出两个字符串A和B使得A, B都是P的无交集子串, 同时也是Q的无交集的字串问A + B的长度最长情况下, 一个A, B的解大致思路:字符串DP, 用dp[i][j]表示以上面P的第i个字符作为结尾和以下面Q的第j个字符作为结尾向前匹配的最大长度然后f[i][j]表示P的长度为i的前缀和Q的长度为j的前缀的最长公共字串, 于是f[i]原创 2015-09-04 23:11:18 · 586 阅读 · 0 评论 -
Codeforces Gym 100337B Lempel-Ziv Compression 字符串DP
题目大意:就是现在给出一个长度不超过4096的串要求进行压缩每保留一个字符的代价是9, 用(r, len)表示的代价是25, r表示从当前位置 i 的前面 r 个字符开始连续复制写出长度为len的串需要注意的是比如ab可以复制出 ab ababa也就是复制是进行到一个部分的...刚开始这里没理解于是WA了一发..大致思路:首先预处理出字符串以i位置结尾和以j位置结尾原创 2015-09-04 22:26:54 · 672 阅读 · 0 评论 -
Codeforces Gym 100339B Diversion 树形DP + LCA
题目大意:就是现在一个图, 其中n个点, n 其中一些边是石子路一些事乡村小路, 图保证石子路形成一棵树, 使得所有城市通过石子路能相同, 另外是一些乡村小路现在要从图中删除一条石子路和一条乡村小路使得图变得不连通, 问有多少种删法大致思路:很明显是个树形DP, 对于每个石子路, 一旦被删除, 树就被切割成了一颗子树和该子树之外两个部分, 那么对应的删除乡村小路的方案就原创 2015-09-04 22:44:45 · 753 阅读 · 0 评论 -
HDU 4126 Genghis Khan the Conqueror MST + 树形DP 2011年福州现场赛F题
题目大意:就是现在给出一个图, N个点, M条边, N 现在给出Q次询问, 每次询问表示如果更改边(u, v)的权值为c, c一定比之前那个权值大, 那么改变这条边之后得到的图的最小生成树的权值是多少输出Q次查询对应MST的权值的和除以Q, 保留小数点后4位大致思路:首先我们可以用Prim预处理出原图的最小生成树, 那么记录这颗树上使用的边如果更改发生在不是最小生成原创 2015-07-24 15:53:02 · 678 阅读 · 0 评论 -
HDU 4008 Parent and son 树形DP + LCA 2011年大连网络赛B题
题目大意:就是现在给出一个由N个结点的树, 2 大致思路:第一次写用LCA的题......不过学了下LCA之后感觉还是挺简单的一道题首先以1为根处理出此时这棵树上每个节点的儿子节点中最小的和次小的儿子以及子孙(最小的和次小的必须来自不同的子树), 直接树形dp即可, 时间复杂度O(n)然后对于每次询问X, Y不难发现只有当X是Y的子孙时(以1为根), Y在这个情原创 2015-07-23 22:54:13 · 1274 阅读 · 0 评论 -
HDU 4352 XHXJ's LIS 数位状压DP
题目大意:就是现在对于每个正整数可以将其每位视为一个数形成一个串, 那么这一组数就存在一个最长上升子序列, 对于每组给出的L, R (0 大致思路:看数据范围很明显是数位DP, 考虑最长上升子序列这个子问题中常见的O(nlogn)的解法:用dp[i]表示直到当前位, 在所有长度为i的上升子序列中结尾最小的是dp[i], 那么dp[i]满足单调性, 二分求解那么在这个题中原创 2015-08-03 18:43:19 · 1335 阅读 · 1 评论 -
Codeforces 335D Rectangles and Square 暴力 + DP
题目大意:给定n个矩形(1 每个矩形给出其左下角坐标和右上角坐标, 坐标(x, y)满足(0 求是否存在一个正方形,这个正方形刚好是这n个矩形中的某些所拼凑起来的,(拼凑不能有缝隙), 如果有就找出这样的一组矩形, 否则输出NO大致思路:这题感觉dp还是有点巧妙的, 再就是巴黎枚举每个矩形的左下角是否是要找的正方形的左下角, 利用预处理好的数组来判断是否能继续增加边长原创 2015-03-04 15:29:23 · 1093 阅读 · 0 评论 -
Codeforces 335B Palindrome 鸽巢原理 + DP
题目大意:就是现在给出一个长度不超过5*10^4的串, 求其最长回文串, 如果回文串长度超过100只需要输出长度为100的即可, 输入的字符串只包含26种小写英文字母另外就是这个题目中的回文串并不要求在原来的串当中是连续出现的, 只需要出现的位置顺序一样即可, 并不要求连续大致思路:做练习的时候一眼看标题课描述没看Hint就脑补直接当常见的的连续的回文串来做了....上来就原创 2015-03-03 19:55:23 · 971 阅读 · 0 评论 -
UVALive 5971 (LA 5971) Permutation Counting 动态规划 (容斥原理超时)
题目大意:对于整数 1 到 n 惊醒排列原创 2014-08-04 20:24:13 · 1060 阅读 · 0 评论 -
HDU 1074 Doing Homework 状态压缩DP
题目大意:现在又n中不同的作业需要做,每种作业有一个上交期限可原创 2014-08-25 02:03:12 · 611 阅读 · 0 评论 -
HDU 1080 Human Gene Functions 动态规划 + DFS
题目大意:匹配连个不同的DNA原创 2014-08-25 02:15:18 · 687 阅读 · 0 评论 -
HDU 1069 Monkey and Banana 动态规划
题目大意:现在又不同规格的原创 2014-08-25 01:46:57 · 568 阅读 · 0 评论 -
HDU 1024 Max Sum Plus Plus 动态规划
题目大意:对于长度不超过10^6的原创 2014-08-25 00:53:08 · 624 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping! 动态规划
题目大意:从起点开始到终点,原创 2014-08-25 12:56:26 · 530 阅读 · 0 评论 -
HDU 1058 Humble Numbers 动态规划 或 暴力
题目大意:就是求第n个数,原创 2014-08-25 01:17:54 · 653 阅读 · 0 评论 -
HDU 1025 Constructing Roads In JGShining's Kingdom 动态规划 + 二分
题目大意:本质上就是对于原创 2014-08-25 01:07:32 · 677 阅读 · 0 评论 -
HDU 1003 Max Sum 动态规划
题目大意:对于一个长度不超过10^5的数列,找出它的子数列,使得原创 2014-08-24 23:52:45 · 686 阅读 · 0 评论 -
HDU 1078 FatMouse and Cheese 动态规划 + DFS
题目大意:就是现在有一个原创 2014-08-25 02:10:08 · 646 阅读 · 0 评论 -
HDU 1081 To The Max 动态规划
题目大意:就是现在给出一个n*n的矩阵原创 2014-08-25 12:47:26 · 693 阅读 · 0 评论 -
HDU 1565 方格取数(1) 状态压缩DP
题目大意:从n*n的矩阵中取出一些数使得这些数互不相邻,问最大和为多少原创 2014-08-25 17:36:26 · 640 阅读 · 0 评论 -
UVALive 6117 (LA 6117) Pole Arrangement 动态规划
题目大意:给出N,L,R,表示现在有N原创 2014-07-29 22:30:05 · 729 阅读 · 0 评论 -
Codeforces 390C Inna and Candy Boxes RMQ简单变化 或 前缀和dp一下
题目大意:就是对于给定的n, w, k (1 注意每次询问之后原来输入的串不改变大致思路:由于是静态的信息查询, 不需要使用线段树, 这里我用的是和RMQ类似的预处理的一个DP的方法做的...状态转移什么的都写在代码注释里了, 看到有很多人用的前缀和什么的做法..看来我还是想的复杂了一点....代码如下:Result : Accepted Mem原创 2015-02-26 21:37:58 · 680 阅读 · 0 评论 -
HDU 3247 Resource Archiver AC自动机 + BFS最短路 + 状压DP
题目大意:现在有n个(原创 2014-11-24 19:53:58 · 940 阅读 · 0 评论 -
ZOJ 3494 BCD Code AC自动机 + 数位DP
题目大意:就是现在有0~9对应的BCD码(就是对应的4位的二进制), 然后给出了n串(0 大致思路:首先考虑到A和B的范围,暴力是不可行的,这里需要用到数位DP,也就是逐位确定的思想,首先用AC自动机算出从状态i出发下一位是0~9分别可到达的状态,或者不可走,然后逐位确定各个数位的值即可,记忆化搜索提高效率,启示这个数位DP还是挺简单的,注意前导零的问题即可。代码如原创 2014-11-29 14:49:53 · 960 阅读 · 0 评论 -
HDU 3341 Lost's revenge AC自动机 + 变进制状压DP
题目大意:现在给出一个DNA序列原创 2014-11-23 20:55:44 · 737 阅读 · 0 评论 -
HDU 2296 Ring AC自动机 + 动态规划
题目大意:就是现在给出m个串,每个串都有一个权值,现在你要找到一个原创 2014-11-22 14:33:38 · 862 阅读 · 0 评论