动态规划
夏末林夕
这个作者很懒,什么都没留下…
展开
-
数位DP bzoj1026
1026: [SCOI2009]windy数Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 9854 Solved: 4561[Submit][Status][Discuss]Description windy定义了一种windy数。不含前导零且相邻两个数字之差至少为2的正整数被称为windy数。 windy想知道,在A和B之间,...原创 2018-07-18 09:58:02 · 166 阅读 · 0 评论 -
树的重心【poj1655】
定义树的重心也叫树的质心。对于一棵树n个节点的无根树,找到一个点,使得把树变成以该点为根的有根树时,最大子树的结点数最小。换句话说,删除这个点后最大连通块(一定是树)的结点数最小。数的重心求法其实非常简单,用到了简单的树形dp的思想。你只要进行一次dfs,一边求以当前节点为根的子树的节点数,一边统计出子树中最大的有max{f[j]}个节点(j为i的儿子)和i节点上方的子树大小为n-f[...原创 2018-10-15 15:36:31 · 145 阅读 · 0 评论 -
LOJ10172涂抹果酱
https://loj.ac/problem/10172题目大意就是给了你n行m列的矩阵,让你给这个矩阵的每个格子染色,有1,2,3三种颜色可以选择。同时,必须满足任意两个相邻的格子的颜色不能相同。并且第k行已经完成了染色,无法被更改。求合法的染色方案数。这道题n的范围很大,但m的范围很小,所以很容易想到可以使用状压dp来求解。由于每一个点的状态有三种,所以要用三进制数来表示每一行的状态。...原创 2018-10-18 20:11:12 · 378 阅读 · 0 评论 -
树的最长路径(直径)【codevs1814】
树的最长路径即树上的最远点对,也被称为树的直径。这可以用两遍dfs来求。第一遍dfs先任选一个点,找出离这个点最远的点maxd。该点必为最长路径上的一个端点(可以用反证法证明)再从maxd这个点出发再进行一次dfs就能找到另一个端点。#include<cstdio>#include<cstring>#include<cmath>#include&...原创 2018-10-16 08:59:12 · 836 阅读 · 0 评论 -
LOJ10153 二叉苹果树
https://loj.ac/problem/10153题目大意就是给你一棵n个节点的带边权的树,让你留下q条边使留下的边的权值和最大。这种题目显然有最优子结构的特征,所以可以使用树形dp来解决该问题。f[i][j]表示以i为根的子树中保留j条边可以得到的最大价值易推出f[i][j]=max(f[i][j],f[i][j-k-1]+f[v][k]+a[i]) (v为i的儿子 0...原创 2018-10-16 14:11:51 · 179 阅读 · 0 评论 -
最短Hamilton路径【Contest Hunter 0103】
题目给了你一个n个点的带权无向图,编号为0~n-1,求0到n-1的最短Hamilton路(即0~n-1经过每个点有且仅有一次)由于n较小,但使用暴力还是明显要超时。所以可以想到用状压dp来做。f[i][j]表示当前经过点的状态为i(0表示未经过,1表示已经过),当前处于j点时的最短路径。#include<cstdio>#include<cstring>#inc...原创 2018-10-22 15:52:15 · 149 阅读 · 0 评论 -
多重背包二进制优化(wzk吃小鸡腿)
问题 B: WZK吃小鸡腿(chicken)时间限制: 1 Sec 内存限制: 128 MB提交: 53 解决: 23[提交][状态][讨论版]题目描述As is known to all,WZK很能吃小鸡腿,但他的胃毕竟有一个最大容纳值c,否则胃中小鸡腿的巨大引力场和lōng场叠加后会有很可怕的效果。在CZYZ的食堂一共有n种小鸡腿有卖,每种小鸡腿都有有限的个数、重量和让WZK...原创 2018-01-18 10:57:38 · 840 阅读 · 0 评论