随笔分类 -  基本算法 贪心

摘要:【题目】 "1510 最小化序列" 【题意】给定长度为n的数组A和数字k,要求重排列数组从而最小化: $$ans=\sum_{i=1}^{n k}|A_i A_{i+k}|$$ 输出最小的ans,$n \leq 3 10^5,k \leq 5000, 10^9 \leq A_i \leq 10^9$ 阅读全文
posted @ 2018-05-24 07:33 ONION_CYC 阅读(409) 评论(0) 推荐(0)
摘要:【题目】 "51Nod 1273 旅行计划" 【题意】给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案。$n,k \leq 5 10^4$。 【算法】贪心 首先显然是访问所有叶子节点,先按叶子节点深度从 阅读全文
posted @ 2018-05-23 11:43 ONION_CYC 阅读(222) 评论(0) 推荐(0)
摘要:【题目】D. Huffman Coding on Segment 【题意】给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长。1<=n,m,ai<=10^5。 【算法】哈夫曼树+莫队+分块 【哈夫曼树】哈夫曼树又称最优构造树,n个数字的哈夫曼树是含有n个给定权值叶子的点权路径和最小的二叉树。 阅读全文
posted @ 2018-04-16 14:50 ONION_CYC 阅读(442) 评论(0) 推荐(0)
摘要:【题目】D. Too Easy Problems 【题意】给定n个问题和总时限T,每个问题给定时间ti和限制ai,当解决的问题数k<=ai时问题有效,求在时限T内选择一些问题解决的最大有效问题数。n<=2*10^5,T<=10^9。 【算法】贪心(排序+堆) 【题解】因为T太大,不能考虑背包。 容易 阅读全文
posted @ 2018-01-09 11:36 ONION_CYC 阅读(367) 评论(0) 推荐(0)
摘要:【题目】B. Ithea Plays With Chtholly 【题意】交互题,有n格,每次给一个[1,c]的数字,回答填入的位置后再次给数字,要求在m轮内使n格填满且数列不递减。n,m>=2,1<=c<=1000,1<=n*[c/2]<=m<=1000。 【算法】贪心 【题解】对于每次的数字x, 阅读全文
posted @ 2017-12-05 19:15 ONION_CYC 阅读(366) 评论(0) 推荐(0)
摘要:【题意】n个点的树,1为根,要求删除一些点使得截断根节点和所有叶子结点的路径(不能删根,可以删叶子)。有m支军队在m个点上,每时刻所有军队可以走一步,最终走到的地方就是删除的点,求最短时间。 【算法】二分,贪心,倍增 【题解】 所有点同时走路,求最短时间,这样的询问通常考虑二分转化为判定性问题。(实 阅读全文
posted @ 2017-11-06 19:22 ONION_CYC 阅读(315) 评论(0) 推荐(1)
摘要:【题意】公车从1开到n,有k群牛想从一个点到达另一个点,公车最多乘坐c个人,牛群可以拆散,问最多载多少牛到达目的地。 【算法】贪心+堆 【题解】线段和点的贪心,一般有按左端点排序和按右端点排序两种方法。 按左端点排序,到达了终点就下车,人数满了就贪心地删掉当前终点最远的牛。 正确性在于,在对左一致的 阅读全文
posted @ 2017-10-18 21:57 ONION_CYC 阅读(224) 评论(0) 推荐(1)
摘要:【题意】给定n*m的数字矩阵,要求横着切A-1刀,对每块再分别竖着切B-1刀,是最小子矩阵最大。 【算法】二分+贪心 【题解】还记得提高组2015跳石头吗?这道题做法一致,只不过拓展到二维而已。 二分最小子矩阵值,考虑行,对于每一刀贪心一行一行拓展到能切马上切。 对于行贪心中得到的若干行,通过列贪心 阅读全文
posted @ 2017-10-17 17:04 ONION_CYC 阅读(288) 评论(0) 推荐(0)
摘要:【题意】已知n天股价,每天可以买入一股或卖出一股或不作为,最后必须持0股,求最大收益。 【算法】堆 贪心? 【题解】 不作为思想:【不作为=买入再卖出】 根据不作为思想,可以推出中转站思想。 中转站思想:【买卖可以借助中转站,差值累加】 做法:从左到右,每次将两个-v加入堆,然后取大堆顶出来组成买卖 阅读全文
posted @ 2017-10-01 11:55 ONION_CYC 阅读(764) 评论(0) 推荐(2)
摘要:【题意】n头牛,一些向前一些向后,每次可以使连续k头牛转身,求使旋转次数最小的k。 【算法】贪心 【题解】这题题解很迷,大概思想是k没有单调性,故枚举k,从左到右扫描遇到一只向后的牛就旋转一次。 贪心正确性易证:旋转前面已经好的显然不可能更优,故往后旋转。 然后还有结尾不足k头牛算错……为什么?不知 阅读全文
posted @ 2017-09-27 19:47 ONION_CYC 阅读(367) 评论(0) 推荐(0)
摘要:【算法】贪心扫描线(+堆) 【题意】给定n头牛有区间[a,b],m个防晒霜值为ai,每个可以使用bi次,每次可以使包含它的区间涂到防晒霜,问最多被涂牛数。 【题解】 参考:[bzoj1707]: [Usaco2007 Nov]tanning分配防晒霜 by czllgzmzl 本题同样是区间和点的贪 阅读全文
posted @ 2017-09-22 22:10 ONION_CYC 阅读(306) 评论(0) 推荐(0)
摘要:【算法】贪心+线段树 【题意】给定n个数字ci,m个区间[a,b](1<=a,b<=10^5),每个位置最多被ci个区间覆盖,求最多选择多少区间。 附加退化问题:全部ci=1,即求最多的不相交的区间。 【题解】本题是区间和点之间的经典贪心,有两种经典做法,本质思想都是通过排序实现扫描线,细节根据题目 阅读全文
posted @ 2017-09-22 12:58 ONION_CYC 阅读(361) 评论(0) 推荐(0)
摘要:【算法】树上贪心 【题解】 因为一个点必须被覆盖,那么它如果没有被子树节点覆盖的话,就覆盖它的父节点。 从叶子开始贪心。 注意,如果它自己已经被选了就不需要选父节点了。 #include<cstdio> #include<algorithm> #include<cstring> #include<c 阅读全文
posted @ 2017-08-31 12:36 ONION_CYC 阅读(164) 评论(0) 推荐(0)
摘要:【算法】树型DP||树的重心(贪心) 【题解】 两遍DFS,第一次得到所有节点子树的路径和,第二次给出除了该子树外其它部分的路径和,时时计算答案。 long long!!! #include<cstdio> #include<cstring> #include<algorithm> #include 阅读全文
posted @ 2017-08-30 18:29 ONION_CYC 阅读(209) 评论(0) 推荐(0)
摘要:【题意】给定n项工作的截止时间和价值,每项工作需要1单位时间完成,求最大价值。n<=10^5。 【算法】贪心+堆 【题解】 如果是访问到x时将d[x]前的点从价值最大的能加就加是错误的贪心,因为后面的点会占用到前面的,不能保证已选的就是最优的。 正确的贪心:按顺序选择前面所有点,并把价值取负后加入堆 阅读全文
posted @ 2017-08-29 19:46 ONION_CYC 阅读(303) 评论(0) 推荐(0)
摘要:【算法】二分+贪心 【题意】转换模型后大概是:给定n,T,n个数字和n个坐标,自行选择一个起点,从起点往最近的数字跑一次往返拿回1,T为最长距离限制,求至多拿多少数字。 【题解】 比赛题解:http://vfleaking.blog.uoj.ac/blog/43 对于每个点从左到右,其能取的左右区间 阅读全文
posted @ 2017-08-11 16:08 ONION_CYC 阅读(381) 评论(0) 推荐(0)
摘要:【题意】给定长度为n的整数序列,求长度为[L,R]的前k大区间和的和。n,k<=500000。 【算法】堆+贪心+RMQ 【题解】考虑暴力是取所有长度为[L,R]的子串的前k大求和,复杂度O(n^2)。 发现左端点相同的区间[l,r]中,最大的区间和就是最大的sum[r](sum是前缀和数组)。 然 阅读全文
posted @ 2017-08-04 12:01 ONION_CYC 阅读(208) 评论(0) 推荐(0)
摘要:【算法】贪心 【题解】 DP可以f[i][0],f[i][1]表示选了i分别满足条件AB的答案,其优化也是利用了下面的性质,不多赘述。 想象数列的波动,最大值一定是取每个波峰和每个波谷,那么只要O(n)统计就可以了。 #include<cstdio> #include<cstring> #inclu 阅读全文
posted @ 2017-07-19 08:33 ONION_CYC 阅读(171) 评论(0) 推荐(0)
摘要:【算法】贪心+堆 【题意】n个数字的序列,要求选择互不相邻的k个数字使和最大。 【题解】 贪心,就是按一定顺序选取即可最优,不会反悔。 考虑第一个数字选择权值最大的,那么它相邻的两个数字就不能选择,那么我们可以把这三个数字视为一个整体。操作为将pre[pre[x]]和x和suc[suc[x]]连接起 阅读全文
posted @ 2017-06-28 14:17 ONION_CYC 阅读(415) 评论(0) 推荐(1)
摘要:【算法】贪心,一般DP 【题解】 胡策k≤10的环状DP做法: 1.钦定法:先确定第一位(可能和第n位)的状态,然后后面正常做DP,显然正确答案是一定会被记录的,因为从整体上看不会有影响。 2.环的特性:取的段和不取的段数量相等,位置互补。所以1和n的连接处都选或都不选都会有不被包括的情况,一选一不 阅读全文
posted @ 2017-06-27 20:13 ONION_CYC 阅读(484) 评论(0) 推荐(0)