随笔分类 - 基础算法——DP
十分常用的算法,大致目录如下:
普通DP,记忆化搜索(实质是DP,但在实现方式上与普通DP各有优劣),状压DP,数位DP,树形DP,区间DP,概率/期望DP,数学DP,插头DP,最短路DP。。。。。。。。
各类常见DP优化如下:
单调队列优化,斜率优化,决策单调性优化(其实上面两种某种意义上也包括在这里面)
    
摘要:~~~题面~~~ 题解: 首先观察数据范围,n <= 18,很明显是状压DP。所以设f[i]表示状态为i时的最小代价。然后考虑转移。 注意到出发点(0, 0)已经被固定,因此只需要2点就可以确定一条抛物线,所以每次转移时枚举是哪两只猪确定了这条抛物线,然后由于一条抛物线可能会恰好打中别的猪,所以再枚
        阅读全文
                
摘要:~~~题面~~~ 题解: 首先,有一个不太直观的状态,f[i][j][k][l]表示DP到i位,三种颜色最后出现的位置分别是j, k, l的方案数。因为知道了三种颜色最后出现的位置,因此也可以得知以当前点为右端点的区间内有几种颜色了,因为左端点不断向左扩张的时候,颜色数不会减少。 然后考虑优化这个状
        阅读全文
                
摘要:~~~题解~~~ 题解: 观察题面可以很快发现这是一棵基环内向树(然而并没有什么用。。。) 再稍微思考一下,假设将这个环中的任意一点设为root,然后去掉root到下面的特殊边(即构成环的那条边),那么就构成了一棵树,并且可以用简单树形DP解决。 再考虑加上这条边的限制,设被去掉的这条边是连接roo
        阅读全文
                
摘要:~~~题面~~~ 题解: 设f[i]表示到第i天的代价,cost[i][j]表示第i天到第j天采取同一种方案的最小代价。那么转移就很明显了,直接$n^2$枚举即可。 所以问题就变成了怎么获取cost数组。因为i到j都采取同一种方案,因此这种方案不能经过在i到j这些天出现故障的码头,因为要求的是最小代
        阅读全文
                
摘要:~~~题面~~~ 题解: 首先我们需要知道一个性质。 如果所有干旱城市都可以被支援到,那么对于任意水库而言,它可以支援的干旱城市必然是连续的 证明如下: 我们假设一个水库支援到了2个不连续的城市,但中间有个城市支援不到。如上图蓝色线所示,那么由于所有干旱城市都可以被支援到,因此必然有另一个水库可以支
        阅读全文
                
摘要:~~~题面~~~ 题解: 一开始看觉得很难,理解了之后其实还挺容易的。 首先我们考虑朴素DP: 令f[i][j]表示长串到了第i项, 与不吉利数字(模式串)匹配到了第j项的方案。 显然ans = f[n][0] + f[n][1] + …… + f[n][m-1]; 可以肉眼看出f[1][0] = 
        阅读全文
                
摘要:~~~题面~~~ 思路: 主要难点在思路的转化, 不能看见要求$\sum{a[i]^2}$就想着求a[i], 我们可以对其进行某种意义上的拆分,即a[i]实际上可以代表什么? 假设我们现在有两种取出某一数列的方法,分别为X,Y。(X,Y可以相同) 那么这样的二元组有多少个呢? a[i]^2个。 因为
        阅读全文
                
摘要:题面: 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数。比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等。 现在给定一个数,问在这个数之前有多少个数。(注意这个数不会有前导0). 样例输入:1020 样例输出
        阅读全文
                
