2016年3月11日

codeforces 551D. GukiZ and Binary Operations 矩阵快速幂

摘要: 题目链接 知道k值之后, 那么每一位的值也就可以确定了。 如果这一位是0, 那么就相当于相邻的两个数不能同时为1, 手推一下发现方法数是第N+1个fib数。 如果这一位是1, 就用2^n-为0的情况就好了。 因为n很大, 所以算fib应该用矩阵快速幂算。 构造一个(1 1)的矩阵就好。 (1 0) 阅读全文

posted @ 2016-03-11 21:59 yohaha 阅读(277) 评论(0) 推荐(0) 编辑

codeforces 149E . Martian Strings kmp

摘要: 题目链接 给一个字符串s, n个字符串str。 令tmp为s中不重叠的两个连续子串合起来的结果, 顺序不能改变。问tmp能形成n个字符串中的几个。 初始将一个数组dp赋值为-1。 对str做kmp, 然后与串s进行匹配, 看哪些长度的串可以匹配到, 比如说匹配到了长度为j的串, 那么dp[j] = 阅读全文

posted @ 2016-03-11 15:36 yohaha 阅读(237) 评论(0) 推荐(0) 编辑

codeforces 245H . Queries for Number of Palindromes 区间dp

摘要: 题目链接 给一个字符串, q个询问, 每次询问求出[l, r]里有多少个回文串。 区间dp, dp[l][r]表示[l, r]内有多少个回文串。 dp[l][r] = dp[l+1][r]+dp[l][r-1]-dp[l+1][r-1]+flag[l][r], 如果是回文串flag[l][r]为1。 阅读全文

posted @ 2016-03-11 09:25 yohaha 阅读(183) 评论(0) 推荐(0) 编辑

codeforces 292E. Copying Data 线段树

摘要: 题目链接 给两个长度为n的数组, 两种操作。 第一种, 给出x, y, k, 将a[x, x+k-1]这一段复制到b[y, y+k-1]。 第二种, 给出x, 输出b[x]的值。 线段树区间更新单点查询, 第一种操作, 就将线段树的[y, y+k-1]这一段赋值为i, i是第i个询问, 并将这个询问 阅读全文

posted @ 2016-03-11 08:58 yohaha 阅读(278) 评论(0) 推荐(0) 编辑

导航