
ACM 数学
文章平均质量分 82
百里屠猪
I'm an ACMer!
展开
-
划分树
划分树是一种基于线段树的数据结构。主要用于快速求出(在log(n)的时间复杂度内)序列区间的第k大值 划分树的基本思想就是对于某个区间,把它划分成两个子区间,左边区间的数小于右边区间的数。查找的时候通过记录进入左子树的数的个数,确定下一个查找区间,最后范围缩小到1,就找到了。 划分树定义为,她的每一个节点保存区间 [lft, rht] 所有元素,元素排列顺序与原数组(输入)相同,但原创 2012-07-17 15:30:23 · 636 阅读 · 0 评论 -
2012 Multi-University Training Contest 4[hdu4331~4339]
hdu 4332 Constructing Chimney 状态压缩dp+矩阵优化, 256×256的暴力方法,幂矩阵的预处理和某项为0时的跳出优化,时间1s多, 还要消化下那个循环移位取最小的神优化能化到35×35 typedef long long ll; typedef unsigned int UI; using namespace std; const int SZ=256; c原创 2012-08-06 13:22:09 · 571 阅读 · 0 评论 -
素数筛法的常数优化简单整理
个人整理, 转载请注明出处,thx. 最普通的线性筛法, earthson的代码比较优秀了 比赛的时候很少有同时卡筛法时间和空间的。 线性筛法的定义凭我自己理解就是对每个范围内的数每个合数标记一次且仅一次,没标记的就是素数,这样遍历每个数的次数就是一个常数,因此总时间是线性的。 常用的线性筛法大多考虑的是每个合数都会拆成一个它最小的质因子乘以某个数,所以有2种方法: 1.通过枚举每个已判原创 2012-07-05 10:31:41 · 1566 阅读 · 0 评论