题意:
给一棵树
给出两种操作:
1.在某个结点上加上一个值,在这个结点所有的儿子结点上减去这个值,在这个结点的所有孙子结点上加上这个值,在所有曾孙子结点上减去这个值,直到底。
2.查询某个结点上的值
分析:
把这个问题转化为树状数组的区间求和
样例经过dfs处理后如下,每个结点处理出了两个值l,r,层数1,2,3...,层数为奇数的属性为0,层数为偶数的属性为1
可以看到...
分类:
其他好文 时间:
2014-09-01 14:09:03
阅读次数:
213
题意:
给一串数,找出最长的区间使得这个区间里面有个数能被其他所有数整除(包括它自己),求满足这个条件的最长区间的个数及长度,以及这些区间的左端的位置
分析:
这个区间的要求其实就是GCD(ALL)=MIN(ALL),能被其他数整除,这个数肯定是最小的,然后又能被其他数整除(包括自己)这个数就是GCD了
可以二分枚举区间长度,然后验证答案的可靠性
对当前长度的所有区间,套用RMQ...
分类:
其他好文 时间:
2014-09-01 14:05:53
阅读次数:
248
因为,这两题有着似乎一样的解法所以将其放在一起总结比较,以达到更好的区分二者的区别所在。
一、区间DP
uva的Cutting Sticks是一道典型的模板题。
题目描述:
有一根长度为l的木棍,木棍上面有m个切割点,每一次切割都要付出当前木棍长度的代价,问怎样切割有最小代价。
区间DP的定义:
区间动态规划问题一般都是考虑,对于每段区间,他们的最优...
分类:
其他好文 时间:
2014-09-01 12:37:43
阅读次数:
298
1 public class Randomer { 2 3 public static void main(String[] args) { 4 Random rand = new Random(); 5 System.out.println(rand.n...
分类:
编程语言 时间:
2014-09-01 12:04:52
阅读次数:
260
题目链接:点击打开链接
题意:
给定n长的序列
下面2个操作
0 x y 给[x,y]区间每个数都 sqrt
1 x y 问[x, y] 区间和
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define ll long long...
分类:
其他好文 时间:
2014-09-01 10:47:03
阅读次数:
223
题目链接:点击打开链接
== 原来写1的时候已经把更新函数写好了。。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
#define N 50050
#define Lson(x) tree[x].l
#define Rson(x) tree[x].r
...
分类:
其他好文 时间:
2014-08-31 20:08:01
阅读次数:
247
题目链接:点击打开链接
当转移[l,r] 区间时, 若[0, r-1] 这里的区间都已经转移完毕时是最优的,所以按右端点升序,同理右端点相同时左端点升序,然后树状数组维护一下前缀和。
#include
#include
#include
#include
#include
using namespace std;
#define N 100005
#define mod 100000...
分类:
其他好文 时间:
2014-08-31 18:43:51
阅读次数:
340
题意:给定x,y,K,B,要求找出在区间[x,y]内的正整数个数,使它们满足恰好由K个不同的某个B的幂组成例如X=15,Y=20,K=2,B=217 = 24+20,18 = 24+21,20 = 24+22. 有三个正整数满足要求把问题转化一下,设g(x)为有多少个 2 #include 3 u....
分类:
其他好文 时间:
2014-08-31 18:37:11
阅读次数:
177
最近总是在做树链剖分的题(觉得有必要学一下倍增算法=_=)。这题也是一个树链剖分。维护和找答案的时候注意区间左右端点的颜色就OK了…… 上代码:#include #include #include #include #include #include #define N 100010#defi...
分类:
其他好文 时间:
2014-08-31 17:12:41
阅读次数:
196
思路一:先将数据进行分割成数据量小的一些文件,如1000000个数据为一个文件。然后将每个文件数据进行排序(用快速排序法排序)然后使用K路合并法将其合并到一个文件下,取出排序好的最大的10000个数据。思路二:1、读一次所有数据,得出最大和最小。2、用最大和最小,分100个区间。 dx = (x_m...
分类:
其他好文 时间:
2014-08-31 17:11:01
阅读次数:
201