摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=4291 一道矩阵快速幂的题目,给出递推关系,求目标函数的值。 对递推的题比较陌生,刚开始的时候直接将快速幂套进去,过了sample以后就果断交上去了,没想到居然wa了。搞了一段时间,认真检查了代码无数次,还是找不到问题。 然后突然被我想到一个相当大的问题。在直接暴力算的时候,算出一层的结果是已经取模以后的结果,可是题目要的是最终结果取模,如果直接套进去算就会发生偏差。对于最外面一层的的结果模10^9+7,我们需要找到这一层的循环节,曾而降低里面那层得到结果的数据规模。暴力打表,得出最外面一层的循环节大小... 阅读全文
摘要:
http://poj.org/problem?id=1200 字符串搜索,要将字符串之前搜索过的字符串用一个数来映射储存。这里的字符串长达16*10^6,所以不能hash储存,就连下标都不能存下来,所以这里不能用KR算法,因为KR算法要在找到相同以后还要再逐个比较。 这题的数据也比较水,m^n<10^7,所以可以直接开bool数组来记录字符串是否出现!代码如下:View Code 1 #include <cstring> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <algorithm& 阅读全文
摘要:
http://poj.org/problem?id=1150 一道题意相当简单的数论题,求P(n,m)的最后一个非零位的数字,其中0≤m≤n≤2*10^7。直接暴力大数运算是会超时的,这里要用到一些数论的知识。 引用一下wyh师兄的解释:http://www.cppblog.com/wyh123/archive/2011/08/06/152621.html 排列公式:P(n,m)=n!/(n-m)! 将一个数2和5的因子都分离出来,最后这个数就会变成个位是1,3,7,9的数。其中,个位是1的数不会影响到最后一位非零数字。于是,我们就要统计那个区间内,将2和5两种因子的数去掉以后的那些数... 阅读全文