随笔分类 -  dp

摘要:题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1464 题意: 中文题诶~ 思路: 将所有半回文串构建成一棵字典树, 再 dfs 里面字典序第 k 大的字符串. 注意插入半回文串时不能完全暴力插入, 不然插入的 阅读全文
posted @ 2017-10-15 16:04 geloutingyu 阅读(228) 评论(0) 推荐(0)
摘要:题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1455 题意: 中文题诶~ 思路: dp 1 <= n, d <= 3e4, 直接用 dp[i][j] 存储从上一个岛屿经过 距离 j 到达岛屿 i 的最大收获显 阅读全文
posted @ 2017-10-11 22:51 geloutingyu 阅读(305) 评论(0) 推荐(0)
摘要:先说下codevs1169吧, 题目链接: http://codevs.cn/problem/1169/ 题意: 中文题诶~ 思路: 多线程 dp 用 dp[i][j][k][l] 存储一个人在 (i, j), 一个人在 (k, l) 位置时对答案的最大贡献, 那么动态转移方程式为: dp[i][j 阅读全文
posted @ 2017-08-23 14:03 geloutingyu 阅读(434) 评论(0) 推荐(0)
摘要:题目链接: http://codevs.cn/problem/3027/ 题意: 中文题目诶~ 思路: dp 先给所有线段按照右端点值升序 sort 一下, 用 dp[i] 存储以第 i 条线段结尾的线段集合的最大价值, 那么动态转移方程式为: dp[i] = max(dp[i], dp[j] + 阅读全文
posted @ 2017-08-17 20:44 geloutingyu 阅读(194) 评论(0) 推荐(0)
摘要:题目链接: http://codevs.cn/problem/1068/ 题意: 中文题诶~ 思路: dp 用 dp[i][j][k][l] 表示取 i 个 1, j 个 2, k 个 3, l 个 4 时最大贡献为多少, 那么初始化为 dp[0][0][0][0] = v[1], 其中 v[i] 阅读全文
posted @ 2017-08-16 22:48 geloutingyu 阅读(148) 评论(0) 推荐(0)
摘要:题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=6092 题意: 输入格式为, 对于每组测试样例第一行输入两个数 n, m, 接下来一行输入B数组, 有 m + 1个数. 其中 n 表示要构造的数组 A 的长度为 n. m 表示 A 数组的元素和为 m 阅读全文
posted @ 2017-08-09 16:21 geloutingyu 阅读(259) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/contest/834/problem/D 题意: 每个数字代表一种颜色, 一个区间的美丽度为其中颜色的种数, 给出一个有 n 个元素的数组, 问将其分成 k 个区间, 问 k 个区间的美丽度和最大为多少 . 思路: dp + 线段树区间更新, 阅读全文
posted @ 2017-08-09 15:09 geloutingyu 阅读(222) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/contest/837/problem/D 题意: 给出 n 个数, 从中选出 k 个数使得这 k 个数的乘积末尾 0 最多 . 思路: 先记录每个数能分解出的 2 和 5 的数目, 然后弄个01背包即可 . 用 dp[i][j][l] 表示从 阅读全文
posted @ 2017-08-04 17:18 geloutingyu 阅读(460) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/contest/835/problem/D 题意: 定义 k 度回文串为左半部分和右半部分为 k - 1 度的回文串 . 给出一个字符串 s, 问 1 ~ s.size() 度回文串的数目分别为多少 . 思路: 预处理 + 记忆化dp 可以先花 阅读全文
posted @ 2017-08-01 20:44 geloutingyu 阅读(330) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/contest/831/problem/D 题意: 有 n 个人和 k 把钥匙, 数组 a 为 n 个人的初始位置, 数组 b 为 k 把钥匙的初始位置, n 个人都要先拿到一把钥匙然后在到 p 位置去, 问所有人都到 p 位置所需要的最少时间 阅读全文
posted @ 2017-07-15 10:40 geloutingyu 阅读(968) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/problemset/problem/799/D 题意: 给出两个矩阵边长 a, b, 和 w, h, 以及一个 c 数组, 可选择 c 数组中任意数字乘上w 或 h. 数组中每个数字最多只能用一次. 求最少选择多少个数字可使得边长为 a, b 阅读全文
posted @ 2017-07-07 22:08 geloutingyu 阅读(590) 评论(0) 推荐(0)
摘要:题目链接: http://codeforces.com/problemset/problem/811/C 题意: 给一个有n个人排队上车,去相同地方的人要么坐在同一个车厢,要不就不上车,问最大舒适度和是多少。苏适度是车厢内所有数组成的集合的异或值。 即: 给你n个数,现在让你选一些区间出来,对于每个 阅读全文
posted @ 2017-07-05 22:40 geloutingyu 阅读(619) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1205 题意:中文题诶~ 思路:johnson模板题 流水作业调度问题的Johnson算法: (1)令N1={i|ai<bi}, N2={i|ai>=bi}; (2 阅读全文
posted @ 2017-06-01 10:59 geloutingyu 阅读(251) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1154 题意:中文题目诶~ 思路:字符串长度不大于5e3,O(n^2)时间复杂度就足够了.那么可以用dp解,dp[i]存储以i为尾字符的子串最少能分成几个回文子串; 阅读全文
posted @ 2017-05-24 20:51 geloutingyu 阅读(191) 评论(0) 推荐(0)
摘要:題目鏈接:https://nanti.jisuanke.com/t/44 題意:中文題誒~ 思路: 用dp[i][j]存儲以(i, j)爲左上定點的最大正方形變長,從右下角網左上角一次計算所有頂點; 通過畫圖不難分析出動態專題方程式爲: dp[i][j]=min(dp[i+1][j+1], dp[i 阅读全文
posted @ 2017-05-01 21:20 geloutingyu 阅读(170) 评论(0) 推荐(0)
摘要:題目鏈接: https://nanti.jisuanke.com/t/227 題意:中文題誒~ 思路:01背包 類似的題: http://www.cnblogs.com/geloutingyu/p/6279279.html 用dp[i][j]表示到地 i 個數能得到的不大於 j 的最大的數, 顯然有 阅读全文
posted @ 2017-05-01 11:46 geloutingyu 阅读(220) 评论(0) 推荐(0)
摘要:題目鏈接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086 題意:中文題誒~ 思路:很顯然這是一道多重背包題,不過這裏的數據有點大,如果將物品一個一個地拆分爲開再用01背包做的話時間復雜度 爲O(n*w*ci)=20 阅读全文
posted @ 2017-04-25 20:39 geloutingyu 阅读(192) 评论(0) 推荐(0)
摘要:题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1270 题意:中文题诶~ 思路:dp s=abs(a1-a0)+abs(a2-a1).... 要使s尽量大,需要让abs(ai-ai-1)尽量大,那么可以让其中一个 阅读全文
posted @ 2017-04-09 20:12 geloutingyu 阅读(120) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2476 题意:给出两个字符串str1, str2,每次操作都可以将任意区间所有字符改成某个字符,问最少需要几次操作可以将字符串str1变成str2; 思路:区间dp 写过一道和本题很像的题目:http:/ 阅读全文
posted @ 2017-03-22 19:46 geloutingyu 阅读(903) 评论(0) 推荐(0)
摘要:题目链接:http://qscoj.cn/problem/54/ 题意:中文题诶~ 思路:区间dp 我们可以用dp[i][j]存储区间[i, j]最少需要的打印次数,若没有相同的字母,那么需要的打印次数为dp[i+1, j]+1 (尾字符放在外层循环枚举,首字符放在内一层循环枚举,至于原因在后面会说 阅读全文
posted @ 2017-03-21 22:15 geloutingyu 阅读(366) 评论(0) 推荐(0)