随笔分类 - OJ_POJ
摘要:题目链接:http://poj.org/problem?id=3281 引用一下题解:http://www.cnblogs.com/kuangbin/archive/2012/08/21/2649850.html
阅读全文
摘要:题目链接:http://poj.org/problem?id=3249 题意: 给你一个DAG图,问你入度为0的点到出度为0的点的最长路是多少 思路: 记忆化搜索,注意v[i]可以是负的,所以初始值要-inf。
阅读全文
摘要:题目链接:http://poj.org/problem?id=3140 题意: 给你一棵树,问你删去一条边,形成的两棵子树的节点权值之差最小是多少。 思路: dfs
阅读全文
摘要:题目链接:http://poj.org/problem?id=3107 题意: 数重心,并按从小到大输出。 思路: dfs
阅读全文
摘要:题目链接:http://poj.org/problem?id=1655 题意: 求树的重心(最小序号),以及去掉重心后子树节点最大是多少。(树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心) 思路: dfs
阅读全文
摘要:题目链接:http://poj.org/problem?id=3254 给你n*m的菜地,其中1是可以种菜的,而菜与菜之间不能相邻。问有多少种情况。 状压dp入门题,将可以种菜的状态用一个数的二进制表示。第i行的状态只与上一行有关。 此blog讲的很清楚:传送门
阅读全文
摘要:题目链接:http://poj.org/problem?id=1947 一共有n个节点,要求减去最少的边,行号剩下p个节点。问你去掉的最少边数。 dp[u][j]表示u为子树根,且得到j个节点最少减去的边数。 考虑两种情况,去掉孩子节点v与去不掉。 (1)去掉孩子节点:dp[u][j] = dp[u
阅读全文
摘要:题目链接:http://poj.org/problem?id=3659 给你一个树形图,一个点可以覆盖他周围连接的点,让你用最少的点覆盖所有的点。 dp[i][0]表示用i点来覆盖,dp[i][1]表示用孩子节点来覆盖,dp[i][2]表示用父节点来覆盖 (1) dp[i][0] = min(dp[
阅读全文
摘要:题目链接:http://poj.org/problem?id=2378 一棵树,去掉一个点剩下的每棵子树节点数不超过n/2。问有哪些这样的点,并按照顺序输出。 dfs回溯即可。
阅读全文
摘要:题目链接:http://poj.org/problem?id=1463 给你一棵树形图,问最少多少个点覆盖所有的边。 可以用树形dp做,任选一点,自底向上回溯更新。 dp[i][0] 表示不选i点 覆盖子树所有边的最少点个数,那选i点的话,那么i的邻接节点都是必选的,所以dp[i][0] += dp
阅读全文
摘要:题目链接:http://poj.org/problem?id=3298 找一个最长不要求连续的子序列,如a1 > a3 < a6 > a7 ... 举个例子模拟一下差不多明白了,a[i - 1]与a[i]有依赖关系。
阅读全文
摘要:题目链接:http://poj.org/problem?id=2342 有n个人,每个人有活跃值。下面n-1行u和v表示u的上司是v,有直接上司和下属的关系不能同时参加party,问你party最大的活跃值是多少。 也就是说一棵树中,选择的点不能是相邻的点,且要使活跃值最大。 简单的树形dp,任意选
阅读全文
摘要:题目链接:http://poj.org/problem?id=3616 有头牛产奶n小时(n<=1000000),但必须在m个时间段内取奶,给定每个时间段的起始时间和结束时间以及取奶质量 且两次取奶之间须间隔r-1个小时,求最大取奶质量 也就是说r = 2时 3分结束取奶,至少在5分才能取。 按照时
阅读全文
摘要:题目链接:http://poj.org/problem?id=3041 在一个n*n的地图中,有m和障碍物,你每一次可以消除一行或者一列的障碍物,问你最少消除几次可以将障碍物全部清除。 用二分图将行(左边)和列(右边)用障碍物联系起来,比如(2,3)有个障碍物,那么左边的2和右边的3连边。边的个数就
阅读全文
摘要:题目链接:http://poj.org/problem?id=2446 给你一个n*m的棋盘,其中有k个洞,现在有1*2大小的纸片,纸片不能覆盖洞,并且每个格子最多只能被覆盖一次。问你除了洞口之外这个棋盘是否能被纸片填满。 这个题目一眼很难看出是二分图匹配... 可以根据i和j性质可以看出,i+j为
阅读全文
摘要:题目链接:http://poj.org/problem?id=1988 有n个元素,开始每个元素自己 一栈,有两种操作,将含有元素x的栈放在含有y的栈的顶端,合并为一个栈。第二种操作是询问含有x元素下面有多少个元素。 经典的带权并查集,cnt表示包含这个元素的集合中所有元素个数,dis表示这个元素离
阅读全文
摘要:题目链接:http://poj.org/problem?id=1664 dp[i][j]表示i个盘放j个苹果的方案数,dp[i][j] 可以由 dp[i - 1][j] 和 dp[i][j - i] 递推而来。 当盘子的个数大于等于苹果的个数: dp[i - 1][j] :i - 1个盘子放j个苹果
阅读全文
摘要:题目链接:http://poj.org/problem?id=3667 最初给你n间空房,m个操作: 操作1 a 表示检查是否有连续的a间空房,输出最左边的空房编号,并入住a间房间。 操作2 a b 表示将编号为a之后的b间房间清空。 典型的区间合并问题,这位大牛讲的更清楚:http://www.c
阅读全文
摘要:题目链接:http://poj.org/problem?id=1064 有n条绳子,长度分别是Li。问你要是从中切出m条长度相同的绳子,问你这m条绳子每条最长是多少。 二分答案,尤其注意精度问题。我觉得关于浮点数的二分for循环比while循环更好一点。注意最后要用到floor 保证最后答案不会四舍
阅读全文
摘要:题目链接:http://poj.org/problem?id=3237 一棵有边权的树,有3种操作。 树链剖分+线段树lazy标记。lazy为0表示没更新区间或者区间更新了2的倍数次,1表示为更新,每次更新异或1就可以。 熟悉线段树成段更新就很简单了,最初姿势不对一直wa,还是没有彻底理解lazy标
阅读全文