二模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

转载于:https://www.cnblogs.com/zcyhhh/p/5931960.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值