随笔分类 - POJ
摘要:题意: 给定含有n个元素的数列a,要求将其划分为若干个连续子序列,使得每个序列的元素之和小于等于m,问最小化所有序列中的最大元素之和为多少?(n=max[p,i]且kmax[p,i]且ka[i]),那么单调队列就形成了,队列中保存下标,表示所有a[k]>a[i]且low 2 #include 3...
阅读全文
摘要:题意: 用一个2*1的骨牌来覆盖一个n*m的矩形,问有多少种方案?(1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #de...
阅读全文
摘要:题意: 给一个无向图,n个点m条边,每个点有点权,要求找到一条哈密顿路径,使得该路径的f(path)值最大。输出f值,若有多条最大f值的路径,输出路径数量。 f值由如下3点累加而来: (1)所有点权之和。 (2)路径上相邻两点的点权之积。 (3)路径上如果有连续的3个点是一个三角形(即3点...
阅读全文
摘要:题意: 每个点都可以走多次的TSP问题:有n个点(n 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define pii pair11 #defi...
阅读全文
摘要:题意: 给一个n*m的矩阵,每个格子中有'P'或者'H',分别表示平地和高原,平地可以摆放大炮,而大炮的攻击范围在4个方向都是2格(除了自身位置),攻击范围内不能有其他炮,问最多能放多少个炮?(n 2 #include 3 #include 4 #include 5 #include...
阅读全文
摘要:题意: 有一个n*m的矩阵(0 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #define pii pair 11 #defin...
阅读全文
摘要:题意: 统计区间[L,R]有多少个数,其二进制表示法中的0的个数不少于1的个数?(不允许前缀0)思路: 状态表示为[当前第几位][总位数][1的个数],最后判断一下1的个数是否满足条件,要注意前导0的问题,可以通过枚举二进制的位数来解决。 1 //#include 2 #include 3 ...
阅读全文
摘要:题意: 给出一个序列,共n个正整数,要求将区间[2,n-1]全部删去,只剩下a[1]和a[n],也就是一共需要删除n-2个数字,但是每次只能删除一个数字,且会获得该数字与其旁边两个数字的积的分数,问最少可以获得多少分数?思路: 类似于矩阵连乘的问题,用区间DP来做。 假设已知区间[i,k-1]...
阅读全文
摘要:题意: 给出数字A和B,要求AB的所有因子(包括AB和1)之和 mod9901 的结果。思路: 即使知道公式也得推算一阵子。 很容易知道,先把分解得到,那么得到,那么的所有因子之和的表达式如下: 我们要做的就是计算出sum%9901的结果。 有两种方法: (1)直接用快速幂计算对上面...
阅读全文
摘要:题意: 给出一个字符串,其中仅仅含 “ ( ) [ ] ” 这4钟符号,问最长的合法符号序列有多长?(必须合法的配对,不能混搭)思路: 区间DP的常规问题吧,还是枚举区间[i->j]再枚举其中第k个与第i个来配对,如果配对了就+2这样子。 1 //#include 2 #include 3 ...
阅读全文
摘要:题意: 有n个城市,构成一棵树,每个城市有v个人,要求断开树上的一条边,使得两个连通分量中的人数之差最小。问差的绝对值。(注意本题的M是没有用的,因为所给的必定是一棵树,边数M必定是n-1)思路: 考虑当前节点t,当断开t与父亲的边时,“子树t中的人数”与“剩下的人数”之差的绝对值若最小,则为答...
阅读全文
摘要:题意: 给定一棵树,n个节点,若删除点v使得剩下的连通快最大都不超过n/2,则称这样的点满足要求。求所有这样的点,若没有这样的点,输出NONE。思路: 只需要拿“求树的重心”的代码改一行就OK了。因为依然是在判别最大连通块的点数。 1 //#include 2 #include 3 #inc...
阅读全文
摘要:题意:求树的重心,若有多个,全部打印出来。思路: 树的重心:在删除点v后,森林中的每棵树的节点数尽量均匀,若最大的那棵树的节点数最小,称v为树的重心。 这道题只是求树的所有重心,当且经当这棵树有对称性质时才有多重心,因此一棵树的重心最多不会超过2个。也是一遍DFS就可以搞定了,参考这个。 1 /...
阅读全文
摘要:题意:给定一个序列A,接下来又m个询问,每个询问输出A[L,R]中的第K大。(保证第k大存在)思路: 我想拿来练习“可持久化线段树”的,搜到这个比较巧的算法也可以解决这个问题,叫“归并树?。大概的思想就是和线段树一样,只是线段树上的每个非叶子节点是一个区间,等于该节点的两个孩子节点的区间的拼接起来...
阅读全文
摘要:题意:给定一棵树图,一个人从点s出发,只能走K步,每个点都有一定数量的苹果,要求收集尽量多的苹果,输出最多苹果数。思路: 既然是树,而且有限制k步,那么树形DP正好。 考虑1个点的情况:(1)可能在本子树结束第k步(2)可能经过了j步之后,又回到本节点(第k步不在本子树) 第二种比较简单,背包...
阅读全文
摘要:题意:给一棵树,在树中删除一些边,使得有一个连通块刚好为p个节点,问最少需要删除多少条边?思路: 因为任一条边都可能需要被删除,独立出来的具有p个节点的连通块可能在任意一处地方。先从根开始DFS,然后进行树DP,dp[t][i]表示在以t为根的子树中删除i个点需要删除多少条边。dp[t][n-p]...
阅读全文
摘要:题意:给定一棵树,n个节点,其中有m个叶子表示的是用户,其他点表示中转器, 每条边都有权值,每个用户i愿意给的钱w[i],问如果在不亏钱的情况下能为多少用户转播足球比赛?思路: 其实就是要选出部分叶子节点,其花费=所选叶子权值 - 经过的所有边权(每条边只算1次花费)。 那么对于每个节点,可以考...
阅读全文
摘要:题意:给定一棵带边权的n个节点的树,首先要求出每个点的最长路,然后写成序列d[1],d[2]...d[n],然后求满足 区间最大值-区间最小值 2 #include 3 #include 4 #include 5 #include 6 #define pii pair 7 #define I...
阅读全文
摘要:题意:给定一棵n个节点的树,要在某些点上建设消防站,使得所有点都能够通过某个消防站解决消防问题,但是每个点的建站费用不同,能够保证该点安全的消防站的距离上限也不同。给定每个点的建站费用以及最远的消防站距离上限,求保证该树安全的最小花费。思路: 要选择部分点来建站解决消防问题,而总花费是有最优解的。...
阅读全文
摘要:题意:给一棵树,n个节点,给定一个数k,求任意满足dist(a,b) 2 #include 3 #include 4 #include 5 #include 6 #include 7 #define pii pair 8 #define INF 0x3f3f3f3f 9 #...
阅读全文

浙公网安备 33010602011771号