2012年8月8日

摘要: 没想到今天firework会垫底,有种崩溃的感觉。最重要的原因是我带乱了全队的节奏。在被一道题卡住后,竟然一直拖到比赛结束,真是很失败。。自己今天状态不佳,思维迟钝也是个原因,归根结底是睡眠问题。另外懈怠也是很重要的原因。。 阅读全文
posted @ 2012-08-08 18:40 Lattexiaoyu 阅读(167) 评论(0) 推荐(0) 编辑

2012年8月6日

摘要: 先在这里推荐两篇不错的文章: HH大神的文章,代码和注释写的非常漂亮,很容易读懂: http://www.notonlysuccess.com/index.php/divide-tree/#more-142 MatoNo1的文章,建树的部分讲的挺细致的: http://www.cppblog.com/MatoNo1/archive/2011/06/27/149604.aspx 前几天的比赛遇到了要求区间第k大值的问题,听说要用划分树做,于是决定学习划分树去。在网上找了几篇文章看,慢慢弄清楚了划分树是怎么回事,在这里就只写写我自己的一些理解吧,算是一些补充,写的不清楚的还请见谅,或者参... 阅读全文
posted @ 2012-08-06 02:11 Lattexiaoyu 阅读(369) 评论(0) 推荐(0) 编辑

2012年7月17日

