随笔分类 -  基本算法 倍增

摘要:【题目】 "E. NN country" 【题意】给定n个点的树和m条链,q次询问一条链(a,b)最少被多少条给定的链覆盖。$n,m,q \leq 2 10^5$。 【算法】树上倍增+二维数点(树状数组) 先从半链角度考虑 。将每条给定链和每个询问拆成向上的一段和向下的一段。那么假设询问的半链最低端 阅读全文
posted @ 2018-05-23 15:11 ONION_CYC 阅读(1102) 评论(0) 推荐(1)
摘要:【题目】D. Best Edge Weight 【题意】给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它。n,m<=2*10^5,1<=wi<=10^9。 【算法】最小生成树+倍增LCA+并查集 【题解】首先求出图的一个最小生成树M,则所有边 阅读全文
posted @ 2018-03-07 22:08 ONION_CYC 阅读(405) 评论(0) 推荐(0)
摘要:【题意】给定n个点的树,m次询问,每次给定ki个特殊点,一个点会被最近的特殊点控制,询问每个特殊点控制多少点。n,m,Σki<=300000。 【算法】虚树+倍增 【题解】★参考:thy_asdf 对询问建立虚树,然后DFS统计虚树上每个点被哪个点控制,记为belong[x]。 统计的方法是从下往上 阅读全文
posted @ 2018-02-27 20:30 ONION_CYC 阅读(279) 评论(0) 推荐(0)
摘要:【题意】给定ai,将1~n从小到大插入到第ai个数字之后,求每次插入后的LIS长度。 【算法】树状数组||平衡树 【题解】 这是树状数组的一个用法:O(n log n)寻找前缀和为k的最小位置。(当数列中只有0和1时,转化为求对应排名的数字,就是简单代替平衡树) 根据树状数组的二进制分组规律,从大到 阅读全文
posted @ 2017-11-28 14:10 ONION_CYC 阅读(882) 评论(0) 推荐(0)
摘要:【题意】n个点的树,1为根,要求删除一些点使得截断根节点和所有叶子结点的路径(不能删根,可以删叶子)。有m支军队在m个点上,每时刻所有军队可以走一步,最终走到的地方就是删除的点,求最短时间。 【算法】二分,贪心,倍增 【题解】 所有点同时走路,求最短时间,这样的询问通常考虑二分转化为判定性问题。(实 阅读全文
posted @ 2017-11-06 19:22 ONION_CYC 阅读(315) 评论(0) 推荐(1)
摘要:【题意】给定正边权有向图,车油量上限C,每个点可以花费pi加油至min(C,ci),走一条边油-1,T次询问s点出发带钱q,旅行路程至少为d的最多剩余钱数。 n<=100,m<=1000,C<=10^5,q<=n^2。 【算法】动态规划 【题解】官方题解 虽然不是DAG,但是由于q很小的特点,将q加 阅读全文
posted @ 2017-11-06 09:57 ONION_CYC 阅读(362) 评论(0) 推荐(0)
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡 阅读全文
posted @ 2016-08-10 21:08 ONION_CYC 阅读(2144) 评论(0) 推荐(6)