![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
acm之动规
qq_19932555
这个作者很懒,什么都没留下…
展开
-
hdu 1231最长子序列和
http://acm.hdu.edu.cn/showproblem.php?pid=1231 。。。。以前一直以为有点理解动态规划,没想到比自己想想的还要弱逼伤自尊。 不过总算写出来了。 这道题首先注意,最后要求输出的是,最大和,最大和所对应的最左元素和最右元素而不是最左序号和最右序号。 既然还要输出最左、右元素只要往右动归一次往左动归一次就好了,不过必须在往左动归之前把数据重新清0.原创 2015-04-17 22:32:04 · 277 阅读 · 0 评论 -
POJ 2559 Largest Rectangle in a Histogram -- 动态规划
Largest Rectangle http://acm.hdu.edu.cn/showproblem.php?pid=1506 ** 对 于每一块木板,Area=height[i]*(j-k+1) 其中,j=height[i];找j,k成为关键,一般方法肯定超时,利用动态规划,如果它左边高 度大于等于它本身,那么它左边的左边界一定满足这个性质,再从这个边界的左边迭代下去 for(i=1;i转载 2015-04-09 14:33:05 · 221 阅读 · 0 评论 -
City Game
http://blog.csdn.net/acm_ted/article/details/7848019 和1506非常相似 不过这里是二维的,相当于把每一列当做一个柱转载 2015-04-09 15:07:24 · 207 阅读 · 0 评论 -
hdu1506一维木板动归
http://acm.hdu.edu.cn/showproblem.php?pid=1506 一道比较神奇的动归题目,没有严格的状态方程,只是提前用一种类似链表的方式预处理。 没能找出自己的错误: 自己的: #include #include #include #include using namespace std; #define LL long lon转载 2015-04-18 00:31:11 · 153 阅读 · 0 评论 -
mark hdu 1227
仍然找不到错误在哪里 : 我的: #include #include #include int n,k; int d[205][205]; int dis[205]; int s[205][205]; int min(int x,int y) { return x } int dp(int x,int y)//代表到第x个商店 一共有y个depot { if(转载 2015-04-29 19:12:18 · 221 阅读 · 0 评论 -
mark hdu1501
已经不知道多少次符合sample的wa了 不过值得学习的是最优子结构的独立性和dp的从1开始性和i、j分清和dp的除了-1部分的初始化要想清楚 我的: #include #include int n,d[200][200]; char a[2000],b[2000],c[2000]; int dp(int i,int j) { if(d[i][j]>=0) return d[i转载 2015-04-29 20:08:45 · 234 阅读 · 0 评论 -
LCS的加强输出 hdu1503
首先明确LCS: 模板: #include #include using namespace std; int v[1000][1000]; short dir[1000][1000]; char A[1000],B[1000]; int r,c; int LCS() { for(int i=1;i for(in原创 2015-04-27 15:06:53 · 247 阅读 · 0 评论 -
hdu1501 zipper dfs+记忆话搜索
1.这道题让我意识到了dp与dfs+记忆话搜索其实没有太大区别,只不过dfs的范围更广,dp只适用于最优子结构,也就是结果只取决于当前的状态不取决于前面问题的解答。 2.还有这题犯下的低级错误就是len2顺手写成strlen(s1); 所以必须要小心下标和标记具体是什么含义。 3.dfs终止条件不可忘记。 我的代码: #include #include #include usin原创 2015-05-09 11:52:08 · 270 阅读 · 0 评论 -
hdu 1502 字符串dp与高精度运算(mark)
难得的dp思路都是对的,但是没想到高精度 我的: #include #include int n,d[65][65][65]; int dp(int i,int j,int k) { if(i==0&&j==0&&k==0) return 0; if(d[i][j][k]) return d[i][j][k]; if(i>j&&原创 2015-04-29 00:34:34 · 266 阅读 · 0 评论 -
动态规划的一些小结
1.看看能不能转化为0-1背包原创 2015-04-09 15:10:48 · 290 阅读 · 0 评论 -
别样的动态规划 Codeforces Round #154 (Div. 2)——B
http://blog.csdn.net/z690933166/article/details/8332976转载 2015-04-16 00:06:24 · 208 阅读 · 0 评论 -
hdu 1505 二维木板
http://acm.hdu.edu.cn/showproblem.php?pid=1505 我的不知道为什么错: #include #include #include using namespace std; int k,m,n; int a[1003][1003]; int L[1003][1003]; int R[1003][1003]; int main()转载 2015-04-18 01:20:02 · 214 阅读 · 0 评论 -
hdu 1789 任务调度 贪心或dp
又是喜闻乐见的符合sample但是wa http://acm.hdu.edu.cn/showproblem.php?pid=1789 我的: 1.话说看看这个cmp要记住,本来cmp没改连sample都不对 2.如果cb不能debug,重新安装完全版 3.cb debug可能会进入algorithm头文件中 4.我觉得错误也许在于随意的交换可能浪费了某些资源 这道题貌似可以dp转载 2015-04-18 11:51:59 · 316 阅读 · 0 评论 -
1422 hdu 世界杯 另类dp
http://acm.hdu.edu.cn/showproblem.php?pid=1422 1.这里的循环数组还可以通过把n数组复制一倍数实现 2.关键在于要想到不回溯这部分的代码, 每次sum不够时,不是从头开始,而是左端往右收缩。我当时以为收缩的后得到的新结果未必能 够保证未收缩的中间部分能够到达。但是仔细想,如果收缩的部分整体必然是拖累的部分,去掉这部分,中间部分只会更好。原创 2015-04-18 19:27:31 · 221 阅读 · 0 评论 -
hdu 1421 dp+双状态转移方程 搬寝室
http://acm.hdu.edu.cn/showproblem.php?pid=1421原创 2015-04-18 18:51:42 · 190 阅读 · 0 评论 -
hdu 机器人路径 dp+记忆化搜索
http://blog.csdn.net/acm_davidcn/article/details/5976783原创 2015-04-18 18:42:07 · 240 阅读 · 0 评论 -
hdu2571 命运 简单dp
不知道又为什么RE 我的: #include #include int T,n,m,map[50][2000],dp[50][2000]; int main() { scanf("%d",&T); while(T-->0) { scanf("%d %d",&n,&m); int i,j;原创 2015-04-19 01:14:46 · 1358 阅读 · 0 评论 -
hdu2059 龟兔赛跑 (还没做)
看了一些博客,这句话印象最深刻: DP题。理解DP不是一种固定的算法,而是一种思路,是一种用空间换时间的思维方式。开数组记录每一步的最优解,每次比较更新,最后得出的就是整体最优解。 这题每个步骤有个决策,就是在充电站时选择充或不充,每个决策有影响后面的决策。然后就是怎样让每一步达到最优,这时就要用数组记录然后更新,用一个数组记录每一步的最优解,然后再根据决策的不同,将所有可能的情况列出得这一步转载 2015-04-20 12:46:21 · 222 阅读 · 0 评论 -
hdu 1114 piggy bank
http://acm.hdu.edu.cn/showproblem.php?pid=1114 还是没有彻底理解自底向上的动态规划,其实自底向上就像自动状态机一样,借用子问题独立,先把子问题填表填上(这里存在多填,所以才有贪心的余地),然后转移状态到父问题上. 本题我以为要二维状态,第一维度用于记录现在判断到第几个bank,但实际转换为一维背包。 还有就是我一开始不小心把最初重量减满重量,结果原创 2015-04-20 12:21:36 · 345 阅读 · 0 评论 -
hdu3008 (mark)
这道题显示出来一个dp很重要的东西,就是如何确定要几维dp 我以为要三维,英雄血,英雄魔,boss血,然后被困死在如何确定失败上,实际上二维就已经足够算出三维的信息。 我的(仍未修改): #include #include #include #include using namespace std; int n,t,q; int skill1[100转载 2015-04-29 01:14:56 · 288 阅读 · 0 评论