摘要: 题目大意给定一个S*S的矩形,该矩形由S*S个1x1的单元格构成,每个单元格内可以放一个整数,每次有如下可能操作:(1)改变某个单位单元格中的数的大小(2)查询由若干个连续单元格构成的X*Y的大小的矩形内所有数的总和题目分析典型的区间操作,而且是单点更新,区间查询。因此使用树状数组,不过应该使用二维... 阅读全文
posted @ 2015-09-06 23:49 农民伯伯-Coding 阅读(384) 评论(0) 推荐(0) 编辑
摘要: 动态规划问题的特征最优子结构问题的最优解包含的子问题的解也是最优的 —— 从子问题的最优解推出问题的最优解无后效性当前的状态值一旦确定,则后续的状态的确定只和这些状态的值有关,而和到达这些状态的路径无关(这样才可能保存状态,且状态推演)动态规划一般步骤分解子问题子问题和原问题类似,且需要保存子问题的... 阅读全文
posted @ 2015-09-06 18:24 农民伯伯-Coding 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 树状数组基本概念树状数组也是进行区间操作的常用数据结构。树状数组适用于单个元素经常修改,而且还反复求部分的区间和的情况.对于数组a,构造一个新的数组C,使得C[i] = a[i-2^k+1] + a[i-2^k+2] + ... + a[i];(1) i >= 1;(2) k为i在二进制表示下末尾的... 阅读全文
posted @ 2015-09-06 18:04 农民伯伯-Coding 阅读(288) 评论(0) 推荐(0) 编辑
摘要:     线段树/区间树是一种非常常用的对区间数据进行操作的数据结构。     线段树是一棵二叉树(但不一定是完全二叉树!),它的每个节点均代表一个区间,且父节点代表的区间为左右子节点代表的区间之和。特别的,根节点代表的区间为所有节点代表区间之和,各个叶节点代表区间为单个点(即长度为1的区间)。    阅读全文
posted @ 2015-09-06 17:32 农民伯伯-Coding 阅读(497) 评论(0) 推荐(0) 编辑
摘要: 1:概述 线段树,类似区间树,不一定是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(lgN)! 性质:父亲的区间是[a,b],(c=(a+b)/2)左儿子的区间是[a,c],右儿子的区间是 阅读全文
posted @ 2015-09-06 16:44 农民伯伯-Coding 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题目大意一个果树(每个节点的分叉数目不固定)上有N个分叉点(包括最末的叶节点),则有N-1条边,将分叉点进行从1到N编号,每个分叉点上均可以结水果。开始的时候,每个分叉点都有一个水果,之后进行一系列操作,分为两种操作:(1)Q x: 查询分叉点x以及x的子树上的水果的总数;(2)C x: 更改分叉点... 阅读全文
posted @ 2015-09-06 16:04 农民伯伯-Coding 阅读(179) 评论(0) 推荐(0) 编辑