上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页
摘要: A 题: 越来越弱,都掉渣了....连暴力递归模拟都不会写了...对每个黑棋递归搜索其边界,若遇到相同的黑棋则数量+1继续找,遇到0或者边界则直接return.View Code #include<cstdio>#include<cstdlib>#include<cstring>char mp[110][110];bool flag;int n, m, dir[4][2] = {0,1,0,-1,1,0,-1,0};bool legal(int x,int y){ if( x>=0&&x<n&&y>=0&am 阅读全文
posted @ 2013-04-30 21:24 yefeng1627 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题意: 一个串s,经过多次被覆盖,求最小的原串s.思路: 将题目转换下,就是 一个串s的前缀能覆盖串r,且s本身是r的一个后缀. 做法是首先考虑s的前缀能够覆盖r, 则我们从串r开始, 依次比较,并且记录上一次完全匹配(长度与s相同)的位置idx.当出现ri != sj时,令 j = nxt[j], (这样做,而不是直接令J=0,是为了保证模式串最短),因为可能是从头开始的. 继续比较,直到 j = 0, 意味着无法匹配.则将上一次的完全匹配位置idx+1到 i,添加到模式串s中, 然后更新模式串的next函数,因为我们已经知道了. s( 1, length ),这个时候模式串变成 s(... 阅读全文
posted @ 2013-04-30 11:21 yefeng1627 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题意 求区间[a,b] 之间, x%f(x) = 0的数量, 其中f(x)表示x的数位和.解题思路: 转换成 F(A) = { x | x%f(x) = 0, 1 <= x <= A } , 然后结果即为 F(B)-F(A-1) 首先定义一个状态. dp( L, i, j, k ) 表示长度为L的数位和为i,其对j取模结果为k的方案数. 在同模j的情况下,则在该数后面增加一个x(0,9), 则得到 dp( L+1, i+x, j, (k*10+x)%j ). 那么转移方程就是: dp( L+1, i+x, j, (k*10+x)%j ) += dp( L, i, j, k ) .. 阅读全文
posted @ 2013-04-29 19:10 yefeng1627 阅读(315) 评论(0) 推荐(0) 编辑
摘要: kmp含义 克努斯-莫里斯-普拉特算法,一种字符串查找算法。 字符串算法主要是用于主串 S( s1,s2,s3,...,sn ), 模式串T( t1,t2,...,tm ), 之间的匹配问题. 相对与模式匹配O(n^2)而言:当 Si != Tj 失配时, 主串下标i不回溯, 而是将模式串下标j回溯到合适的地方,再继续比较 Tj ,Si.时间复杂度极端情况是 O(N*M), 但是一般情况下总能保证O(N+M). 假定串 S( i-j+1, i ) 与 模式串 T( 1, j ) 匹配时, Si != Tj 不匹配,此时需j最短回溯到 k, 则存在 T(1,k-1) = T( j-k... 阅读全文
posted @ 2013-04-28 20:41 yefeng1627 阅读(1222) 评论(0) 推荐(0) 编辑
摘要: 虽然题目只给了起点st,和终点ed, st,ed <= 10000.但是只有200条边,极端情况也才200条边对应的400个顶点都不一样.所以我们可以离散化顶点到[1,400]之间.然后跑个最大流即可.注意本题边是单向的.View Code #include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<map>using namespace std;const int inf = 0x3f3f3f3f;const int MAXN = 1 阅读全文
posted @ 2013-04-28 19:08 yefeng1627 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题意: 给一个数字x, x<=1e18, 求其分解成数个fib数相加的方案总数.其中fib数不能重复.解题思路: 首先一个结论: 任意一个数,都能被分解成 数个fib数相加的形式. 另外, 在区间 [1,1e18]总共有 88个fib数. 对于一个数 x, 我们用一个长度为88的01序列来唯一表示.当前位为1则表示取,否则不取 例如 8: 00000100...0 2: 00100...0 3: 0110...0 从高位到低位. 根据 fib_i = fib_i-1 + fib_i-2 . 对于一个序列 001, 其能够被 110 替换. 我们可以总结出. 当前位为... 阅读全文
posted @ 2013-04-28 18:56 yefeng1627 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题意: 有N(n<=1000)个数 a1,a2,..,an, ai <= 10^15, 取其中部分组合相乘的到数是一个完全平方数.求方案总数.其中保证 ai 不包含大于500的质因子.解题思路: 解决本题需要有,线性代数基础. 涉及到关于矩阵的初等变换与高斯消元.求解齐次方程. 首先考虑,一个数 x = p1^e1 * p2^e2 * ... * pn^en 若其是一个完全平方数,则 所有的 ei % 2 == 0 . 另外. 取部分数相乘. 例如三个数 ai*aj*ak = x ,此时我们只关心的是其对应的质因子的幂皆为偶数. 所以对于 ai = p1^e1 * p2^e2 * 阅读全文
posted @ 2013-04-28 17:08 yefeng1627 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 解题思路: 首先考虑题目数据大小范围, 总共9个不同数字的全排列, 9! = 3*10^5 假设N = 9!, 意味着,拼图的状态有N种, 将其看成顶点.[1,N] 则因为每次只能够移动0, 且每次只能向四个方向移动,则意味着每个顶点至多有四条边.且每条边的长度为1. 假定序列 (876543210) 目标序列, 其编号为 st, 则我们可以通过求 单源点的最短路. 求出从st出发到其他顶点v的最短距离 dis[v]. 那么对于T次询问操作. 我们只需要O(1)的时间 输出dis[v]就可以了. 另外还有个问题就是. 对于 (0,1,..,8)的全排列,如何唯一编号.这里就用到... 阅读全文
posted @ 2013-04-28 16:27 yefeng1627 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 题意: 两个都含有N个元素的数组a,b, 求 a[i]+b[j] ( i , j < N ) 的前 M个最小值(M < N)解题思路: 假定a,b数组都有序,则我们有下面的结论: a_1 + b_1 <= a_1 + b_2 <= ... <= a_1 + b_n a_2 + b_1 <= a_2 + b_2 <= ... <= a_2 + b_n ... a_n + b_1 <= a_n + b_2 <= ... <= a_n + b_n 那么我们就可以得出一个 N*N 的矩阵.如下形式 A(1,1), A(1,2), ... 阅读全文
posted @ 2013-04-28 16:10 yefeng1627 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 题意: 统计长度为n的绳子,截成多个相似三角形,方案数思路: 先整体看此题, 设定一个函数 g(x), 表示周长为x的本质三角形(a,b,c),其 gcd( a,b,c ) = 1, 的数量 则我们可以知道, 对于长度为 n 的铁丝, 能拆成 n/d 个长度为 d的 本质三角形, d个点,d-1个空隙, 因为可以组合,这样得到的三角形两两相似, 方案数就是 g(d) * r^(n/d-1) . 大意就是利用最小单位的三角形来拼.d-1个空隙都有两个选择,取于不取,取则分开,不取则组成成一个大三角形,则最终结果为 \sum g(d) * r^( n/d-1 ) 其中 n%d = 0... 阅读全文
posted @ 2013-04-25 20:27 yefeng1627 阅读(468) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 20 下一页

Launch CodeCogs Equation Editor