
跑得贼快的RMQ
stone41123
一名苦逼的OIer,欢迎交朋友。。。
展开
-
洛谷 P1714 切蛋糕(dp+RMQ)
传送门 首先,很简单的dp方程: fi=max(si−sj)(j∈[i−m,i])f_i=max(s_i-s_j)(j\in [i-m,i])然后发现sis_i与jj无关,可以提出来: fi=si−min(sj)(j∈[i−m,i])f_i=s_i-min(s_j)(j\in [i-m,i])发现这个方程可以用数据结构优化,比如线段树,树状数组等等,我这里推荐用st表。 预处理:O(nlog原创 2017-09-30 12:22:17 · 663 阅读 · 0 评论 -
清北学堂-D7-T1-bst
这个题暴力给了50分,直接模拟即可。 为什么是50分呢?有些人会有这个疑问。 原因很简单,你可以模拟一下这组数据: 10 1 2 3 4 5 6 7 8 9 10 你可以发现,如果我给你你个递增序列,你的算法就会被卡到O(n2)O(n^2) 那这个题怎么做呢? 我这里介绍两个做法,都不是std 1.某位大佬的倍增 我们可以插入的时候更新每个点ii向下跳2j2^j步的目标点,然后插入原创 2017-10-08 18:55:26 · 402 阅读 · 0 评论 -
洛谷 P1377 [TJOI2011]树的序
传送门 其实此题和那个qbxt的bst是一样的,我们可以按照同样的方法(详见这里)来处理,建出来树,然后就可以直接输出先序遍历即可,这就是贪心的思想。 具体贪心原理:首先,一棵树必须先有根,那么就要先输出根,然后因为字典序最小,所以我们每次都要尽可能地输出合法的最小数,那么根据二叉查找树的性质,我们就应该先输出左子树,然后再输出右子树,那不就是先序遍历了? 代码:#include<cstdio原创 2017-10-12 10:45:52 · 415 阅读 · 0 评论