• 16.10.7 A:4815. 【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-17 00:01:51

    这道题目仔细想想就可以发现是一个堆,我们先做1~n的前缀和,然后我们把(1,n)放入堆,[a+1,b]和[a,b-1]才有可能成为下次取出的对 象,那么我就将[a+1,b]和[a,b-1]加进堆,这样重复 k 次即可,另外,如果每次都[a+1,b]和[a,b-1]加入堆,会得到重复的答案,...

  • 【JZOJ4815】【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-16 23:53:20

    题目描述 输入 输出 样例输入 3 4 1 3 4 样例输出 8 7 4 4 数据范围 样例解释 解法 二分做法 考虑到可以二分第k大的值mid,如果比mid大的区间和数小于或等于mid,那么mid就合法。 找一个合法的最小mid就是我们要找的mid。 询问有多少个区间大于或等于mid...

  • JZOJ 4815 【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-16 23:43:44

    ksum 题目大意 给出一个长度为 n 的数组,现在 求前 k 大的数。 数据范围 题解 我们将所有的数按照其对应区间的左端点来分类,那么一共会分成n类。 维护一个大小为 n 的堆,一个位置维护一个类别。 一开始将区间[ 1 ...

  • [JZOJ 4815]【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-16 23:43:38

    Sample Input 样例输入1: 3 4 1 3 4 样例输入2: 3 3 10 2 7 Sample Output 样例输出1: 8 7 4 4 样例输出2: 19 12 10 The Solution 我们可以发现,如果当前最大的是[l,r]字段,那么易得[l,r+1]子段 和[l...

  • 【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-16 23:39:16

    题目 分析 发现,当子段[l,r]被取了出来,那么[l-1,r]、[l,r+1]一定也被取了出来。 那么,首先将[1,n]放入大顶堆,每次将堆顶的子段[l,r]取出来,因为它是堆顶,所以一定是最大的子段,输出它,并将[l+1,r]和[l,r-1]放进堆中。 一共就只用做k次就可以了。 ...

  • 【NOIP2016提高A组五校联考4】ksum

    时间:2022-12-16 23:39:10

    Description Solution 这题不是明显的堆来模拟吗,然后在hash判个重就好了。 但是,这题要值得反思的是,我以前的人工堆有一个很致命的错误,就是堆顶退堆的时候,应该把堆底和堆顶交换,然后num–之后再down一下,这然才对,错误的就不说了。 还有一个问题就是:我不会用S...

  • ksum 【NOIP2016提高A组五校联考4】

    时间:2022-12-16 23:38:58

    题目 样例输入: 3 4 1 3 4 样例输出: 8 7 4 4 剖解题目 。。。。。。。。 思路 看到ai每个都是正整数,就立刻想到最大的肯定是全部,下一个肯定就是删掉头尾任意一个数后得到的子序列。 很明显是堆嘛。。。然而我几乎没有打过堆。QwQ。 我是正直的人,才不会用c++中的...

  • 【NOIP2016提高A组五校联考4】ksum

    时间:2022-05-30 10:13:21

    Description给定一个长度为N的数组,求出前K大字段和详见样例解释Input第一行两个数N和K,表示数组长度为N,求前K大的字段和Outputk个数,前K大的字段和SampleInput样例输入1:34134样例输入2:331027SampleOutput样例输出1:8744样例输出2:19...