随笔分类 -  Acm

上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要:用优先队列来贪心,是一个很好地想法。优先队列在很多时候可以维护最值,同时可以考虑到一些其他情况。 http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1163 阅读全文
posted @ 2016-03-21 16:40 sweat123 阅读(339) 评论(0) 推荐(0)
摘要:N元钱换为零钱,有多少不同的换法?币值包括1 2 5分,1 2 5角,1 2 5 10 20 50 100元。 例如:5分钱换为零钱,有以下4种换法: 1、5个1分 2、1个2分3个1分 3、2个2分1个1分 4、1个5分 (由于结果可能会很大,输出Mod 10^9 + 7的结果) N元钱换为零钱, 阅读全文
posted @ 2016-03-19 14:45 sweat123 阅读(193) 评论(0) 推荐(0)
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013 这是一个等比数列,所以先用求和公式,然后和3^(n+1)有关,有n比较大,所以用快速幂来解决,又有/2的操作,所以可以用费马小定理取逆元。 阅读全文
posted @ 2016-03-11 19:35 sweat123 阅读(159) 评论(0) 推荐(0)
摘要:将一堆正整数分为2组,要求2组的和相差最小。 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。 将一堆正整数分为2组,要求2组的和相差最小。 例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。 阅读全文
posted @ 2016-03-10 16:05 sweat123 阅读(353) 评论(0) 推荐(0)
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050 对于普通的数组,只要求一次最大子段和即可。但是这题是可以循环的,所以要另外分析。 1:最大的值在原数组中间部分。 2:最大值是结尾部分和开头部分。(如果要循环,就是这 阅读全文
posted @ 2016-03-09 18:55 sweat123 阅读(368) 评论(0) 推荐(0)
摘要:费马小定理:假定p是素数,并且a与p互质,a^(p-1) = 1(mod p); 即:a的p-1次方除以p余数为1。 可以解决除法取mod的情况。 b^(m-1) = 1(mod m) => b*(b^(m-2)) = 1(mod m); || || \/ \/ a/b = a/b * b*b^(m 阅读全文
posted @ 2016-03-08 09:11 sweat123 阅读(302) 评论(0) 推荐(0)
摘要:树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡. 处理处每个节点的孩子有几个,和树的大小就好了。 阅读全文
posted @ 2016-02-28 11:23 sweat123 阅读(229) 评论(0) 推荐(0)
摘要:设s-t是这棵树的直径,那么对于任意给予的一点,它能够到达的最远的点是s或者t。 这样我们可以通过2次bfs找到树的直径了。 阅读全文
posted @ 2016-02-28 10:36 sweat123 阅读(239) 评论(0) 推荐(0)
摘要:比较直接。 阅读全文
posted @ 2016-02-19 15:02 sweat123 阅读(161) 评论(0) 推荐(0)
摘要:比较直接的题目,入门一下。 阅读全文
posted @ 2016-02-10 23:54 sweat123 阅读(217) 评论(0) 推荐(0)
摘要:学习博客: http://noalgo.info/476.html 讲的很清楚! 对于一颗树,dfs遍历时,先向下遍历,并且用并查集维护当前节点和父节点的集合。这样如果关于当前节点(A)的关联节点(B)(及要求的最近祖先的另一个点)之前被访问过,那么 B可定已经属于一个集合,先前对于访问过的点,已经 阅读全文
posted @ 2016-02-10 23:53 sweat123 阅读(141) 评论(0) 推荐(0)
摘要:比较基本的操作。 阅读全文
posted @ 2016-02-04 15:59 sweat123 阅读(303) 评论(0) 推荐(0)
摘要:好题,错了不知道多少遍。这题其他几个操作都是比较经典的,多了一个最大子序列的。这时候对于当前的区间,最大子序列,可能使左区间的最值,可能是右区间的最值,也可能是整个区间的。所以维护lx[],rx[],mx[]。lx[rt] = max(lx[l],sum[l]+key[rt]+max(0,lx[r] 阅读全文
posted @ 2016-02-02 23:14 sweat123 阅读(286) 评论(0) 推荐(0)
摘要:对于区间旋转使用lazy思想就能解决。然后对于区间搬移,先把a-1结点做根,b+1作为它的右孩子,这样ch[ch[root][1]][0]就是区间[a,b],现将他取出。 然后在将当前的树伸展,把c结点转到根,c+1作为它的右孩子,这样c+1结点的左孩子就是空的,直接将上次取出的作为c+1结点的做孩 阅读全文
posted @ 2016-01-19 10:39 sweat123 阅读(169) 评论(0) 推荐(0)
摘要:好题。我做了很久,学了大牛们的区间搬移。主要的代码都有注释。 阅读全文
posted @ 2016-01-18 20:14 sweat123 阅读(262) 评论(0) 推荐(0)
摘要:对于大神来说这题是水题。我搞这题花了快2天。 伸展树的优点有什么,就是树不管你怎么旋转序列是不会改变得,并且你要使区间反转,只要把第k大的点转到根结点,那么它的左子树就是要交换的区间[l,r),然后交换左右 子树就可以了(中序),根结点的位置就是i+siz[ch[root][0]],i是处理完的结点 阅读全文
posted @ 2016-01-18 09:26 sweat123 阅读(375) 评论(0) 推荐(0)
摘要:用splay做了一遍。 建树时是按照数列序号从小到大排好的,每个节点左子树的序号小于右子树的序号及这个节点本身。由于查询[l,r]要伸展l-1,r+1所以我们要多加2个结点,保证边界处理时不出问题。由于这样每次查找l-1时,要找的应该是l(r+1也是找r+2)。 阅读全文
posted @ 2016-01-17 09:52 sweat123 阅读(293) 评论(0) 推荐(0)
摘要:对于当天的营业额,你要找到之前的数和他差的绝对值最小的和。由于这个是不断在插入的,所以用伸展树来维护。 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 照着kuangbin大牛的代码敲下来的。 阅读全文
posted @ 2016-01-16 09:35 sweat123 阅读(231) 评论(0) 推荐(0)
摘要:学习的博客 网址:http://dongxicheng.org/structure/splay-tree/ http://blog.csdn.net/acm_cxlove/article/details/7815019 http://blog.csdn.net/leolin_/article/det 阅读全文
posted @ 2016-01-16 09:33 sweat123 阅读(204) 评论(0) 推荐(0)
摘要:树链剖分的第一题,易懂,注意这里是边。 阅读全文
posted @ 2016-01-15 20:03 sweat123 阅读(240) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页