随笔分类 -  dp

摘要:You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3878 Accepted Submission(s): 1793 阅读全文
posted @ 2017-05-03 19:25 猪突猛进!!! 阅读(136) 评论(0) 推荐(0)
摘要:Palindrome subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65535 K (Java/Others)Total Submission(s): 3183 Accepted Submission( 阅读全文
posted @ 2017-04-29 16:09 猪突猛进!!! 阅读(209) 评论(0) 推荐(0)
摘要:Multiplication Puzzle Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9957 Accepted: 6152 Description The multiplication puzzle is played w 阅读全文
posted @ 2017-04-25 19:33 猪突猛进!!! 阅读(191) 评论(0) 推荐(0)
摘要:描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 阅读全文
posted @ 2017-04-24 21:44 猪突猛进!!! 阅读(623) 评论(0) 推荐(0)
摘要:整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 整数划分(四) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其 阅读全文
posted @ 2017-04-17 20:15 猪突猛进!!! 阅读(507) 评论(0) 推荐(0)
摘要:这道题目能用区间dp来解决,是因为一个大区间的括号匹配数是可以由小区间最优化选取得到(也就是满足最优子结构) 然后构造dp 既然是区间类型的dp 一般用二维 我们定义dp[i][j] 表示i~j这个区间需要添加括号的数量 那么状态怎么转移呢? 第一种情况:对于i指向的括号 如果i+1 ~ j里面不存 阅读全文
posted @ 2017-04-17 09:36 猪突猛进!!! 阅读(865) 评论(0) 推荐(0)
摘要:过了这么久 正确理解01背包应该从记忆化搜索开始 这里对数字的取或者不取实际上就是一个01背包的模型 不过这里要求的是满包问题 那么我们动态便利的过程需要做一点 处理只有从0开始的能够向上更新 在就是一个最小路径更新 可以用排序 (排序以后最先到达的满足条件的就是我们需要的路线) 也可以多次到达的时 阅读全文
posted @ 2017-03-21 18:46 猪突猛进!!! 阅读(269) 评论(0) 推荐(0)
摘要:偏序的概念: 设A是一个非空集,P是A上的一个关系,若关系P是自反的、反对称的、和传递的,则称P是集合A上的偏序关系。即P适合下列条件:(1)对任意的a∈A,(a,a)∈P;(2)若(a,b)∈P且(b,a)∈P,则a=b;(3)若(a,b)∈P,(b,c)∈P,则(a,c)∈P,则称P是A上的一个 阅读全文
posted @ 2017-03-18 22:13 猪突猛进!!! 阅读(388) 评论(0) 推荐(0)
摘要:题目的意思比较简单,类似计数dp。 一开始我想让dp[i]+=dp[i-prime] 每次遍历比i小的所有素数,然后发现有重叠的 比如 2+3 3+2 就导致错误。看了其他人的填充方式,发现定下prime 然后定向的更新i就可以避免重复问题 还有就是。。 尼玛的素数筛法居然 居然。。写错了。。 反省 阅读全文
posted @ 2016-12-12 18:57 猪突猛进!!! 阅读(242) 评论(0) 推荐(0)
摘要:对于每一个dp的问题 从其最优解的结构(分哪几种形式或者情况)入手 然后分析状态 这样就比较好找出状态转方程这里数据结构的选择很简单 顺序数组就可以 填充的方式顺序填充就可以 然后这道题目卡了我大数。。 #include <stdio.h> #include <string.h> #include 阅读全文
posted @ 2016-12-05 20:27 猪突猛进!!! 阅读(286) 评论(0) 推荐(0)
摘要:#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #define maxn 200 using namespace std; struct node { int x,y,z; }; int cmp(no 阅读全文
posted @ 2016-11-26 20:24 猪突猛进!!! 阅读(246) 评论(0) 推荐(0)
摘要:dp的问题除了递推过程的设计之外 还有数据结构的选择以及怎样合理的填充数据 这个的填充是个坑。。#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define 阅读全文
posted @ 2016-11-26 19:25 猪突猛进!!! 阅读(568) 评论(0) 推荐(0)
摘要://写动态规划的题目 要把主要问题提炼出来 这里的问题就是求area=(j-k+1)*a[i] 如果找到j k是解决这个题目的关键 这里暴力求肯定是要超时的 这里用dp来优化#include<stdio.h> #include<string.h> __int64 a[100005],dp[10000 阅读全文
posted @ 2016-11-23 21:57 猪突猛进!!! 阅读(300) 评论(0) 推荐(0)
摘要:吉哥系列故事——临时工计划 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 3679 Accepted Submission(s): 1459 P 阅读全文
posted @ 2016-08-02 19:20 猪突猛进!!! 阅读(171) 评论(0) 推荐(0)
摘要:好好理解一下背包问题 从01包入手 内层的循环 是为了以后求解记录数据 因为只有一个取舍问题 所以只需要一层循环就可以 这里有三个背包 钱 积分 以及免费物品 那么 就需要三重循环 #include<stdio.h>#include<string.h>#define N 105int dp[N][N 阅读全文
posted @ 2016-08-02 15:06 猪突猛进!!! 阅读(130) 评论(0) 推荐(0)