随笔分类 -  基础算法 -- 动态规划

上一页 1 2 3 4 5 6 ··· 15 下一页
摘要:[BJOI2019]排兵布阵(动态规划) 题面 "洛谷" 题解 暴力dp: 设$f[i][j]$表示考虑到了第$i$座城市用了$j$人的最大收益,枚举在这个城市用多少人就可以了。 优化: 发现用的人数一定是某个敌人的人数的二倍加一,那么决策只有$O(s)$个。 时间复杂度$O(snm)$。(不满) 阅读全文
posted @ 2019-04-21 23:00 小蒟蒻yyb 阅读(647) 评论(0) 推荐(0) 编辑
摘要:[BJOI2019]奥术神杖(分数规划,动态规划,AC自动机) 题面 "洛谷" 题解 首先乘法取$log$变加法,开$c$次根变成除$c$。 于是问题等价于最大化$\displaystyle \frac{\sum val_i}{c}$。典型的分数规划的形式。 二分权值$k$,每个点的点权变成$val 阅读全文
posted @ 2019-04-21 19:17 小蒟蒻yyb 阅读(535) 评论(3) 推荐(0) 编辑
摘要:【CF1151F】Sonya and Informatics(动态规划,矩阵快速幂) 题面 "CF" 题解 考虑一个暴力$dp$。假设有$m$个$0$,$n m$个$1$。设$f[i][j]$表示当前做到了第$i$个操作,前$m$个元素中有$j$个$1$的方案数。 转移就枚举交换哪两个东西就可以了。 阅读全文
posted @ 2019-04-19 20:53 小蒟蒻yyb 阅读(521) 评论(0) 推荐(0) 编辑
摘要:【BZOJ5505】[GXOI/GZOI2019]逼死强迫症(矩阵快速幂) 题面 "BZOJ" "洛谷" 题解 如果没有那两个$1 1$的东西,答案就是斐波那契数,可以简单的用$dp$得到。 大概是设$f[i]$表示当前除了到第$i$列的方案数,转移是考虑用$2 1$竖着覆盖一列还是$2$个$1 2 阅读全文
posted @ 2019-04-19 14:36 小蒟蒻yyb 阅读(445) 评论(2) 推荐(0) 编辑
摘要:【BZOJ5503】[GXOI/GZOI2019]宝牌一大堆(动态规划) 题面 "BZOJ" "洛谷" 题解 首先特殊牌型直接特判。 然后剩下的部分可以直接$dp$,直接把所有可以存的全部带进去大力$dp$就行了。 发现每多一张牌胡的本质就是把一个刻字换成杠子,所以这两个东西记录在一起就行了。 那么 阅读全文
posted @ 2019-04-19 09:08 小蒟蒻yyb 阅读(370) 评论(0) 推荐(0) 编辑
摘要:[ZJOI2019]麻将(动态规划,自动机) 题面 "洛谷" 题解 先做一点小铺垫,对于一堆牌而言,我们只需要知道这$n$张牌分别出现的次数就行了,即我们只需要知道一个长度为$n$的串就可以了。 首先考虑如何判断一副牌是不是能胡。 出现了七对牌的情况很容易特判处理掉,只需要考虑第一种情况。 那么我们 阅读全文
posted @ 2019-04-17 20:14 小蒟蒻yyb 阅读(905) 评论(0) 推荐(0) 编辑
摘要:【BZOJ5498】[十二省联考2019]皮配(动态规划) 题面 "BZOJ" "洛谷" 题解 先考虑暴力$dp$,设$f[i][j][k]$表示前$i$所学校,有$j$人在某个阵营,有$k$人在某个派系的方案数。 发现如果$k=0$,那么可以先决策每个城市选择哪一个阵营,再对于每个学校选择哪一个派 阅读全文
posted @ 2019-04-16 11:18 小蒟蒻yyb 阅读(498) 评论(0) 推荐(0) 编辑
摘要:【CF1132F】Clear the String(动态规划) 题面 "CF" 题解 考虑区间$dp$。 增量考虑,每次考虑最后一个字符和谁一起删去,然后直接转移就行了。 cpp include include include using namespace std; define MAX 505 阅读全文
posted @ 2019-04-04 23:03 小蒟蒻yyb 阅读(429) 评论(0) 推荐(0) 编辑
摘要:【CF1133E】K Balanced Teams(动态规划,单调队列) 题面 "CF" 让你把一堆数选一些出来分成不超过$K$组,每一组里面的最大值和最小值之差不超过$5$,求最多有多少个人元素可以被分组。 题解 设$f[i][j]$表示把前$i$个数分成$j$组的最多人数。 然后单调队列转移一下 阅读全文
posted @ 2019-04-04 16:55 小蒟蒻yyb 阅读(431) 评论(0) 推荐(0) 编辑
摘要:【CF1139D】Steps to One(动态规划) 题面 "CF" 你有一个数组,每次随机加入一个$[1,n]$的数,当所有数$gcd$为$1$时停止,求数组长度的期望。 题解 设$f[i]$表示$gcd$为$i$时的答案的期望。 考虑转移就是每次选一个数和$i$求个$gcd$,那么计算一下变成 阅读全文
posted @ 2019-04-04 16:07 小蒟蒻yyb 阅读(328) 评论(0) 推荐(0) 编辑
摘要:【BZOJ4890】[TJOI2017]城市(动态规划) 题面 "BZOJ" "洛谷" 题解 数据范围都这样了,显然可以暴力枚举断开哪条边。 然后求出两侧直径,暴力在直径上面找到一个点,使得其距离直径两端点的最大距离最小。 然后我用线段树求的直径,就跑得很快了。 cpp include includ 阅读全文
posted @ 2019-03-28 13:02 小蒟蒻yyb 阅读(285) 评论(0) 推荐(0) 编辑
摘要:【CF981D】Bookshelves(贪心,动态规划) 题面 "洛谷" "Codeforces" 给定一个长度为$n$的数列,把他们划分成$k$段,使得每段的和的结构按位与起来最大。 题解 从高位往低位贪心,然后暴力$dp$就行了吧。。。 cpp include include using nam 阅读全文
posted @ 2019-03-21 20:32 小蒟蒻yyb 阅读(392) 评论(0) 推荐(0) 编辑
摘要:【BZOJ2817】[ZJOI2012]波浪(动态规划) 题面 "BZOJ" "洛谷" 题解 首先这个差值最大也就是$n^2$级别的。 那么这样子就可以压进状态啦。 我们把这个操作看成一个个加数的操作,按照从小往大的顺序依次把每个数放到一个合法的格子上面去,那么对于先放的数,对于答案的贡献就是负的, 阅读全文
posted @ 2019-03-11 21:41 小蒟蒻yyb 阅读(545) 评论(0) 推荐(0) 编辑
摘要:【BZOJ1831】[AHOI2008]逆序对(动态规划) 题面 "BZOJ" "洛谷" 题解 显然填入的数拎出来是不降的。 那么就可以直接大力$dp$。 设$f[i][j]$表示当前填到了$i$,上一个填的数是$j$的最小逆序对数。 随便拿什么维护一下转移就好了。 cpp include incl 阅读全文
posted @ 2019-03-06 22:20 小蒟蒻yyb 阅读(366) 评论(3) 推荐(0) 编辑
摘要:【agc030f】Permutation and Minimum(动态规划) 题面 "atcoder" 给定一个长度为$2n$的残缺的排列$A$,定义$b_i=min\{A_{2i 1},A_{2i}\}$,求有多少种不同的$b$。 题解 考虑这个$b$的取值是两两配对之后求$min$,所以我们把所 阅读全文
posted @ 2019-03-06 21:55 小蒟蒻yyb 阅读(804) 评论(1) 推荐(1) 编辑
摘要:【BZOJ3167】[HEOI2013]SAO(动态规划) 题面 "BZOJ" "洛谷" 题解 显然限制条件是一个$DAG$(不考虑边的方向的话就是一棵树了)。 那么考虑树型$dp$,设$f[i][j]$表示当前点$i$在其子树内的排名为$j$的方案数。 每次考虑加入一棵子树,即考虑把$f[v][k 阅读全文
posted @ 2019-03-06 19:48 小蒟蒻yyb 阅读(304) 评论(0) 推荐(0) 编辑
摘要:【CF908G】New Year and Original Order(动态规划) 题面 "洛谷" "CF" 题解 设$f[i][j][k][0/1]$表示当前填到了第$i$位,有$j$个大于等于$k$的数,是否卡到上界的方案数。 这个东西算完之后,等价于默认排好序了。 看起来可以枚举每个数字出现在 阅读全文
posted @ 2019-03-04 22:56 小蒟蒻yyb 阅读(527) 评论(0) 推荐(0) 编辑
摘要:【CF809C】Find a car(动态规划) 题面 "洛谷" "CF" 有一个无穷大的矩阵,第$i$行第$j$列的数是$(i 1)xor(j 1)+1$,$q$次询问,每次询问一个矩形内数小于等于$k$的数的和。 题解 询问等价于$\sum_{i=l}^r\sum_{j=L}^R [i\oplu 阅读全文
posted @ 2019-03-04 22:02 小蒟蒻yyb 阅读(434) 评论(0) 推荐(0) 编辑
摘要:【arc073f】Many Moves(动态规划,线段树) 题面 "atcoder" "洛谷" 题解 设$f[i][j]$表示第一个棋子在$i$,第二个棋子在$j$的最小移动代价。 发现在一次移动结束之后,总是有一个棋子会动到当前位置,因此状态改为当前是第$i$次操作,第$i$次操作没有动的那个棋子 阅读全文
posted @ 2019-03-04 19:43 小蒟蒻yyb 阅读(466) 评论(0) 推荐(0) 编辑
摘要:【CF1082F】Speed Dial(动态规划) 题面 "CF" "洛谷" 题解 把$Trie$树建出来之后发现就是一个树型$dp$,每个点会对于其父亲中第一个被标记的点产生贡献。 那么把第一个点压入状态。 设$f[i][p][k]$表示当前点$i$,其到根的链上第一个被标记的点是$p$,其子树内 阅读全文
posted @ 2019-03-04 17:18 小蒟蒻yyb 阅读(414) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 15 下一页