#pragmaonce
#include<vector>
#include<assert.h>
//
//小堆==大堆
//仿函数
//
template<classT>
structGreater
{
booloperator()(constT&l,constT&r)
{
returnl>r;
}
};
template<classT>
structLess
{
booloperator()(constT&..
分类:
其他好文 时间:
2016-08-26 23:09:02
阅读次数:
201
堆堆,也叫二叉堆,就是完全二叉树二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节点的键值时为最大堆。当父结点的键值总是小于或等于任何一个子节点的键值时为最小... ...
分类:
其他好文 时间:
2016-08-14 14:22:27
阅读次数:
131
这类博弈只需要记住一点,一个由多个游戏组成的游戏sg值为这多个游戏的sg值异或和。 也就是所有对一整个nim游戏它的sg值即为每一小堆的sg的异或和。 hdu 5795 这题就是可以选择把一堆石子分成3堆。 通过上述方法,只需要打表找出规律即可。 ...
分类:
其他好文 时间:
2016-08-13 16:52:21
阅读次数:
128
1、小堆:堆的构造,i>数组直接生成堆(向下调整),iii>插入创建堆(向上调整);(1)、怎么实现一次调整?找到最后一个非叶子结点,n/2-1;一直往下调整即可!(2)堆排----->优先级队列堆的删除,只能是堆顶元素,再拿最后一个元素补充上去。在向下做一次调整。形成新的堆..
分类:
其他好文 时间:
2016-08-10 00:59:56
阅读次数:
198
1、堆一种完全二叉树的线性表示方法;就是数组形式保存数据。大堆:根(父)结点大于左右结点数据------->降序小堆:根(父)结点小于左右结点------->升序小堆如图:小堆符合每个根(父)结点都比左右结点小!!!堆的存储结构,就是一个线性表结构:private:
enum{HEAP_DEFAU..
分类:
其他好文 时间:
2016-08-09 00:40:25
阅读次数:
205
题目大意: 给定n个数及其优先级,求对应的符合最小堆性质的Treap的先序遍历。 n<=500000。 解法: 目前为止我只想到了三种解法,其中第三种是正解。 1.暴力1 以优先级为关键字排序,然后按顺序构建BST即可。注意不能加平衡,因为这样会改变树的先序遍历。 期望复杂度O(nlogn)(排序和 ...
分类:
其他好文 时间:
2016-08-07 21:31:24
阅读次数:
173
题意: n堆石子,先拿光就赢,操作分为两种: 1.任意一堆中拿走任意颗石子 2.将任意一堆分成三小堆 ( 每堆至少一颗 ) 分析: 答案为每一堆的SG函数值异或和. 故先打表寻找单堆SG函数规律. 其中,若 x 可分为 三堆 a,b,c ,则 SG[x] 可转移至子状态 SG[a] ^ SG[b] ...
分类:
其他好文 时间:
2016-08-06 14:14:02
阅读次数:
149
堆的定义 堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质: [ 性质一 ] 堆中任意节点的值总是不大于(不小于)其子节点的值; [ 性质二 ] 堆总是一棵完全树。 将任意节点不大于其子节点的堆叫做最小堆或小根堆 ,而将任意节点不小于其 ...
分类:
其他好文 时间:
2016-08-01 20:57:01
阅读次数:
285
简介 heap有查找时间复杂度O(1),查找、插入、删除时间复杂度为O(logN)的特性,STL中heap相关的操作如下: make_heap() push_heap() pop_heap() sort_heap() reverse() 本次着重介绍make_heap() ,根据其创出的堆有大小堆之 ...
分类:
其他好文 时间:
2016-07-28 15:16:55
阅读次数:
196
威佐夫博弈博弈论 直接模拟即可 值得一提的是这道题几乎网上所有题解都没有考虑只从小堆取得情况 所以在类似 19 20这种数据出现时,他们都是错误的 只输出了 1 2 而没有 12 20 1 #include <cstdio> 2 3 #include <cmath> 4 5 #include <ma ...
分类:
其他好文 时间:
2016-07-24 13:28:24
阅读次数:
162