摘要:
题目链接:http://poj.org/problem?id=2505 题目大意: 两个人轮流玩游戏,Stan先手,数字 p从1开始,Stan乘以一个2-9的数,然后Ollie再乘以一个2-9的数,直到谁先将p乘到p>=n时那个人就赢了,而且轮到某人时,某人必须乘以2-9的一个数。 解题思路: 这是 阅读全文
摘要:
花了一个星期,总算把这一道该死的毒瘤题做完了。 这道题有很多种解法,我是用优先队列+主席树。 首先每一个区间的和,可以表示为两个前缀和之差。 我们显然可以知道,每一次找到的那个最大值必然在以一个点为最后一个点的区间之内。 所以我们可以把每一个点为最后一个点的最大值的区间求出来,先打入队列。 然后每一 阅读全文
摘要:
第一道习题博客!! 这一道题比较简单。 题目就是输入一个数列。 就是每插入一个,找到前面插入过的与之差最小的值,将他们的差值加入答案。 这里可以想到平衡树。 每一次输入,加进treap中,然后找它的前驱和后继,比较他们的差值大小,小的加入答案。 如果treap不懂的话,可以看我的前一篇博客:http 阅读全文
摘要:
这次我们来讲一讲Treap(splay以后再更) 平衡树是一种排序二叉树(或二叉搜索树),所以排序二叉树可以迅速地判断两个值的大小,当然操作肯定不止那么多(不然我们还学什么)。 而平衡树在排序二叉树的基础上主要是增加了一个优化:就是高度较为平衡,并可以动态平衡。 而今天要讲的treap就是一种动态平 阅读全文
摘要:
老规矩,讲算法前,先说一道小问题吧 给你一个长串和短串,求短串在长串中出现的次数和位置。 设长串长度为len1,短串长度为len2。 如果len1*len2<=108,那就很简单了,直接暴力枚举以每个字符为开始的字符串是否匹配即可,复杂度为O(len1*len2);(是不是感觉太大了?) 如果将数据 阅读全文