
堆与优先队列
文章平均质量分 56
堆与优先队列
李峻枫
这个作者很懒,什么都没留下…
展开
-
JZOJ5443. 【NOIP2017提高A组冲刺11.2】字典序
Description你需要构造一个1~n的排列,使得它满足m个条件,每个条件形如(ai,bi),表示ai必须在bi前面。在此基础上,你需要使它的字典序最小。Input第一行两个正整数n,m。接下来m行每行两个数ai,bi。Output输出一行n个整数表示答案。如果不存在这样的排列,输出-1。Sample Input5 4 5 4 5 3 4 2 3 2Sample Output1 5 3...原创 2017-11-02 16:20:32 · 322 阅读 · 0 评论 -
J - 马老师的餐厅
J - 马老师的餐厅 题目大意 给出nnn个数,要求每次取出互不相同的三个数,组成一组,问最多能取出多少组。 题解 运用贪心思想,每次取一定是取剩余数量最多的三个数。 这个可以用优先队列来维护, 每次取出队列头的三个数,组成一组,然后把它们的剩余数量−1-1−1,再仍会队列里。 时间复杂度 优先队列单词操作的时间复杂度O(logn)O(log_n)O(logn),总共由nnn个数,于是总的时间复杂度就是O(n×logn)O(n\times log_n)O(n×logn) Tag 优先队列 贪心算法 co原创 2021-10-07 08:08:50 · 281 阅读 · 0 评论 -
JZOJ4815. 【NOIP2016提高A组五校联考4】
DescriptionInputOutputSample Input样例输入1:3 4 1 3 4样例输入2:3 3 10 2 7Sample Output样例输出1:8 7 4 4样例输出2:19 12 10Data ConstraintHint分析因为N非常大, 所以我们不可能将所有的子串枚举出来。其实,我们只需要找到前K个子串就可以了。, 有一些子串是可以不用枚举的。因为所有的数都是正原创 2016-10-14 19:52:53 · 1380 阅读 · 0 评论 -
JZOJ5274. 数组
分析先考虑只有正数的情况, 假设有三个正数,a,b,c, a是最小的,可以得到 (a−1)bc<a(b−1)c(a-1)bc<a(b-1)c如果有负数, 那我们知道结果是负数,那么就要它的绝对值尽可能的大, 同样是三个数,a,b,c,满足a<b<ca<b<c 那么: (a+1)bc=abc+bc,a(b+1)c=abc+ac 因为ac<bcac<bc,所以(a+1)bc>a(b+1)原创 2017-08-14 15:46:35 · 242 阅读 · 0 评论 -
JZOJ5409. 【NOIP2017提高A组集训10.21】Fantasy
DescriptionY sera 陷入了沉睡,幻境中它梦到一个长度为N 的序列{Ai}。 对于这个序列的每一个子串,定义其幻境值为这个子串的和,现在Y sera 希望选择K 个不同的子串并使得这K 个子串的幻境值之和最大。 然而由于梦境中的种种限制,这些子串的长度必须在L 到R 之间。 你需要告诉她,最大的幻境值之和。InputN K LR A1 A2 … ANOutput输出一行一个整数原创 2017-10-22 08:15:01 · 395 阅读 · 0 评论 -
JZOJ5461. 【NOIP2017提高A组冲刺11.8】购物
DescriptionX 城的商场中,有着琳琅满目的各种商品。一日,小X 带着小Y 前来购物,小Y 一共看中了n件商品,每一件商品价格为Pi。小X 现在手中共有m个单位的现金,以及k 张优惠券。小X 可以在购买某件商品时,使用至多一张优惠券,若如此做,该商品的价格会下降至Qi。 小X 希望尽可能多地满足小Y 的愿望,所以小X 想要知道他至多能购买多少件商品。Input第一行包含三个整数n,k,m,原创 2017-11-08 22:34:20 · 363 阅读 · 0 评论 -
JZOJ5849. 【NOIP提高组模拟2018.8.25】d
题目大意 给出n给二元组(ai,bi)(ai,bi)(a_i,b_i),在里面选出至少n-m个二元组,使得选出来min(a)∗min(b)min(a)∗min(b)min(a)*min(b)最大。 题解 很显然,最优答案一定是选n-m个,因为多选并不能使答案更优,反而有可能使答案更劣。 先按照a为第一关键字排序, 然后枚举min(a),在所有对应的b中选出最大那n-m个,用个数据...原创 2018-08-25 15:48:18 · 198 阅读 · 0 评论 -
JZOJ5861. 【NOIP2018提高组模拟9.9】失意
题解 像这种求区间交集的问题,肯定是要对区间进行排序的。 按照r降序枚举,那么当前枚举到的r就一定是最小的右端点。 现在就要最小化l,但是要保证有m个l, 可以用堆来维护。 最后注意记录方案,直接记录答案交集区间是什么, 然后就直接输出包含这个交集区间的任意m个区间就好了。...原创 2018-09-10 22:11:33 · 236 阅读 · 0 评论