这几天一直在搞这个东西,今天总算搞懂了,函数式线段树是一种解决离线算法的数据结构,我是这样理解的,它将所有数据离散化,再对每一个节点 N 建一颗(1,N)的线段树,这是它的思路,当然如果真正的去建这么多线段树,内存肯定爆了,所以这个就是函数式线段树的高级的地方,它从分利用前缀和的思想,后一颗树和前一...
分类:
其他好文 时间:
2014-07-16 21:27:23
阅读次数:
188
题目链接:uva 11237
- Halloween treats
题目大意:有c个小孩要到邻居家去要糖果,有n户邻居,每户邻居只会提供固定数量的糖果,熊孩子们为了不发生冲突,决定将取来的糖果平均分配,问说取那几家邻居的糖果可以做到平均分配,注意n ≥ c。
解题思路:抽屉原理,求出序列的前缀和,有n个,将前缀和对c取模后,根据剩余系定理肯定是在0~c-1之间的,如果是0那么答案就...
分类:
其他好文 时间:
2014-07-10 20:46:08
阅读次数:
218
这题目的思路很巧妙,什么情况下剩下的所有物品都放不下呢?就是当前剩余物品中最小的那个也放不下。所以,先把物品按照容量从小到大排序,依次枚举当前背包为放不下的最小物品的情况。
对于当前物品i,必有1到i-1的所有物品都放进去,这时候比i大的物品谁放谁不放是不确定的。转换成0-1背包问题:把前i-1个物品都放进去以后,得到空间为tsum - sum[i-1](前缀和)的包,只要从第i+1到第n个物品...
分类:
其他好文 时间:
2014-07-08 19:47:17
阅读次数:
187
题目要求任选几个自然数,使得他们的和是n的倍数。
由鸽巢原理如果我们只选连续的数,一定能得到解。
首先预处理前缀和模n下的sum,如果发现sum[i]==sum[j] 那么(sum[j]-sum[i])%n一定为0,直接输出i+1~j就够了。
为什么一定会有解,因为sum从1~n有n个数,而模n下的数只有0~n-1,把n个数放入0~n-1个数里,怎么也会有重复,所以这种构造方法一定没问题。
...
分类:
其他好文 时间:
2014-07-08 10:47:19
阅读次数:
260
由于图像关于对角线对称,所以我们只看下三角区域。将x轴看做分母,被圈的点看成分子
依次是{1/2},{1/3,1/2},{1/4,3/4},{1/5,2/5,3/5,4/5}
写成前缀和的形式就是 {1/2},{1/2,1/3,2/3},{1/2,1/3,1/3,1/4,3/4},{1/2,1/3,1/3,1/4,3/4,1/5,2/5,3/5,4/5}
发现,这就是一个法雷级数,即第k项增...
分类:
其他好文 时间:
2014-07-02 11:41:03
阅读次数:
137
树状数组是一种优雅的数据结构,利用的是前缀和的思想,相当于是线段树的一部分,常常用来快速解决区间求和问题,比相应的线段树要快,因为常数小。单点更新+区间求和这个是树状数组最最基础的应用了给个例题 hdu 1166 1 #include 2 #include 3 #include 4 #incl...
分类:
其他好文 时间:
2014-06-30 14:33:57
阅读次数:
210
1,c++规定后缀形式的++操作符有一个int行的参数,被调用时,编译器自动加一个0作为参数给他2,前缀返回一个reference,后缀返回一个const对象///////////////////////////////////////////////////////////////////////...
分类:
编程语言 时间:
2014-06-29 19:43:53
阅读次数:
228
1.数据库涉及字符规范我们约定:采用26个英文字母(区分大小写)和0-9这十个自然数,加上下划线_组成,共63个字符。不能出现其他字符(注释除外)。2.数据库对象命名规范我们约定,数据库对象包括表、视图(查询)、存储过程(参数查询)、函数、约束。对象名字由前缀和实际名字组成,长度不超过30。前缀:使...
分类:
数据库 时间:
2014-06-26 00:11:06
阅读次数:
410
题目链接:http://acdream.info/problem?pid=1019
题意:两种操作,第一种将字符串某个位置的字符换为另一个字符;第二种查询某个连续子序列是否是回文串;
解法:有两种hash的办法,所以写了两种解法;首先hash是x1 * p^1+ x2*p^2 +x3*p^3...可以用树状数组维护前缀和,维护两个串,一个是正串,另一个是反串用于比较。比较时候乘以相应的p倍数判...
分类:
其他好文 时间:
2014-06-24 19:25:19
阅读次数:
252
1. 二进制和八进制表示法ES6提供了二进制和八进制数值的新的写法,分别用前缀0b和0o表示。0b111110111 === 503 // true0o767 === 503 // true八进制用0o前缀表示的方法,将要取代已经在ES5中被逐步淘汰的加前缀0的写法。2. Number.isFini...
分类:
其他好文 时间:
2014-06-21 12:29:40
阅读次数:
256