摘要: 转载请注明出处:http://www.cnblogs.com/luna-lovegood/archive/2012/07/17/2596501.html一个算术表达式,含有数字(为简化处理,数字只有一位),运算符:+、-、*,以及括号,求表达式的值。给出的表达式是一般我们见到的中缀表达式,即运算符位于操作数之间。如果把中缀表达式转化为后缀表达式,那么对后缀表达式求值将会很方便。后缀表达式特点: 1.操作符位于操作数之后; 2.没有括号; 3.运算符没有优先级。中缀表达式转化为后缀表达式的步骤: 1.初始化一个空操作符栈和空结果字符串; 2.从前到后读取中缀表达式的字符,如果是操作数,... 阅读全文
posted @ 2012-07-17 22:30 Lattexiaoyu 阅读(3093) 评论(3) 推荐(1) 编辑
摘要: 比赛地址:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9589#overviewA.SmoothVisualization[签到题] 直接模拟,注意下数只有一位的情况。C.Equivalence[表达式求值/后缀表达式] 给定两个表达式,含有数字、字符(‘a’~‘z’、‘A’~‘Z’)、+、-、*和括号()以及其他字符(其他字符如空格、tab等不处理),判断是否等价。 首先把中缀表达式转换成后缀表达式,再对后缀表达式求值。字符代如具体的值,如果值不同,则表达式不相等,如果相同则可能相同。可以多测几组值,如果值都相同则... 阅读全文
posted @ 2012-07-17 22:00 Lattexiaoyu 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数phi(n)表示1到n之间与n互素的整数的个数。对于一个整数a,如果gcd(a,n)==1,则aphi(n)==1(modn)。建设整数n可以分解为素数的乘积: n=p1^k1*p2^k2*...*pn^kn。 则phi(n)=(p1^k1-p1^(k1-1))*(p2^k2-p2^(k2-1))*...*(pn^kn-pn^(kn-1)) 还可以表示为: phi(n) = p1^(k1-1)*(p1-1)*p2^(k2-1)*(p2-1)*...*pn^(kn-1)*(pn-1) = n*((p1-1)*(p2-1)*...*(pn-1))/(p1*p2*..... 阅读全文
posted @ 2012-07-17 21:17 Lattexiaoyu 阅读(954) 评论(0) 推荐(0) 编辑
摘要: 线性方程:设a和b是两个整数,g=gcd(a,b)是a和b的最大公约数。求满足方程a*x+b*y=g的整数解x和y。 递归版:扩张欧几里德 在用欧几里德算法算a和b的最大公约数时,我们依次得到: a=q(1)*b+r(1) b=q(2)*r(1)+r(2) r1=q(3)*r(2)+r(3) ...... r(n-2)=q(n)*r(n-1)+r(n) 当r(n)为0时r(n-1)便是a和b的最大公约数g。我们在Euclid递归返回的过程中,构造解。 设第k-1层有: r(k-3)=q(k-1)*r(k-2)+r(k-1) 第k层有: r(k-2)=q(... 阅读全文
posted @ 2012-07-17 20:09 Lattexiaoyu 阅读(315) 评论(11) 推荐(0) 编辑

2012年7月15日

摘要: 参考: 1.CLRS《算法导论》 2.http://www.csh.rit.edu/~pat/math/quickies/rho/#algorithm Pollardrho方法是随机算法,《算法导论》上说是启发式方法。期望的时间为n的四次方根。关于rho的实现细节《算法导论》和参考2的文章有些不同。《算法导论》计算出x1,x2,x3,...,xk...序列,每个数xi都要参与验证,即计算gcd(xj-xi,n),foralli,其中xj是下标j满足小于等于i,且j为2的幂次的最大j对应的xj。参考2文章里也是要一次计算出x1,x2,x3,...,xk...序列,不过只对下标为偶数的i验证... 阅读全文
posted @ 2012-07-15 00:38 Lattexiaoyu 阅读(946) 评论(3) 推荐(0) 编辑

2012年7月13日

摘要: 拉宾-米勒素性测试(Miller-Rabin质数测试)(参考Silverman《数论概论》和Wikipedia)转载请注明出处:http://www.cnblogs.com/luna-lovegood/archive/2012/07/13/2590925.html Miller-Rabin素性测试是一个随机算法,它能以很高的概率指出某个数可能是素数,或者判定某个数一定不是素数。Miller-Rabin判定为合数是确定的,但是判决出是素数则是以大概率的。 Miller-Rabin测试的正确性或者叫有效性依赖于以下关于素数的一个性质: 设p是一个奇素数,a是与p互素的整数,p-1可以写为(2... 阅读全文
posted @ 2012-07-13 23:05 Lattexiaoyu 阅读(713) 评论(0) 推荐(0) 编辑
摘要: C.ColorfulRainbows[栈与单调性] N条直线,问有多少条直线能在某x处,其y坐标位于所有直线之上。首先预处理,斜率相同的直线只保留y轴截距最大的。对所有直线按斜率排序,按斜率由小到大处理直线。维护一个栈,当栈中至少有两条直线时,如果当前处理到的直线和栈顶直线的交点横坐标x1,比栈顶直线和栈顶前一条直线交点横坐标x2大,当前直线就入栈,否则栈顶直线出栈,并一直判断下去。最后栈中直线条数就是所求的值。有点卡精度。View Code 1 //zzy2012AC 2 #include<cstdio> 3 #include<cstring> 4 #include& 阅读全文
posted @ 2012-07-13 18:32 Lattexiaoyu 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 线性筛素数的基本思想是:每个合数只被筛一次,将被其最大因数筛掉。 假设我们依据flag数组从小到大判断每个数是否是素数,如果当前该数还未被筛掉,那么就是素数,因为在比它小的数中没有发现因数,将素数加入素数表中。对每一个数i(不论素数或合数),用它筛掉flag数组中以它为最大因数的数。因为每个数只去筛以它为最大因数的数,所以每个合数只会被一个数筛,就是它的最大因数,以此达到线性的复杂度。 假设当前的数是i。以i为最大因数的数是哪些呢?这些数必然是i乘上一个比它小的素数(如果该数是i乘上一个比它大的素数,显然i不会是该数的最大因数;如果是i乘上一个合数x=p1*p2*...*pk(pi为素... 阅读全文
posted @ 2012-07-13 10:41 Lattexiaoyu 阅读(575) 评论(2) 推荐(0) 编辑

2012年7月12日

摘要: 比赛地址:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9380#overviewD.DrawandScore N个点的最终排列是一棵完全二叉树,没证明,凭直觉。假设N个点排成的完全二叉树有k层,那么前k-1层是满二叉树,可以先算出满二叉树的score,再处理最后一层。具体方法画个草图不难看出规律。K.K-NeutralRectangles 求一个矩阵中最大的一个子矩阵的大小,子矩阵满足相邻元素之间的差的绝对值小于等于K。 一行一行处理,维护两个数组h[1000],b[1000],每处理一行更新一次两个数组。处理第i行... 阅读全文
posted @ 2012-07-12 23:54 Lattexiaoyu 阅读(253) 评论(0) 推荐(0) 编辑

2012年7月10日

摘要: Catalan数C(n),第一类Stirling数s(p,k),第二类Stirling数S(p,k)[卡特兰数,第一类斯特林数,第二类斯特林数]一.Catalan数C(n) C(n)的一个形象的例子是:2*n个括号,其中有n个前括号'('和n个后括号')',排成一列,满足所有括号都匹配的排列数。另一个例子是,n个1和n个-1,共2*n个数,排成一列,满足对所有0<=k<=2*n的前k个数的部分和Sk>=0的排列数。 C(n)的递推公式是C(n)= ∑(i=0:n-1){C(n-1-i)*C(i)} C(n)的通项公式是C(n)=(1/(n+1) 阅读全文
posted @ 2012-07-10 14:52 Lattexiaoyu 阅读(2062) 评论(0) 推荐(0) 编辑

2012年7月9日

摘要: 比赛地址: http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9231#overviewF.ChoirIII[最大子矩阵]ZOJ地址: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3616推荐一篇文章: http://www.cnblogs.com/fll/archive/2008/05/17/1201543.html 因为不能选值为负的格子,所以将所有值为负预处理为-INF。这样问题就变成:求一个矩阵的元素和最大的子矩阵,且满足至少b个boy,至少. 阅读全文
posted @ 2012-07-09 23:15 Lattexiaoyu 阅读(192) 评论(0) 推荐(0) 编辑

2012年7月8日

摘要: 比赛地址:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9193#overview昀昀大神的blog:http://www.mzry1992.com/blog/miao/uestc-summer-team-training-2.htmlD.AFamousStoneCollector[dp+组合计数] 给定n种颜色的石头,每种颜色有si颗,同种颜色的石头不区分。问能构成多少种不同的石头序列(不同的序列是指:1.石头数不同;2.石头数相同,至少一个位置的石头颜色不同) dp[i][j]表示:考虑前i种石头构成的长度为j的序列.. 阅读全文
posted @ 2012-07-08 23:55 Lattexiaoyu 阅读(213) 评论(0) 推荐(0) 编辑

2012年7月7日

摘要: A.BlockCompaction [线段树]题目地址: http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3850 http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=9158#problem/A 模拟压缩过程。对于向下压缩,先将矩形按y坐标排序,按排好的序将矩形向下移。用线段树保存区间最大值,此处对应区间最高点。 查询x到p区间的最大值,如果该矩形可 阅读全文
posted @ 2012-07-07 23:05 Lattexiaoyu 阅读(449) 评论(0) 推荐(0) 编辑

导航