首页 > 代码库 > 二模11day1解题报告

二模11day1解题报告

T1.树的重量(weight)

        给出一棵n个叶节点的树(但是有多组数据)以及n个节点之间的距离(最短距离。。。然而也只有一条路),求树的所有边权之和。

              一开始完全没有思路啊。。。难道爆搜模拟??狂汗。。。

              然而答案就是构造(枚举啦)。因为n个都是叶节点,那么假设已经安排好了i-1个节点的位置,那么第i个点的连边肯定是从已有的边中连出来的。

如下:若1,2距离为4个单位,1,3距离为5个单位,那么试构就是这样的:

              所以可以从3开始一个一个枚举,每次枚举从已经放好的节点中找到扩展节点,扩展出的边权是 (tmp为中间值自行无视)

然后只要把每次扩展的值累加起来就好了(别忘了1,2之间的边权)。

 

 

T2.单词查找树(tree)

        给出一些单词(每行一个,总计不超过32K),求构成的trie的节点个数。

              其实很水,只要模拟构造trie就可以了。只是之前没写过trie所以。。。。

T3.登山(climb)

        给出n个数,q次询问,每次问区间l,r的最大值(RMQ)

              用st算法很快可以求出来。

不过由于之前没写过st的总结所以还是写一下。

首先,对给出序列求出maxn[i][k],表示的是i开始2^k个数的最大值,枚举k再枚举i就好,具体推导为:

       Maxn[i][k]=max(maxn[i][k-1],[i+(1<<(k-1))][k-1])

              这样最大值问题就解决了。

              那么区间l,r呢?先求k=log2(r-l+1),然后最大值就是

                     Max(maxn[l][k],maxn[r-(1<<k)+1][k])

              然后好了这就是st

二模11day1解题报告