动态规划
文章平均质量分 73
samjia2000
I swear...
We are INFINITE.
展开
-
51NOD 1274 最长递增路径
题目大意有一个有n个点m条边的带权无向图,求所有边权值严格递增的路径中最长的长度。 (1<=n,m<=50000)直观思路动态规划,设f(i,j)为以点i为终点,最后一条走过的边长度为j的路径最长长度,那么这样的转移是O(nm)的,显然超时优化如果我们保证加入的边一定比之前加入的边大,那么我们完全可以去掉第二维,于是可以按边的权值排序,然后dp贴个代码,实现挺简单的:#include<cstrin原创 2016-06-30 14:39:35 · 865 阅读 · 0 评论 -
【HNOI2014】世界树
题目大意有一棵有n个点的树,给出q组询问,每组询问有mim_i点,称之为关键点,每组点的个数和(即∑q1mi\sum_1^qm_i)与n同阶,每个树上的点被与其距离最近的关键点控制,求每个关键点控制了多少个点。虚树希望我能写出通俗易懂的东西来让读者理解 虚树就是只与关键点有关的树,一个点被置于虚树中当且仅当该点为关键点或该点为某两个关键点的公共祖先(纯属个人理解,如有疑问可评论或私信),那么按照这原创 2016-07-04 11:12:23 · 490 阅读 · 1 评论 -
SCOI2016围棋
题目大意有个n*m的格子图,每个格子上有三种数。 给出q个2*c模版,对于每个模版,求有多少种格子图能够匹配这个模版。数据范围 q≤\le5直观想法设fi,sf_{i,s}表示现在匹配到第i行,第i行的状态为s(s为三进制数)的方案数。 转移显然。 然后这样的时间复杂度是O(n×32m)O(n\times 3^{2m})超时,估计只有20分。缩减状态每次计算匹配一个的。 可以发现,由于我们原创 2016-07-16 16:36:57 · 1317 阅读 · 0 评论 -
【GDOI2017模拟二试4.12】石子游戏
题目大意给出n个数a[i],将x改为y的代价为|x-y|,求将a变成xor和为零的最小代价。 1≤n≤15,0≤a[i]≤1091\le n\le 15,0\le a[i]\le 10^9题解考虑动态规划,按二进制从高到低,用3n3^n的状态表示每个数是在k位之前是增加/不变/减少,设f[k][i][S][0/1]表示当前做到第k位,当前考虑第i位,S为每个数的状态,然后转移有: 1、若k位之前原创 2017-04-12 20:38:47 · 558 阅读 · 0 评论 -
Obelisk
Problem给出一个有n个点m条边的有向图,问其有多少子图是有向无环图。 1≤n≤171\le n\le 17Step1比赛时我想到了一个很直观的想法,首先,有向无环图是可以分层的,用二进制状态记录当前已经用过的点和最后一层的点,然后枚举下一层的点的状态,于是可以进行DP,时间复杂度O(4n)O(4^n)Step2上面一种方法的局限性在于,它要保留最后一层的点的状态,那么是否可以不用管最后一层的原创 2016-11-08 17:25:52 · 415 阅读 · 0 评论 -
Topcoder SRM583
题目大意有一个n*m的01矩阵,每次等概率的选择一个1,然后将其标记(可能将已经标记的再标记),求每一行与每一列都至少有一个被标记的期望次数。 n×m≤200n\times m \le 200O(2n+m2^{n+m}nm)做法设f[r][c]表示当前局面为行的二进制状态是r列的二进制状态是c的期望,g[r][c]类似的,表示其概率。 考虑转移,枚举一个当前行或列没有其他点被标记的点,然后转移式原创 2016-11-02 22:24:04 · 520 阅读 · 0 评论 -
【NOI2017模拟6.29】呵呵
题目 1≤n≤20001\le n\le2000解法考虑一个特定形态的树的贡献,设点i的度数为d[i],那么答案就是: ∑(∏wdii⋅di)\sum(\prod w_i^{d_i}\cdot d_i) 考虑prufer序,一个度数为d[i]的点出现的次数是d[i]-1,那么就可以得到一个很显然的DP,f[i][j]表示前i个点的度数为i+j: fi,j=∑d=0jfi−1,j−d⋅(d原创 2017-06-29 16:42:51 · 927 阅读 · 0 评论