![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
DP
sdxtcqs
ACM弱校菜鸡一枚,欢迎神犇花式虐场
展开
-
NOI 1995 石子合并
http://www.luogu.org/problem/show?pid=1880# 合并石子的加强版(不过这可是95年的NOI的题,准确说应该是合并石子是它的削弱版吧。。。),环的处理就是在链的后面再来一遍链,然后枚举一下起点终点,就和合并石子一样了。。。#include<iostream>#include<cstdio>#include<cstring>#include<queue>原创 2016-03-05 11:17:39 · 998 阅读 · 1 评论 -
2019牛客暑期多校训练营(第一场)E ABBA (动态规划)
https://ac.nowcoder.com/acm/contest/881/E题意:对于一个长度为2(n+m)2(n+m)2(n+m)的仅由AAA和BBB组成的序列,能将其分成(n+m)(n+m)(n+m)个长度为222的子序列,其中nnn个是"ABABAB",mmm个是"BABABA"。求对于给定的nnn和mmm,有多少种合法的序列。DP,令f[i][j]f[i][j]f[i][j]表示...原创 2019-08-20 16:02:05 · 123 阅读 · 0 评论 -
Wannafly Winter Camp 2019 Day4 G 置置置换 (oeis/DP)
https://zhixincode.com/contest/16/problem/G?problem_id=243题意:求1..n1..n1..n的排列中满足对于任意i&amp;amp;gt;1i&amp;amp;gt;1i&amp;gt;1,若iii为奇数ai−1&amp;amp;lt;aia_{i-1}&amp;amp;lt;a_iai−1&amp;lt;ai,若iii为偶数ai−1&原创 2019-02-26 09:47:07 · 217 阅读 · 0 评论 -
POJ 1651 Multiplication Puzzle (区间DP)
http://poj.org/problem?id=1651题意:给定一个长度为nnn的序列,每次取出一个非两端的数a[i]a[i]a[i],并将这个数和其相邻的两个数的乘积a[i−1]∗a[i]∗a[i+1]a[i-1]*a[i]*a[i+1]a[i−1]∗a[i]∗a[i+1]加到分数里,求按什么顺序取数最后得到分数最小,n&lt;=100n&lt;=100n<=100...原创 2019-02-26 08:49:32 · 115 阅读 · 0 评论 -
洛谷 1896 [SCOI 2005] 互不侵犯 (状压DP)
https://www.luogu.org/problemnew/show/P1896 题意:求在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。其中1<=N<=9, 0<=K<=N∗N1<=N<=9, 0<=K<=N∗N1 dp...原创 2018-08-29 13:17:47 · 151 阅读 · 0 评论 -
51Nod 1022 石子归并v2 (区间DP+四边形优化)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1022 题意:石子归并的加强版,原本是线形,现在是环形,原本数据范围是100,现在数据范围是1000。首先解决环形问题,常见解决环形问题的套路就是倍增序列,在原序列末尾再接上一段原序列,中间跨越两段序列的那块就达到了环形的目的。这样按线形的跑,最后枚举起点,取最大的f...原创 2018-08-20 16:25:29 · 369 阅读 · 0 评论 -
hdoj 4745 Two Rabbits (最长不连续回文子序列 环形DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4745 参考博客:http://blog.csdn.net/cc_again/article/details/11852367 环形区间DP求最长不连续回文子序列; 以前做环形都是倍增,这次学到了新的思路,因为是回文,正着反着都一样,然后环形就可以分成[1,i]和[i+1,n]两部分,那么A从i+1走到n,再原创 2017-12-05 15:45:27 · 296 阅读 · 1 评论 -
hihocoder #1338 A Game
题目大意是小HI和小HO轮流从数组头或数组尾取数,输出先手能取的最大值 动态规划,f[i][j]表示区间[i,j]先手能取到的最大值,那么f[i][j]可从f[i+1][j]和f[i][j-1]转移得到 转移方程:f[i][j]=max(sum[i,j]-f[i][j-1],sum[i,j]-f[i+1][j]) 前缀和预处理出sum[i,j]#include <iostream>#incl原创 2017-10-26 16:18:17 · 177 阅读 · 0 评论 -
USACO Cow Travelling 游荡的奶牛
http://www.luogu.org/problem/show?pid=1535 夏令营zc神犇讲双向BFS的例题,确实是大力出奇迹就过了。。。 从(s1,t1)跑T/2步,记下所有点被走过的次数a[i][j] 从(s2,t2)跑T-T/2步,记下所有点被走过的次数b[i][j] ans就=所有a[i][j]*b[i][j]加起来 双向BFS#include<iostream>#in原创 2016-07-26 23:06:20 · 231 阅读 · 0 评论 -
洛谷 1387 最大正方形
http://dev.luogu.org:3308/problem/show?pid=1387#sub 一道传说中O(n^5)爆搜加点优化都能过的题。。。 O(n^2)的DP 状态转移方程是if(a[i][j]==1)f[i][j]=min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1#include<iostream>#include<cstdio>#includ原创 2016-03-26 11:53:33 · 409 阅读 · 0 评论 -
洛谷 1508 Likecloud-吃、吃、吃
http://dev.luogu.org:3308/problem/show?pid=1508#sub 比较水的一个DP,初始位置在a[m][n/2+1]的下方,所以起点只能是a[m][n/2]或a[m][n/2+1]或a[m][n/2+2],转移方程比较显然是f[i][j]=max{f[i+1][j-1],f[i+1][j],f[i+1][j+1]}+a[i][j]就完事了。。。#include原创 2016-03-26 11:11:08 · 248 阅读 · 0 评论 -
洛谷 1282 多米诺骨牌
http://www.luogu.org/problem/show?pid=1282# 看了题解后明白的DP。。。 s1表示正差值的和,s2表示负差值绝对值的和,now表示初始值。 因为C++数组下标不能为负数,可以整体+s2,f[i]表示i-s2的最小翻转次数。 题解上说要讨论a[i]的正负,没讨论会被卡掉一个点,原因大概是当a[i]>0时 j-2*a[i]#include<iostre原创 2016-03-19 09:50:52 · 533 阅读 · 0 评论 -
洛谷 1108 低价购买
http://www.luogu.org/problem/show?pid=1108# 第一问就是裸的最长下降子序列 第二问比较难,看了题解想了好久才明白,可以加一个t[i]数组表示1到i取最长下降子序列的方案数,显然如果f[i]==1则t[i]=1,然后j从1到i-1循环,f[i]==f[j]+1&&a[i]< a[j]时说明可以从1到j的最长子序列后加一个a[i]即加上t[j]个方案数,这里原创 2016-03-19 10:49:47 · 1085 阅读 · 0 评论 -
洛谷 1855 榨取kkksc03
http://dev.luogu.org:3308/problem/show?pid=1855#sub 红果果的广告题,裸的二维背包。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int f[220][220],m[110],t[110];int a原创 2016-04-01 23:31:03 · 538 阅读 · 0 评论 -
洛谷 1417 烹饪方案
http://dev.luogu.org:3308/problem/show?pid=1417 月考跪碎了膝盖,回到家赶紧敲个题压压惊。。。 贪心+DP 看了题解神犇的思路:现在考虑相邻的两个物品x,y。假设现在已经耗费p的时间,那么分别列出先做x,y的代价: a[x]-(p+c[x])*b[x]+a[y]-(p+c[x]+c[y])*by a[y]-(p+c[y])*b[y]+a[x]-原创 2016-04-01 22:59:37 · 258 阅读 · 0 评论 -
洛谷 1280 尼克的任务
http://www.luogu.org/problem/show?pid=1280 DP,看了题解之后想了好久才明白(其实也并不很明白)。。。 f[i]表示从i到n的最大空闲时间,i从n到1枚举 如果有p[j]==i,则至少要做个任务,f[i]可以从f[i+t[j]]转移过来 如果没有,则可以偷懒,f[i]=f[i+1]+1 题目给的p是有序的,所以j直接从m开始减就可以#include原创 2016-03-05 14:18:10 · 231 阅读 · 0 评论 -
NOIP 2006 tg T2金明的预算方案
http://www.luogu.org/problem/show?pid=1064# 麻烦一点的背包DP,其实还是01背包,因为只可能有0,1,2件附件,都比一比就行了。。。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int m,n,k,W,V,f[3原创 2016-03-05 10:16:50 · 383 阅读 · 0 评论 -
2019牛客暑期多校训练营(第二场)H Second Large Rectangle (动态规划+去重)
https://ac.nowcoder.com/acm/contest/882/H题意:给定一个n×mn×mn×m的01矩阵(1≤n,m≤10001≤n,m≤10001≤n,m≤1000),求面积第二大的全1矩阵的面积。求最大全1矩阵面积的方法参考这个博客http://www.luyixian.cn/news_show_102909.aspx对于每一行的第jjj个位置,用h[j]h[j]h[...原创 2019-08-22 13:34:05 · 130 阅读 · 0 评论