10月15号

来源:互联网 发布:淘宝黑曜石本命佛真假 编辑:程序博客网 时间:2024/04/27 21:18
        这三天主要是做线段树的题,现做的1015,题意是有一个一个长度为L的区间,最多有T种颜色, 一共就两种操作第一个操作是C a b c:表示的是将【a,b】这个区间染成颜色c。 第二个操作是P a b :表示的是询问【a,b】这个区间有多少种颜色。线段树区间更新操作,维护一个区间的颜色种类数,由于只有30种颜色,可以用位运算位操作。接下来是1010题,这个题偷懒了,没用线段树做,用的dp,状态方程很好想,dp[i] = max(dp[j] + 1)但是要求下标之间的差必须在题目要求范围之内。接着是1017题,题意是一个man从最高处的横木往下跳,在此处我们只能往最近的,并且包含我左或右端点的一个横木区间上跳。man的初始血量为100,每跳到一个横木上他的血量都有可能发生变化,当横木上放着食物的时候,man的血回increase,如果是障碍之类的就损耗血量。最先想到的是运用dp,显示按高度有小到大进行排序,然后从低往高进行插入,并且查找每块木板左边和右边的木板时只需要在线段树上找左边和右边坐标被谁覆盖。1001题,题意是一条线上的点,D x是破坏这个点,Q x是表示查询以x所在的最长的连续的点的个数,R是恢复上一次破坏的点。 对于每一个区间,用线段树维护从区间左端点开始的最大连续没破坏的村庄数量以及以区间右端点结点的最大连续没破坏的村庄数,很容易更新这两个值及求出要求的数量。困难是更新了叶结点的值后,递归回来,自底向上更新好结点的值。1005题,汉语题,二维线段树,第一维是身高,然后由于第二维是活泼度是浮点型,把值整体乘上10做成线段树,然后剩下的套模板就行了。
原创粉丝点击