摘要: 题目链接:计蒜客 T2033 换教室 题目大意: 题解: 膜拜出题人!!!状态转移方程写到吐血。。。 膜拜出题人!!!状态转移方程写到吐血。。。 膜拜出题人!!!状态转移方程写到吐血。。。 首先通过$Floyd$计算所有教室间的最短距离。 设$dp[i][j][0/1]$表示前$i$节课申请了$j$ 阅读全文
posted @ 2021-07-26 22:47 ZZHHOOUU 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 题目链接:CodeForces 148D Bag of mice 题目大意: 题解: 设$dp[i][j]$表示轮到王妃抓时有$i$只白鼠,$j$只黑鼠的情况下,王妃获胜的概率。 王妃获胜的情况可以分为以下三种: 王妃抓到一只白鼠,则王妃赢了,概率为$\frac{i+j}$; 王妃抓到一只黑鼠,龙抓 阅读全文
posted @ 2021-07-26 19:18 ZZHHOOUU 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 题目链接:计蒜客 T2657 windy数 题目大意: 题解: 数位$dp$题。 $dp[pos][pre]$表示位数为$pos$且第$pos + 1$位为$pre$的满足条件的数的个数,若第$pos+1$位为前导$0$,则$pre$为$-1$。 从高位开始记忆化搜索。 #include <cmat 阅读全文
posted @ 2021-07-26 04:19 ZZHHOOUU 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 2089 不要62 题目大意: 题解: 很典型的数位$dp$题。 \(dp[i][0]\):长度为$i$且第$i+1$位不是$6$的个数; \(dp[i][1]\):长度为$i$且第$i+1$位是$6$的个数。 从高位开始记忆化搜索即可。 #include <iostream> u 阅读全文
posted @ 2021-07-26 04:12 ZZHHOOUU 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 题目链接:POJ 1185 炮兵阵地 题目大意: 题解: 因为每一个炮台左右都是会互相攻击的,也就是说有些状态是不需要枚举的,例如$0011$,再者如果要用$0$到$1023$来枚举的话,$1024^3 \times 100$的复杂度是不能接受的,所以我们需要通过预处理并装入$sta$数组来将其缩减 阅读全文
posted @ 2021-07-26 03:55 ZZHHOOUU 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 1400 Mondriaan's Dream 题目大意: 用$1\times 2$的矩形完全覆盖一个$n\times m$矩形区域,求覆盖方案数。 题解: 将某一行用二进制来表示是否被覆盖了,压缩信息到一个整数中,进行状态转移。 设$dp[i][j]$表示前$i$行,除最后一行其他 阅读全文
posted @ 2021-07-26 03:38 ZZHHOOUU 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HDU 2376 Average distance 题目大意: 计算一棵树中任意两点之间的距离的平均值。 题解: 如果暴力枚举两点再求距离是显然会超时的。 转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为$a$和$b$,那么这条边被经过的次数就是$a 阅读全文
posted @ 2021-07-26 03:09 ZZHHOOUU 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 题目链接:51Nod 2605 没有上司的舞会 题目大意: 题解: 树形$dp$很经典的一道题,各职员的上下级关系可以构成一棵树。 设$dp[i][1/0]$表示编号为$i$的职员参加或不参加聚会时,以他为根的子树所能获得的最大快乐指数。 当某职员参加聚会时,他的下级只能不参加;当他不参加聚会时,他 阅读全文
posted @ 2021-07-26 02:52 ZZHHOOUU 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 题目链接:计蒜客 T2098 乌龟棋 题目大意: 题解: 设$dp[a][b][c][d]$表示走一步、两步、三步、四步的卡分别用了$a$、\(b\)、\(c\)、$d$张。 状态转移方程: \(dp[a][b][c][d]=max\{dp[a - 1][b][c][d],dp[a][b - 1][ 阅读全文
posted @ 2021-07-26 02:40 ZZHHOOUU 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HRBUST 1214 方格取数 题目大意: 题解: 设$dp[i][j][x][y]$表示第一次走到$i$行$j$列,第二次走到$x$行$y$列时能取的数的最大和。 状态转移方程: \(dp[i][j][x][y]=max\{dp[i-1][j][x-1][y], dp[i][j-1][ 阅读全文
posted @ 2021-07-26 02:35 ZZHHOOUU 阅读(28) 评论(0) 推荐(0) 编辑
摘要: 题目链接:LibreOJ 10148 能量项链 题目大意: 题解: 一道典型的区间$dp$题。 状态转移方程: \(dp[i][j] = max\{dp[i][j], dp[i][k] + dp[k + 1][j] + a[i] * a[k + 1] * a[j + 1]\},i\leq k < j 阅读全文
posted @ 2021-07-26 02:25 ZZHHOOUU 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HRBUST 1819 石子合并问题--圆形版 题目大意: 题解: 区间$dp$模板题,由于是圆形操场,所以将数据再拓展一遍,用前缀和存储石子堆数量。 #include <iostream> using namespace std; #define INF 0x3f3f3f3f int d 阅读全文
posted @ 2021-07-26 02:21 ZZHHOOUU 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 题目链接:51Nod 1183 编辑距离 题目大意: 题解: 设$dp[i][j]$为字符串$A$的前$i$个字符变成字符串$B$的前$j$个字符需要的最小操作数。 若字符串$A$的第$i$个字符与字符串$B$的第$j$个字符相等,则问题变成将字符串$A$的前$i-1$个字符变成字符串$B$的前$j 阅读全文
posted @ 2021-07-26 01:19 ZZHHOOUU 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 题目链接:51Nod 1006 最长公共子序列Lcs 题目大意: 题解: 最长公共子序列模板题,设$dp[i][j]$为字符串$A[1...i]$与字符串$B[1...j]$的最长公共子序列长度,则状态转移方程为: \(dp[i][j] = max\{dp[i-1][j-1] + (A[i] == 阅读全文
posted @ 2021-07-26 01:07 ZZHHOOUU 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 题目链接:HRBUST 1377 金明的预算方案 题目大意: 题解: 将主件和其附件分为一组,组内包含主件、主件和附件$1$、主件和附件$2$、主件和附件$1,2$至多四个物品。 对所有组进行$01$背包,每组只能选一个。 #include <cstring> #include <iostream> 阅读全文
posted @ 2021-07-26 00:56 ZZHHOOUU 阅读(33) 评论(0) 推荐(0) 编辑
摘要: 题目链接:51Nod 2649 完全背包 题目大意: 题解: 完全背包模板题。 #include <iostream> using namespace std; int dp[50010], v[110], c[110], n, V; int main() { cin >> n >> V; for 阅读全文
posted @ 2021-07-26 00:50 ZZHHOOUU 阅读(31) 评论(0) 推荐(0) 编辑
摘要: 题目链接:计蒜客 T2129 采药 题目大意: 有许多药材,都有各自采摘需要的时间和其价值,要求在规定时间内采药使获得的价值最大。 题解: $01$背包模板题。 #include <iostream> using namespace std; int dp[1010], t, m, w, v; in 阅读全文
posted @ 2021-07-26 00:45 ZZHHOOUU 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 题目链接:计蒜客 T1408 矩形嵌套 题目大意: 题解: 按宽对矩形从小到大排序,宽相等的矩形长更大的在前面,再对矩形的长计算最长升。 #include <algorithm> #include <iostream> using namespace std; int dp[1010], len, 阅读全文
posted @ 2021-07-26 00:38 ZZHHOOUU 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 题目链接:OpenJudge 2711 合唱队形 题目大意: 题解: 正反各求一次最长上升序列,对每个点取正反两次以该点为最高点的最长上升子序列长度之和(注意该点被取两次,需要减一)即为以该点为最高点的最长合唱队列。 #include <algorithm> #include <iostream> 阅读全文
posted @ 2021-07-26 00:29 ZZHHOOUU 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 题目链接:51Nod 2080 最长上升子序列 题目大意: 求最长上升子序列长度。 题解: 最长升模板题。 #include <algorithm> #include <iostream> using namespace std; int dp[1010], len, a[1010], n; int 阅读全文
posted @ 2021-07-26 00:21 ZZHHOOUU 阅读(63) 评论(0) 推荐(0) 编辑