2017年3月27日

operator new 和 new operator

摘要: operator new 的功能很简单, 就是分配一块连续的内存。 当我们写下::operator new时, 调用的实际上就是全局的operator new。 new operator 的功能就会复杂一些。 如果内存分配失败, 上述代码并不会返回一个空指针, 而是会抛出一个异常。 当我们写下上述代 阅读全文

posted @ 2017-03-27 11:25 yohaha 阅读(130) 评论(0) 推荐(0) 编辑

2017年3月18日

hdu 1007 Quoit Design 分治求最近点对

摘要: #include using namespace std; pair a[100005], tmp[100005]; double ans; double getDis(const pair& lhs, const pair& rhs) { return (lhs.first-rhs.first)*(lhs.first-rhs.first) + (lhs.second-rhs.se... 阅读全文

posted @ 2017-03-18 12:48 yohaha 阅读(123) 评论(0) 推荐(0) 编辑

2017年3月17日

实现一个简单的shared_ptr

摘要: template class shared_ptr { public: explicit shared_ptr (T *ptr): mPtr(ptr), cnt(new int(1)){} shared_ptr(const shared_ptr& rhs): mPtr(rhs.mPtr), cnt(rhs.cnt){ ++*cnt; } shared_ptr& oper... 阅读全文

posted @ 2017-03-17 17:09 yohaha 阅读(146) 评论(0) 推荐(0) 编辑

2016年11月17日

bzoj 3224: Tyvj 1728 普通平衡树 替罪羊树

摘要: 题目链接 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定 阅读全文

posted @ 2016-11-17 15:03 yohaha 阅读(130) 评论(0) 推荐(0) 编辑

2016年10月25日

bzoj 2648 SJY摆棋子 kd树

摘要: 题目链接 初始的时候有一些棋子, 然后给两种操作, 一种是往上面放棋子。 另一种是给出一个棋子的位置, 问你离它最近的棋子的曼哈顿距离是多少。 写了指针版本的kd树, 感觉这个版本很好理解。 阅读全文

posted @ 2016-10-25 09:54 yohaha 阅读(158) 评论(0) 推荐(0) 编辑

2016年10月21日

hdu 2966 In case of failure k-d树

摘要: 题目链接 给n个点, 求出每个点到离它最近的点的距离。 直接建k-d树然后查询就可以 感觉十分神奇... 明白了算法原理但是感觉代码还不是很懂... 阅读全文

posted @ 2016-10-21 22:50 yohaha 阅读(150) 评论(0) 推荐(0) 编辑

2016年10月4日

codeforces 713D D. Animals and Puzzle 二分+二维rmq

摘要: 题目链接 给一个01矩阵, 然后每个询问给出两个坐标(x1, y1), (x2, y2)。 问你这个范围内的最大全1正方形的边长是多少。 我们dp算出以i, j为右下角的正方形边长最大值。 然后用二维st表预处理出所有的最大值。 对于每个询问, 我们二分一个值mid, 查询(x1 + mid -1, 阅读全文

posted @ 2016-10-04 10:31 yohaha 阅读(276) 评论(0) 推荐(0) 编辑

2016年10月2日

bzoj 1188 : [HNOI2007]分裂游戏 sg函数

摘要: 题目链接 给n个位置, 每个位置有一个小球。 现在两个人进行操作, 每次操作可以选择一个位置i, 拿走一个小球。然后在位置j, k(i<j<=k)处放置一个小球。 问你先进行什么操作会先手必胜以及方法数量。 感觉这题好神 如果一个位置有偶数个小球, 那么等价于这个位置没有小球。 因为第二个人可以进行 阅读全文

posted @ 2016-10-02 15:31 yohaha 阅读(303) 评论(0) 推荐(0) 编辑

2016年10月1日

bzoj 1912 : [Apio2010]patrol 巡逻 树的直径

摘要: 题目链接 如果k==1, 显然就是直径。 k==2的时候, 把直径的边权变为-1, 然后在求一次直径。 变为-1是因为如果在走一次这条边, 答案会增加1. 学到了新的求直径的方法... 阅读全文

posted @ 2016-10-01 20:34 yohaha 阅读(207) 评论(0) 推荐(0) 编辑

uva 10304 - Optimal Binary Search Tree 区间dp

摘要: 题目链接 给n个数, 这n个数的值是从小到大的, 给出个n个数的出现次数。 然后用他们组成一个bst。访问每一个数的代价是这个点的深度*这个点访问的次数。 问你代价最小值是多少。 区间dp的时候, 如果l >= r, 那么返回0, l == r-1, 返回两个数中小的一个。 其他情况的话枚举分界点进 阅读全文

posted @ 2016-10-01 18:49 yohaha 阅读(273) 评论(0) 推荐(0) 编辑

导航