题目大意是一个奶牛可以在一些时间区间产奶,每个区间的产奶量已知,每次产完奶都要休息一下,问最大产奶量。dp方程类似最长上升子序列的n2算法,dp[i]表示以第i个区间结尾最多能产生多少奶。则dp[i] = max(dp[j] + e[i].z)。#include #include #include ...
分类:
其他好文 时间:
2014-07-16 19:09:37
阅读次数:
216
聪哥推荐的题目区间修改和区间查询,但是此题新颖之处就在于他的区间修改不是个定值,而是从L 到 R 分别加 F1、F2、。。。Fr-l+1 (F为斐波那契数列)想了一下之后,觉得用fib的前缀和来解决,每次做懒惰标记记录下当前区间是从哪个L开始加起的,敲了一半之后发现有问题,就跟上次遇到的懒惰标记问题...
分类:
其他好文 时间:
2014-07-16 18:10:06
阅读次数:
270
树状数组
第01讲 什么是树状数组?
树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。
有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?
但是,如果题目的A[]会改变呢?例如:
我们来定义下列问题:我们有n个盒子。可能的操作为
1...
分类:
其他好文 时间:
2014-07-16 17:35:47
阅读次数:
214
题意:
一段区间a一开始是1、2、3、4……n这样的 每次1操作可以将[l,r]覆盖成x 同时得到abs(a[i]-x)的价值 2操作查询[l,r]的价值
思路:
线段树 又是一道加深线段树理解的题
操作2是简单的求和 线段树基本操作 难点在操作1
用cov表示该区间的值(如果为0说明是混合区间) 用val表示该区间的价值和
那么在更新时就不仅仅是找到 tree[...
分类:
其他好文 时间:
2014-07-16 11:43:00
阅读次数:
220
题意:给出一列数(n个),m次查询区间[l,r]的最大连续区间[x,y](l
思路:动态查询区间最大连续区间;
如果是求最大连续区间和:
用线段树维护最大连续和sum_sub、最大前缀和sum_prefix、最大后缀和sum_suffix。
root.sum_sub = max{l.sum_sub, r.sum_sub, (l.sum_suffix + r.sum_prefix)...
分类:
其他好文 时间:
2014-07-16 11:42:15
阅读次数:
222
题目来源:POJ 2763 Housewife Wind
题意:给你一棵树 2种操作0 x 求当前点到x的最短路 然后当前的位置为x; 1 i x 将第i条边的权值置为x
思路:树上两点u, v距离为d[u]+d[v]-2*d[LCA(u,v)] 现在d数组是变化的 对应每一条边的变化 他修改的是一个区间 用时间戳处理每个点管辖的区域 然后用线段树修改 线段树的叶子节点村的是根到每一个点的距离...
好题! 但是感觉题目描述不是很清楚
这题只是询问开除某人后,他的下属中谁会替代他的位置,不会更新这个位置
要求一个子树中忠诚度最高的人。可以想到dfs树,保留时间戳,每个节点便表示一个区间
那么便可以建树维护最高忠诚度。。。只是要保证能力值也要比被开除者高
那么根据能力值从大到小对员工排序,依次更新。那么可以保证之前更新的节点的能力值都大于当前要查询的节点
这里要注意一点,能力值相同...
分类:
其他好文 时间:
2014-07-16 10:20:16
阅读次数:
235
分段线性变换将图像的值域分成多个值域并进行不同线性变换计算,可以压缩某部分灰度区,扩展另一部分灰度区间,下面以2个区间为例:for m in xrange(h):
for n in xrange(w):
if img[m,n]>Ds_min and img[m,n]<=Ds_internal:
newimg[m,n]=int((Dd_internal...
分类:
编程语言 时间:
2014-07-15 13:05:56
阅读次数:
362
题意:
一段区间最开始元素都是0 每次操作可以令一段连续区间+1或-1(在加过的前提下才能减) 每次操作输出整段区间有多少段连续的0
思路:
一看区间操作首先考虑线段树 本题n比较大 但是操作数很小 而且每次操作最多影响一段区间(可用两个数字表示区间头尾) 那么就想到了离散化
我和网上题解的离散方式不同 我的更暴力更无脑- -b
为了保证区间连续性 不能只在线段树...
分类:
其他好文 时间:
2014-07-15 12:33:16
阅读次数:
217
本文出自:http://blog.csdn.net/svitter
题意:在1~200,000个数中,取一段区间,然后在区间中找出最大的数和最小的数字,求这两个数字的差。
分析:按区间取值,很明显使用的线段树。区间大小取200000 * 4 = 8 * 10 ^5;
进行查询的时候,注意直接判断l, r 与mid的关系即可,一开始写的时候直接与tree[root]...
分类:
其他好文 时间:
2014-07-15 12:22:14
阅读次数:
268