扫描线,树状数组求和。 横着的线的两个端点作为插入和删除,竖着的线作为询问。 遇到横着的线的左端点,那么那个位置+1, 遇到竖着的线,询问竖着那一段区间和是多少,区间和就是这条线对答案做出的贡献, 遇到横着的线的右端点,那么那个位置-1。 ...
分类:
其他好文 时间:
2016-08-19 19:16:23
阅读次数:
214
dp[i][j]表示以a[i],b[j]为结尾的方案数,就是 k<i&&s<j 的dp[s][k]累加和。用个树状数组求和即可。 ...
分类:
其他好文 时间:
2016-08-03 20:10:56
阅读次数:
119
*摘自交大ACM-ICPC系列丛书和网络 【数据结构】 二叉堆 并查集——初始化O(n),查找均摊O(1),合并均摊O(1) 树状数组——求和、修改O(logn) 左偏树——插入O(logn),求极值O(1),删除O(logn),合并O(logn) Trie——插入、查询O(length) Trea ...
分类:
编程语言 时间:
2016-07-09 14:43:23
阅读次数:
234
一,题目分析:可以使用数组的归并方法计算,reduce和reduceRight。二者作用几乎相同。只是归并方向相反。reduce和reduceRight都可以接收两个参数。第一个是在每一项上调用的函数,第二个是归并基础的初始值。 二,解题。 function sum(arr){ var sum=0; ...
分类:
编程语言 时间:
2016-07-05 22:26:17
阅读次数:
209
#include <iostream> using namespace std; #define NUM 100 /*链表数据结构*/ typedef struct LNode { int data; struct LNode *next; }LNode,*LinkList; /*链表的初始化*/ ...
分类:
编程语言 时间:
2016-06-23 11:07:07
阅读次数:
189
var arr = [1,3,2,7,5,9,11]; function sum(arr){ var total = 0; var fun = function(arrs){ if(arrs.length > 0){ total += arrs.pop(); fun(arrs); } } fun(a ...
分类:
编程语言 时间:
2016-06-09 09:49:10
阅读次数:
166
var arr = [1, 2, 3, 4, 5, 6];测试时我不想过度使用全局变量影响命名空间,所以没使用未声明变量。而是直接通过私有作用域设置静态私有变量,也可以用其他设计模式来限定变量作用域。因为数组对象的迭代方法也是一种遍历,所以也可以借助用来实现求和。一、利用数组对象的各迭代方法:1.a ...
分类:
编程语言 时间:
2016-05-19 23:11:37
阅读次数:
276
classSumArray
{
publicstaticvoidmain(String[]args)
{
int[]arr=newint[100];
arr(arr);
Outarr(arr);
intb=sum(arr);
System.out.print("Sum"+"Arr["+arr.length+"]"+"="+b);
}
publicstaticint[]arr(int[]arr)
{
for(inti=0;i<arr.length;i+=1..
分类:
编程语言 时间:
2016-05-13 05:08:28
阅读次数:
152
项目1 数组求和
#include
using namespace std;
int main()
{
const int N=5;
int a[N]={1,2,3,4,5};
int i,sum1=0,sum2=0;
for(i=0;i>a[i];
if(a[i]>0)
{
sum1+=a[i];
}
else
...
分类:
编程语言 时间:
2016-05-12 15:05:06
阅读次数:
156