摘要:~~~题面~~~ 题解: 这是一道斯坦纳树的题,用状压+spfa来解决 什么是斯坦纳树? 一开始还以为是数据结构来着,其实跟最小生成树很像,大致就是最小生成树只能在各个点之间直接相连,而斯坦纳树则允许间接相连。 就是允许在图中添加新的点,再通过连接新的点来将指定点联通。这些新点可能是被限定的(给定点
        阅读全文
                
摘要:题面: 农场主John新买了一块长方形的新牧场,这块牧场被划分成M行N列(1 ≤ M ≤ 12; 1 ≤ N ≤ 12),每一格都是一块正方形的土地。John打算在牧场上的某几格里种上美味的草,供他的奶牛们享用。 遗憾的是,有些土地相当贫瘠,不能用来种草。并且,奶牛们喜欢独占一块草地的感觉,于是Jo
        阅读全文
                
摘要:题意: 给你一棵树,从树中取出一部分满足:是一条链+一些直接连在这条链上的节点 求节点数最多的合法取出部分。 题解: 其实这题还是不难? 观察到对于任意一条链, 只有两种情况: 一条路走到底 or 以某个点为中转 f[x]表示从x往下走,一路走到底的包括x的最优解, f[x]包括x也包括father
        阅读全文
                
摘要:题面: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可能是山地(用“H” 表示),也可能是平原(用“P”表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:
        阅读全文
                
摘要:题面: 莫莉斯·乔是圣域里一个叱咤风云的人物,他凭借着自身超强的经济头脑,牢牢控制了圣域的石油市场。 圣域的地图可以看成是一个n*m的矩阵。每个整数坐标点(x , y)表示一座城市( 1\le x\le n,1\le y\le m1≤x≤n,1≤y≤m )。两座城市间相邻的定义为:对于城市(Ax, 
        阅读全文
                
摘要:最近在写DP,今天把最近写的都放上来好了,,, 题意:给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。 首先询问的是一个区间,显然是要分别求出1 ~ r ,1 ~ l的答案,然后相减得到最终答案 首先我们观察到,产生答案的区间是连续的,且可以被拆分, 也就是
        阅读全文
                
摘要:表示调这题调到失智了,,,调了好久发现是因为DP的方向反了。。。 首先我们观察到虽然动物和小朋友数量都很多,但是每个小朋友可以看到的动物只有连续的5个! 因此我们考虑状压,2^5还是可以承受的。 再观察到因为是连续的5个,所以对于任意一段以i为开头的区间而言,区间都是已经被固定了的。 因此对于每个区
        阅读全文
                
摘要:做了好久。。。。 大致思路: 求出前k大的方格之和即为答案, 先考虑一维的情况,设f[i]为数位上各个数相乘为i的数的总数,也就是对于数i,有f[i]个数它们各个位相乘为i, 再拓展到二维,根据乘法原理(貌似是这个原理吧),方格(i , j)的金块数就是f[i] * f[j], 所以先数位DP求出f
        阅读全文
                
摘要:深感人类智慧的伟大啊,,, 第一次看这题简直毫无头绪, 其实状态设出来了,往下推就顺理成章了。 f[i][j][k]表示到第i位,选了j段,第i位有没有选(k)的最大子段和, 然后考虑用人类智慧暴力推倒所有情况的转移方程, f[i][1][1]:因为要取第i位,又只有一段,所以要么接这上一段来,要么
        阅读全文
                
摘要:发现最近好少写博客啊(其实是各种摆去了) 更一点吧 这道题要求最小化均方差,其实凭直觉来说就是要使每个块分的比较均匀一点,但是单单想到想到这些还是不够的, 首先f[i][j][k][l][t]表示以(i,j)为左上角,(k,l)为右下角,一共分割的t次的矩形的最小xx, 其中xx是某个与最小均方差挂
        阅读全文
                
摘要:写了好久。。。。刚刚调了一个小时各种对拍,,,,最后发现是多写了一个等号,,,,内心拒绝表示一开始看真的是各种懵逼啊在偷听到某位大佬说的从高位开始贪心后发现可做首先考虑小数据(因为可以乱搞)所以先从高位开始枚举位数:for(int k=all; k ;k--)ans表示当前答案,f[i][j]表示d
        阅读全文
                
摘要:(感觉洛谷上题面那一小段中文根本看不懂啊,好多条件都没讲,直接就是安装也要一个时间啊,,,明明不止啊!还好有百度翻译。。。。。。)题意:一棵树,一开始在1号节点(root),边权都为1,每个点有点权,要最小化max(点权+到达时间) < 所有点的首先这看起来就是一道DP题,但是根据直觉,,,应该跟贪
        阅读全文
                

 浙公网安备 33010602011771号
浙公网安备 33010602011771号