
动态规划
cjk_cjk
这个作者很懒,什么都没留下…
展开
-
BZOJ3209 花神的数论题(数位dp)
【题解】数位dp的思想 枚举的是二进制数 先预处理出所有i位二进制数中,含j个1的数的个数,就是C(i,j)然后就是从高位到低位,处理填0还是1的情况 填0:之后i-1位随机填0/1填1:紧接着的 n对应的二进制数该位为0 的位只能填0(否则超过n) 注意该算法计数到的所有情况不含SUM(n)!因此读入时,n++数位dp是不是基本都要预处理 = =原创 2015-01-31 23:45:31 · 788 阅读 · 0 评论 -
BZOJ3173 [Tjoi2013]最长上升子序列(离线处理+Treap+LIS)
【题解】离线处理:第n个数的插入不会改变前n-1个数的相对位置,因此可以直接求得最终序列,第i次操作的答案就是仅含1~i的LIS 最终序列可以用Treap求得;由于仅含1~i的LIS = max( 仅含1~i-1的LIS , 以i为结尾的LIS ),可以用O(N*logN)的动态规划求出以每个数为结尾的LIS,再递推求出每步答案 【代码】#include#in原创 2015-06-22 11:25:26 · 615 阅读 · 0 评论 -
BZOJ1009 [HNOI2008]GT考试(KMP算法+矩阵加速dp)
字符串上的动态规划:头回见这种题(果然蒟蒻一只)。说实在的,看到 N好多题解对f[i][j]的含义讲得不太确切,但有一篇让我受益匪浅 http://blog.youkuaiyun.com/popoqqq/article/details/40188173(膜拜PoPoQQQ大神)按顺序处理准考证号每一位,设f[i][j]表示:准考证号前i位中 后j位与不吉利数的前j位相同时,前i位的方案原创 2015-01-23 00:50:37 · 3974 阅读 · 0 评论 -
BZOJ1030 [JSOI2007]文本生成器(AC自动机+dp)
【题解】与poj2778有类似之处,只不过本题模板串太长,无法用到矩阵,而文本较短,适于dpans = 26^m - 不含任意单词的文本数 不含任意单词的文本数 的求法:转化成从有向图的一点出发,走n步到达另一结点的方案数 本题为 从字典树的root出发,走m步到达任一结点,且不构成单词 的方案数,需使建立的所有有向边合法(无法走出单词)将单词建成AC自动机,每原创 2015-06-24 18:09:24 · 1117 阅读 · 0 评论 -
BZOJ3233 [Ahoi2013]找硬币(线性筛+dp)
【题解】本蒻一直在想二维dp,看了题解才发现竟然一维就可以 设f[i]为最大面值为i时,买下所有兔纸花费的最小硬币数 f[i] = min{ f[j] - sigma(a[k]/i*(i/j-1)) } , j|i,其中,j为次大面值,这个方程考虑的是选了i能减小多少j的使用注意,如果硬币种类很多,是不影响最优答案的(不用就行了) -----------> 重要的性质所原创 2015-06-26 03:04:29 · 1808 阅读 · 1 评论 -
[APIO2014]序列分割(斜率优化dp)
【题解】一个重要的结论:对于同一组分割方式,总得分与分割的先后顺序无关不妨考虑最先分成的3部分,设区间和分别为Sa,Sb,Sc可以证明,先分割a,b还是b,c,最终得分都是ab+bc+ca,即最先分成的3部分无需考虑顺序,子问题也是一样于是,从前往后切割即可设f[x][i]为前i个数分x份的最大得分,显然1dp方程:f[x][i]=max{ f[x-1][j]原创 2015-06-26 03:22:50 · 612 阅读 · 0 评论 -
BZOJ1044 [HAOI2008]木棍分割(二分答案/单调性优化dp+递推优化)
【题解】f[i][j]:前i个数分j段的最小值设 f[i][x]:前i个数分j段的最小值f[i][x]=min{ max(f[j][x-1],s[i]-s[j]) }二分答案即可然而我的方法类似于斜率优化:假设j比k优,讨论j,k的大小关系,可得(只写最后结论):1) j<k(前优) f[j][x-1]<f[k][x-1] 且 s[j]+f[k][x-1]>...原创 2015-06-27 02:28:46 · 594 阅读 · 0 评论 -
BZOJ1096 [ZJOI2007]仓库建设(斜率优化dp)
【题解】显然,工厂n一定是要建设仓库的,可以设 f[i]:工厂i建设仓库时前i个工厂的最小花费 则:f[i]=min{ sigma( (xi-xk)*pk ) + f[j] +ci },0设 s[i]=p[1]+p[2]+…+p[i],t[i]=x[1]*p[1]+x[2]*p[2]+…x[i]*+p[i]则:f[i]=min{ xi*(si-sj) - (ti-tj) + f原创 2015-05-25 01:22:31 · 456 阅读 · 0 评论 -
[APIO2015]巴厘岛的雕塑(数位dp)
【题解】引用ZYF神犇一句话:"显然位运算的极值问题都应该从高位向低位考虑。优先让这一位为0,如果行的话这一位就是0,否则就设为1。" 设答案为ans,从高位到低位枚举 是否有使ans的这一位为0的方案,注意到每一位是互相独立的 假设枚举到了倒数第x位,即ans的最高位到倒数第x+1位的最优01分布已确定,现在正在判断第x位是否有可能填0:对于每个x,考虑递推法:设原创 2015-06-12 16:53:29 · 1171 阅读 · 0 评论 -
BZOJ1025 [SCOI2009]游戏(置换+数论+背包)
题意真纠结题目大意:规定一种1~N的对应关系(1~N的一种排列),按这种关系将顺序序列1~N反复变换,变回1~N所经过的变换次数+1 记为这种对应关系的排数,求排数有多少个 【题解】置换群的问题。对于每种对应关系,将其分解为循环节的形式,则变换次数为:各循环节长度的最小公倍数 如 对应关系:1->2 2->3 3->1 4->5 5->4 6->6,转化后就是(原创 2015-01-29 00:12:55 · 620 阅读 · 0 评论 -
[NOI2007]生成树计数(状压dp+矩阵加速)
【题解】考虑动态规划的状态转移:从左往右,加入第n个结点时,只考虑它向前连的边,那么答案就与向前连哪些边,以及之前的n-1个点构成的答案有关 然而,"向前连哪些边"并不是有2^k种情况 前n个点构成了许多连通块,而非一棵树 因此,结点n引出的边既要使结点1~n连通,也不能构成环 而n只能向 n-k ~ n-1 连边 所以n的答案只与结点n-k~n-1的连通性有关原创 2015-05-28 01:43:20 · 695 阅读 · 0 评论 -
BZOJ1003 [ZJOI2006]物流运输trans(集合型动态规划)
"使得总成本尽可能地小",属于最优化问题; m表示码头总数,1整个过程按日期顺序进行,因此设:f[i]:前i天的最小花费 状态转移:若在第j天最后一次更改线路(1但由于第j~i天会有航线不让走,所以从第j天开始,选择的最短路不能经过第j~i天期间禁行过的航线 既然j不同,"地图"就不同,且这个"地图"总共只有2^m种情况,我们可以针对每种情况,求出最短路,以后直接调用(原创 2015-01-07 01:52:31 · 907 阅读 · 0 评论 -
BZOJ1026 [SCOI2009]windy数(数位dp)
Ac了“GT考试”以后,感觉这题还是蛮基础的【题解】先预处理出数组dp、f:dp[i][j]表示:第i位填j的windy数有多少个(个位为第1位,十位为第2位……)状态转移:每次在最左边填一个数: dp[i][j]=sigma(dp[i-1][k]),0=2边界:dp[1][j]=1 从A至B计数时,若A与B位数不等,则最高位可以是0,用f[i]记原创 2015-01-31 19:27:45 · 669 阅读 · 0 评论 -
[NOI2011]智能车比赛(计算几何+动态规划)
【题解】路径只在矩形顶点处拐弯,因此可以建4*n+2个点,求最短路 那么只需判断哪些点对能够直接连边 直接枚举点对并建图,复杂度为O(n^3),优化:枚举点u和其他所有点能否连边时,可以利用一个天然的单调性:这些点横坐标是从左到右的 从左到右枚举点u,用u来更新最短路,对于每个u,维护从它出发的上下视线(两个向量),另一个点v的枚举依然是从左到右推进 这样,要判断u,v能否原创 2015-03-16 00:49:17 · 814 阅读 · 0 评论 -
[NOI2011]Noi嘉年华(动态规划及单调性优化)
【题解】这道题不是按"第i个活动在哪个嘉年华举办"来进行决策的,而是利用题目"嘉年华A与B的活动时间无交叉"的性质,在离散化时间的基础上表示状态:pre[i][j]表示:时间[1,i]中有j个活动在嘉年华A举办时,嘉年华B举办的最大活动数 状态转移:先预处理得num[i][j]:离散化后时间满足i pre[i][j]=max{ pre[k][j]+num[k]原创 2015-03-16 01:08:16 · 1194 阅读 · 0 评论 -
poj2411 Mondriaan's Dream(轮廓线动态规划)
【题解】首先将棋盘转化成"竖长形"(m那么正枚举的当前行可能是参差不齐的,在当前行产生轮廓(用1/0表示当前是否被覆盖,若当前格选择填0,其上方相邻位必为1,否则再无法被覆盖)以枚举格的坐标和当前行的"轮廓"为状态,即:d[cur][k]:棋盘第cur个格在状态为k时的方案数 其中,棋盘格位置(i,j)用cur来代替(相当于d[i][j][k],而d[i][j][k]只与(i,原创 2015-03-23 00:35:29 · 912 阅读 · 8 评论 -
[APIO2009]抢掠计划(强连通分量+缩点+拓扑排序+dp)
题意:给定一个有向图,从指定起点出发,到任意一个指定终点停止,求经过的所有结点的最大点权和。点数、边数因为一个强连通分量内的点相互可达,所以如果要经过其中一个点,就应经过它所在的强连通分量内的所有点,因此将一个强连通分量缩成一个点 这样得到了一个有向无环图,在图上dp即可 先对所有起点可达的点做一遍拓扑排序,然后用队列维护入度为0的点,每次取出队首元素,用它的答案更新其他点原创 2015-05-03 23:30:18 · 751 阅读 · 0 评论 -
[NOI2009]诗人小G(决策单调性优化dp)
【题解】经典的1D1D动态规划优化 状态转移方程:f[i]=min{ f[j]+abs(s[i]-s[j]+i-j-1-l)^p } 决策单调性及证明:http://blog.youkuaiyun.com/jasonzhu8/article/details/5928552因此,对于每个数,其能作为最优决策的区间一定是连续的一段,对于新求出的f[i],从后往前在i-1,i-2原创 2015-05-01 22:52:29 · 1464 阅读 · 0 评论 -
BZOJ1010 [HNOI2008]玩具装箱toy(斜率优化dp)
【题解】设 f[i]表示将第1~i个物品装箱后,费用的最小值,答案为f[n] s[i]=c[1]+c[2]+……+c[i]则:f[0]=0f[i]=min{ f[j]+(s[i]-s[j]+i-j-1-L)^2 } ( i>0 , 0===================================================================原创 2015-04-26 20:39:13 · 610 阅读 · 0 评论 -
[APIO2010]特别行动队(斜率优化dp)
【题解】设s[i]=x[1]+x[2]+……+x[i]则:f[0]=0 f[i]=max{ f[j]+zdl(s[i]-s[j]) } ( i>0 , 0 若 j不比k差 则:f[j]+a*(s[i]-s[j])^2+b*(s[i]-s[j])+c >= f[k]+a*(s[i]-s[k])^2+b*(s[i]-s[k])+c整理得: f[j]+a*原创 2015-05-06 02:22:10 · 565 阅读 · 0 评论 -
BZOJ1040 [ZJOI2008]骑士(基环树+树形dp)
【题解】出现了基环森林,还是考虑断环为链,然后dp对每个连通块,随意找到环上一边并断开,记该边的端点为x,y限制x,y的情况:1. x不取,y取上 2. y不取,x取上 树形dp:记 f[i][0]表示不取i时的最大战斗力; f[i][1]表示取i时的最大战斗力,以上两种情况去最优值即可 注意:1. 处理破环为链的问题,使用邻接表比较合适 2. 对x,y原创 2015-06-11 18:15:25 · 835 阅读 · 0 评论