随笔分类 -  DP

摘要:题面:有一个点数为 n 的无向完全图,边权分别为 [1, n(n−1)/2 ] 之间互不相同的整数。给定该图最小生成树 上每条边的权值 ai (递增序),试求合法的无向图数量。两个无向图是不同的,当且仅当存在一条边,在 两张图中对应的端点相同而长度不同。 Input: 第一行包含一个整数 n。 接下 阅读全文
posted @ 2020-07-12 20:22 神之右大臣 阅读(351) 评论(0) 推荐(0) 编辑
摘要:题面传送门 简述题意: 给定一个矩阵,n行m列,每一行最多选1个位置打上标记,且不存在某一列所有有标记的点的数量大于全部的一半,至少给一个点打上标记,求方案数。答案对998244353取模。 很水的暴力dp可以得84分,但100分的优化做法值得很多题借鉴。 先说简单说一下暴力: 我们直接求满足上面条 阅读全文
posted @ 2020-06-23 21:14 神之右大臣 阅读(233) 评论(0) 推荐(0) 编辑
摘要:或许大家不知道除了n2n2的LCS做法,如果不知道,那看这篇文章就对了; 看完本篇文章,你会学会的技能: 给定两个字符串aa,bb,它们的长度均小于等于**100000**的最长公共子序列(但要做到这一点需要毒瘤的代码实现技巧和恶魔般的内存优化,如果你是手残+脑残,只能解决$n<=5000 阅读全文
posted @ 2020-01-16 14:15 神之右大臣 阅读(292) 评论(0) 推荐(0) 编辑
摘要:T1.[LNOI2014]LCA 给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z 阅读全文
posted @ 2019-11-05 19:44 神之右大臣 阅读(177) 评论(0) 推荐(1) 编辑
摘要:题面 这道题是一道数位DP的模板题; 因为窝太蒟蒻了,所以不会递推,只会记忆化搜索; 首先,咋暴力咋来; 将一个数分解成一个数组,这样以后方便调用; 数位DP的技巧:(用1~b的答案)-(1~a的答案)就是(a~b的答案); 那么对于每个数码i,我们做两次dfs(分别以a为上界和以b为上界); 设正 阅读全文
posted @ 2019-11-04 20:41 神之右大臣 阅读(151) 评论(0) 推荐(0) 编辑
摘要:题面 这种数据范围不是乱搞dfs就是乱搞状压DP 首先应该通过任一方式求出a和b的值; 任意一条抛物线只用两头猪就可以确定,所以我们N^2枚举,并把在这两头猪的抛物线上的猪都存进状态state[i][j]; 然后枚举任意两个还没消灭的小猪i,j;f[i|state[j][k]]=min(f[i|st 阅读全文
posted @ 2019-10-23 20:16 神之右大臣 阅读(261) 评论(0) 推荐(0) 编辑
摘要:一棵树,如果有序点对(x,y)之间路径的长度取模于3==0,那么ans0便加上这个长度; 如果取模于3==1,那么ans1便加上这个长度; 如果取模于3==2,那么ans2便加上这个长度; 让你求ans0,ans1,ans2; 输入格式: 第一行包括一个整数n,表示一共有n个点 下面n-1行,每一行 阅读全文
posted @ 2019-10-22 20:55 神之右大臣 阅读(169) 评论(0) 推荐(0) 编辑
摘要:题面 这道题是一道不错的计数类DP; 首先我们一定要跑一遍dijkstra来求得每个点到1号点的最短路; 注意题干,题中并没有说所有点都可以到达n好点,只说了存在一条1号点到n号点的路径;所以我们在反向图上BFS求出那些点可以到达n号点; 然后就是dp。我们设计状态:f[u][rest]表示到达u号 阅读全文
posted @ 2019-10-05 10:32 神之右大臣 阅读(228) 评论(0) 推荐(0) 编辑
摘要:题面 这是我做的第一道概率DP题; 做完后发现没有后效性的DP是真的水; 在这里说主要是再捋顺一下思路; 设f[i][j]表示有i只白鼠,j只黑鼠是获胜的概率; 显然:f[i][0]=1; 然后分四种情况: 1.先手刚好拿到白鼠:概率是i/(i+j); 2.先手拿到黑鼠,后手拿到了白鼠:概率为0; 阅读全文
posted @ 2019-09-30 15:06 神之右大臣 阅读(196) 评论(0) 推荐(0) 编辑
摘要:题面 这道题稍微想一想就会联想到树形DP的入门题:没有上司的舞会; 但是再想一想会发现这根本就不是一颗树,因为它比树多了一条边; 这时候我们引入一个新的概念:基环树; 顾名思义(??),基环树就是在一颗树上填一条边构成的一个图;基环树也叫环套树(明明更像树套环)。 我们在树上可以做的事情基本都可以在 阅读全文
posted @ 2019-09-24 14:21 神之右大臣 阅读(141) 评论(0) 推荐(0) 编辑
摘要:题面 这道题是一道比较水的XXOI题; 我们可以发现,反着思考题目就变为了让所有叶子节点同时发出信号,然后这些信号同时到达根节点; 可以证明,这样答案不会改变; 那么我们可以自下而上dfs(),设f[u]表示以u为根,可以到达的最远距离; 那么很显然,对于点u,它对答案的贡献度就是num(它子节点的 阅读全文
posted @ 2019-09-23 15:45 神之右大臣 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题面 “我有个愿望,我希望穿越一切找到你。” 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y)): 1、我可以走到(x+1,y) 2、我可以走到(x,y+1) 3、我可以走到(x+1,y+1) 阅读全文
posted @ 2019-09-21 16:17 神之右大臣 阅读(244) 评论(0) 推荐(0) 编辑
摘要:题面 这道题是一道贪心+DP的好题: 首先排序是一定要干的事情。 然后我们分情况处理: 1.如果剩一个人,让最小的回来接他 2.如果剩两个人,让最小的回来接,剩下的那两个人(即最大的两个人)过去,让次小的回来,最小的两个过去 以上的两个方法一定是最优的,因为最大的人要不让最小的送,要不带一个次大的; 阅读全文
posted @ 2019-09-21 16:06 神之右大臣 阅读(302) 评论(0) 推荐(0) 编辑
摘要:题面 一句话题意:找一个点使得,使得从这个点出发作为源点,发出的流量最大,输出这个最大的流量 这道题是换根法+二次扫描的模板; 首先若确定1为原点,那么可以写出dp方程:当v的度是1时, g[u]+=g[v];否则g[u]+=min(g[v],star[i].w); 但以上仅仅是有原点的做法,那么如 阅读全文
posted @ 2019-09-18 13:46 神之右大臣 阅读(253) 评论(0) 推荐(0) 编辑
摘要:题面 这道题是一道典型的排序dp a[i]−b[i]∗(t+c[i])+a[j]−b[j]∗(t+c[i]+c[j]) a[j]−b[j]∗(t+c[j])+a[i]−b[i]∗(t+c[i]+c[j])a[j]-b[j]*(t+c[j])+a[i]-b[i]*(t+c[i]+c[j])a[j]−b 阅读全文
posted @ 2019-09-15 15:37 神之右大臣 阅读(513) 评论(0) 推荐(0) 编辑
摘要:题面 显然,n有n个位置可以选择,我们先来考虑两边的位置。 如果插入到最左边,会造成新的序列比原来多一个大于号 如果插入到最右边,会造成新的序列比原来多一个小于号 如果插入到大于号的位置,删去一个大于号,多一个大于号一个小于号,也就是多一个小于号 如果插入到小于号的位置,删去一个小于号,多一个大于号 阅读全文
posted @ 2019-09-04 16:09 神之右大臣 阅读(138) 评论(0) 推荐(0) 编辑
摘要:题面 好题啊!~ 设f[i][j][k][l]表示已经处理完前i个请求后,a在j,b在k,c在l的最小值是多少; 那么f[i][p[i]][k][l]=min(f[i][p[i]][k][l],f[i-1][j][k][l]+c(j,p[i])); f[i][j][p[i]][l]=min(f[i] 阅读全文
posted @ 2019-09-03 15:51 神之右大臣 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题面 好难啊好难啊好难啊~(以后再玩魔兽的时候绝对绝对虐死他) 做完后总结了一下思路; 首先推一下以下三条性质: 1.若两个 i 与 i+1 不相邻,那么我们直接交换这两个数字就可以组成一个新的数列 (这一条便是我们状态转移的依据) 2.每个数字ai 变成 (n+1)-ai 会得到另一个数列,且新数 阅读全文
posted @ 2019-09-01 17:24 神之右大臣 阅读(233) 评论(0) 推荐(0) 编辑
摘要:题面 裸的树上背包: 设f[u][i]表示在以u为子树的树种选择i条边的最大值,则:f[u][i]=max(f[u][i],f[u][i-j-1]+f[v][k]+u到v的边权); 阅读全文
posted @ 2019-08-31 15:46 神之右大臣 阅读(149) 评论(0) 推荐(0) 编辑
摘要:题面 我来一发很实用的题解;本人想出了O(n)的做法,是一种DP;先说大体思路:答案分两种情况,一种是选择的两段均不跨越n到1(也就是环),另一种是选择的两段跨过了环;如果均不跨越环,那么也就是意味着这是一道模板题;设maxl[i]表示从1~i的最大字串和,maxr[i]表示i~n的最大字段和;很明 阅读全文
posted @ 2019-08-31 13:29 神之右大臣 阅读(333) 评论(2) 推荐(0) 编辑

欢迎阅读 『DP』
有什么问题可以联系神之右大臣哦
点击右上角即可分享
微信分享提示