直接插入排序是一种比较简单的排序方法,它的基本操作是:假设排序的记录存储在数组C[1..n]中,在排序过程的某个时刻,C被划分为两个子区间,C[1..i-1]和C[i..n],其中前一个为已排好的有序区,而后一个为无序区,开始时有序区中只含有一个元素C[1],无序区中为C[2..n]。排序过..
分类:
编程语言 时间:
2016-11-14 02:42:40
阅读次数:
137
【题意】 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 少女幽香这几天正在学习高等理论计算机科学,然而她什么也没有学会,非常痛苦。所以她出去晃了一晃,做起了一些没什么意义的事情来放松自己。门前有一 ...
分类:
编程语言 时间:
2016-11-10 19:21:30
阅读次数:
405
题意:[1-n]的区间,有m个询问,每个询问表示[e,f]的和是g,问一共有多少组矛盾 sum[i]表示i到根节点的和,求区间和用sum[f]-sum[e-1]; 为了简化e--; 因为是并查集 要出来最前面的那个数 1.如果共同祖先相同 直接用sum[f]-sum[e]与给的值g相比较 2.,不是 ...
分类:
Web程序 时间:
2016-10-23 14:34:13
阅读次数:
133
题解: 记忆化搜索 如何判断每个区域只有一个点?转化为区间和,只要区间和为1即可 代码: ...
分类:
其他好文 时间:
2016-10-10 23:04:00
阅读次数:
202
题目:多次给出信息,告诉你[a,b]区间的和,求多少个错误信息(错误信息不考虑)。 乍一看有点像线段树,但想想就发现这个并不能用线段树方便地解决。后来经提醒是并查集的一种经典题型。 把区间抽象为并查集的子节点和母根结点,子节点存放了到根节点的区间和。这样当引入一个新的区间,如果区间左右界根节点不同就 ...
分类:
其他好文 时间:
2016-10-06 22:52:12
阅读次数:
183
SPOJ DQUERY 题意: 给出一串数,询问[L,R]区间中有多少个不同的数 。 解法: 关键是查询到某个右端点时,使其左边出现过的数都记录在它们出现的最右位置置1,其他位置置0,然后直接统计[L,R]的区间和就行了。 在线和离线都可以做 。 话不多说,上代码 。 在线主席树 离线树状数组 ...
分类:
编程语言 时间:
2016-10-06 07:07:12
阅读次数:
282
题目链接:hdu_4417_Super Mario 题意: 给你n个树,有m个询问,每个询问有一个区间和一个k,问你这个区间内不大于k的数有多少个。 题解: 考虑用主席树的话就比较裸,当然也可以用其他的写 1 #include<bits/stdc++.h> 2 #define F(i,a,b) fo ...
分类:
其他好文 时间:
2016-10-04 01:29:00
阅读次数:
373
题意 输入一个含有 n(1≤n≤100000) 个非负整数的 a 数组和一个 1~n 的排列 p 数组,求每次删除 a[p[i]] 后,最大连续子段和(不能跨越被删除的)是多少? 分析 因为都是非负整数,答案一定是尽量长的区间和。 s[i] 表示 a 的前缀和,区间(l,r]的和就是s[r]-s[l ...
分类:
其他好文 时间:
2016-10-03 06:51:18
阅读次数:
125
(来自luogu)原题目 lowbit(x)=2^k次幂,k为x末尾0的数量。大家可以模拟试试lowbit (-x)=(~x)+1,把x取反+1 void update(int x,int k)表示a[x]+=k(单点更新) int sum(int x)表示求1-x区间和 求x-y区间和只需要sum ...
分类:
编程语言 时间:
2016-10-01 19:11:38
阅读次数:
162
树状数组 数据结构知识点1-树状数组 树状数组的用途就是维护一个数组,重点不是这个数组,而是要维护的东西,最常用的求区间和问题,单点更新。但是某些大牛YY出很多神奇的东西,完成部分线段树能完成的功能,比如区间更新,区间求最值问题。 树状数组当然是跟树有关了,但是这个树是怎么构建的呐?这里就不得不感叹 ...
分类:
编程语言 时间:
2016-09-30 00:45:03
阅读次数:
241