随笔分类 - 数据结构 堆
摘要:【题目】D. Too Easy Problems 【题意】给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数。n<=2*10^5,T<=10^9。 【算法】贪心(排序+堆) 【题解】因为T太大,不能考虑背包。 容易
阅读全文
摘要:【题目】E. Segments Removal 【题意】给定n个数字,每次操作删除最长的连续相同数字(等长删最左),求全部删完的最少次数。n<=2*10^6,1<=ai<=10^9。 【算法】并查集+堆 【题解】将序列的相同数字段压缩,全部插入堆。那么每次操作删除堆顶,并尝试合并堆顶的前驱和后继,能
阅读全文
摘要:【题意】公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地。 【算法】贪心+堆 【题解】线段和点的贪心,一般有按左端点排序和按右端点排序两种方法。 按左端点排序,到达了终点就下车,人数满了就贪心地删掉当前终点最远的牛。 正确性在于,在对左一致的
阅读全文
摘要:【题意】已知n天股价,每天可以买入一股或卖出一股或不作为,最后必须持0股,求最大收益。 【算法】堆 贪心? 【题解】 不作为思想:【不作为=买入再卖出】 根据不作为思想,可以推出中转站思想。 中转站思想:【买卖可以借助中转站,差值累加】 做法:从左到右,每次将两个-v加入堆,然后取大堆顶出来组成买卖
阅读全文
摘要:【算法】贪心扫描线(+堆) 【题意】给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数。 【题解】 参考:[bzoj1707]: [Usaco2007 Nov]tanning分配防晒霜 by czllgzmzl 本题同样是区间和点的贪
阅读全文
摘要:【算法】贪心+线段树 【题意】给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间。 附加退化问题:全部ci=1,即求最多的不相交的区间。 【题解】本题是区间和点之间的经典贪心,有两种经典做法,本质思想都是通过排序实现扫描线,细节根据题目
阅读全文
摘要:【题意】给定n项工作的截止时间和价值,每项工作需要1单位时间完成,求最大价值。n<=10^5。 【算法】贪心+堆 【题解】 如果是访问到x时将d[x]前的点从价值最大的能加就加是错误的贪心,因为后面的点会占用到前面的,不能保证已选的就是最优的。 正确的贪心:按顺序选择前面所有点,并把价值取负后加入堆
阅读全文
摘要:【算法】数学+堆 【题意】给定n个数的排列,每次操作可以取两个数按序排在新序列的头部,求最小字典序。 【题解】 转化为每次找字典序最小的两个数按序排在尾部,则p1和p2的每次选择都必须满足:p1在当前序列的奇数位置,p2在当前序列的偶数位置且位于p1之后。满足条件的情况下每次找最小。 每次找到p1和
阅读全文
摘要:【题意】给定长度为n的整数序列,求长度为[L,R]的前k大区间和的和。n,k<=500000。 【算法】堆+贪心+RMQ 【题解】考虑暴力是取所有长度为[L,R]的子串的前k大求和,复杂度O(n^2)。 发现左端点相同的区间[l,r]中,最大的区间和就是最大的sum[r](sum是前缀和数组)。 然
阅读全文
摘要:【算法】贪心+堆 【题意】n个数字的序列,要求选择互不相邻的k个数字使和最大。 【题解】 贪心,就是按一定顺序选取即可最优,不会反悔。 考虑第一个数字选择权值最大的,那么它相邻的两个数字就不能选择,那么我们可以把这三个数字视为一个整体。操作为将pre[pre[x]]和x和suc[suc[x]]连接起
阅读全文
摘要:【算法】贪心,一般DP 【题解】 胡策k≤10的环状DP做法: 1.钦定法:先确定第一位(可能和第n位)的状态,然后后面正常做DP,显然正确答案是一定会被记录的,因为从整体上看不会有影响。 2.环的特性:取的段和不取的段数量相等,位置互补。所以1和n的连接处都选或都不选都会有不被包括的情况,一选一不
阅读全文
摘要:【平衡树】★平衡树 by onion_cyc 【莫队算法】 问题:给定长度为n的序列和m个区间询问,支持快速增减相邻元素维护区间信息。 将询问按左端点分块,块大小为$Q=\frac{n}{\sqrt m}$,块内按右端点排序。 然后依次回答询问,需要O(1)从(l,r)转移到(l,r+1),(l,r
阅读全文
摘要:【算法】贪心&&堆 【题解】反过来看就是合并任意两块木板,花费为木板长度之和。 显然从最小的两块开始合并即可,用堆(优先队列)维护。 经典DP问题石子归并是只能合并相邻两堆石子,所以不能贪心。 手写堆版本见http://www.cnblogs.com/onioncyc/p/6212840.html
阅读全文
摘要:【算法】 【算法】网络流 【算法】树 【算法】数学 ————【专题】生成树计数(矩阵树定理) ————【专题】计数问题(排列组合,容斥原理,卡特兰数) ————【算法专题】卡特兰数(计数数列) ————【专题】数论 ————【专题】概率和期望 【算法】动态规划 【算法】数据结构 ————【专题】平衡
阅读全文