给定一串数,在有频繁的加入删除操作时,如何维护它们的最大值和最小值?
        经典的O(n)做法即为遍历整个数组,找到最值。这种方法简单但效率低下。
        堆积树是一种基于完全二叉树的数据结构,可以在O(logn)的时间复杂度下维护序列最值。

阅读全文〉

[洛谷P1040]加分二叉树

难度:普及+/提高

题目描述

        设一个n个节点的二叉树tree的中序遍历为(1,2,3,… ,n),其中数字1,2,3,… ,n为节点编号。每个节点都有一个分数(均为正整数),记第i个节点的分数为di,tree及它的每个子树都有一个加分,任一棵子树subtree(也包含tree本身)的加分计算方法如下:
        subtree的左子树的加分 × subtree的右子树的加分+subtree的根的分数。
        若某个子树为空,规定其加分为1,叶子的加分就是叶节点本身的分数。不考虑它的空子树。
        试求一棵符合中序遍历为(1,2,3,… ,n)且加分最高的二叉树tree。要求输出;
        (1)tree的最高加分
        (2)tree的前序遍历

阅读全文〉

[洛谷P1126]机器人搬重物

难度:普及/提高-

题目描述

        机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径$1。6米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个N×M的网格,有些格子为不可移动的障碍。机器人的中心总是在格点上,当然,机器人必须在最短的时间内把物品搬运到指定的地方。机器人接受的指令有:向前移动1步(Creep);向前移动2步(Walk);向前移动3步(Run);向左转(Left);向右转(Right)。每个指令所需要的时间为1秒。请你计算一下机器人完成任务所需的最少时间。

阅读全文〉

[洛谷P1316]丢瓶盖

难度:普及/提高-

题目描述

        陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢?

阅读全文〉

[洛谷P1020]导弹拦截

难度:普及/提高-

题目描述

        某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。

        输入导弹依次飞来的高度(雷达给出的高度数据是≤50000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。

阅读全文〉

[洛谷P1606]疯狂的采药

难度:普及/提高-

题目描述

        LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同种类的草药,采每一种都需要一些时间,每一种也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
        如果你是LiYuxiang,你能完成这个任务吗?
        此题和原题的不同点:
        1。每种草药可以无限制地疯狂采摘。
        2。药的种类眼花缭乱,采药时间好长好长啊!师傅等得菊花都谢了!

阅读全文〉

[洛谷P1048]采药

难度:普及-

题目描述

        辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师。为此,他想拜附近最有威望的医师为师。医师为了判断他的资质,给他出了一个难题。医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值。我会给你一段时间,在这段时间里,你可以采到一些草药。如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大。”
如果你是辰辰,你能完成这个任务吗?

阅读全文〉

悬线法

        在一个矩阵中找到满足某种性质的最大子矩阵问题是一个很常见的问题,悬线法是求解此类问题的高效算法。现在来看这样一题(洛谷 P1169)来认识悬线法。

阅读全文〉