摘要:
背景: 有时分解一个很大的合数,因为可能质因子很大,导致分解时复杂度不是严格O(log2n),需要用一点技巧使其复杂度得到保证。 做法: 在筛法求质数时,不用把质数存储成一张表,而用一个数组big[i]保存每个数(不管是质数还是合数)的最大质因数,接着在分解一个数x时,令y=x,之后不断地y/=bi 阅读全文
摘要:
bzoj3732Network 题意: 给一个无向图,k个询问求节点a到节点b最长边的最小值。n,k≤15000。 题解: ”最长边的最小值“经常可以用最小生成树解决,因为生成树里的每一条边都是可取的最小边,求完生成树之后就是经典的倍增应用:求lca的时候顺便维护一下边权最大值即可。 代码: 1 # 阅读全文
摘要:
bzoj1510[POI2006]Kra-The Disks 题意: 一个瓶子有n个节,每个节有一个宽度。现在要从上往下扔m个盘子,如果盘子的下一个位置宽度比该盘子的宽度小则盘子会停在这个位置。问最后一个盘子会停在那个位置。n,m≤300000。 题解: 首先利用单调栈去掉那些没用的节,之后对于每个 阅读全文
摘要:
bzoj2208[Jsoi2010]连通数 题意: 给一个有向图,每个点对答案的贡献为该点可达的点个数,求答案。n≤2000,m≤4000000。 题解: 听说暴力可过QAQ不过为了练tanjan还是写了常规写法。 先缩点,接着对每个入度为0的点做dp,每个点维护一个bitset。对于当前点,先将该 阅读全文
摘要:
bzoj2678[Usaco2012 Open]Bookshelf 题意: 给出一个序列,有两个元素ai、bi,要求将一个序列分成几段,每段的bi和不能超过l,每段的代价为该段最大的ai,求一个方案使代价和最小。n≤100000。 题解: 首先方程为f[i]=f[j]+mx[j+1..i],sum[ 阅读全文
摘要:
bzoj1179[Apio2009]Atm 题意: 给个有向图,每个点有个点权,有些点有酒吧。现在求一个人从任意一点出发获得点权的最大和。要求每个点的点权只能获得一次,且路径最后必须在酒吧结束,可以重复经过点和边。n,m≤500000。 题解: tarjan缩点之后跑spfa,注意不能用dijkst 阅读全文
摘要:
bzoj3391[Usaco2004 Dec]Tree Cutting网络破坏 题意: 给一棵树,问去掉哪个点后可以使剩下的每个子树大小都小于等于节点总数的一半。n≤10000。 题解: dfs的时候求一下子树大小,以当前节点的父节点为根节点的子树大小为n-以当前节点为根节点的子树大小。 代码: 2 阅读全文