传送门

题解给出了一个很强势的dp:

i<K

$$dp[i][len]*Fib[len+2-(t[i]==1)] -> dp[i+1][len]$$

$$dp[i][len]*Fib[len+1-(t[i]==1)] -> dp[i+1][len+1]$$

i>=K

$$dp[i][len]*Fib[len+2-(t[i]==1)-(s[i]==1)] -> dp[i+1][len]$$

其中K是s的前导0个数

意思是单独考虑每一位,相邻两个不能同时为1,方案数是斐波那契数,然后就直接搞了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define MN 5001
using namespace std; const int MOD=;
int T,n,dp[MN][MN],k,F[MN],MMH;
char s[MN],t[MN];
int main(){
F[]=;F[]=;
for (int i=;i<=;i++) F[i]=F[i-]+F[i-],F[i]-=F[i]>=MOD?MOD:;
scanf("%d",&T);
while (T--){
scanf("%s%s",s,t);MMH=;
n=strlen(s);k=;
while (s[k]=='') k++;
for (int i=;i<n;i++)
for (int j=;j<=n;j++) dp[j][i]=;
dp[][]=;
for (int i=;i<n;i++){
for (int j=;j<k;j++){
dp[j+][i]=(1LL*dp[j][i]*F[i+-(t[j]=='')]+dp[j+][i])%MOD;
dp[j+][i+]=(1LL*dp[j][i]*F[i+-(t[j]=='')]+dp[j+][i+])%MOD;
}
for (int j=k;j<n;j++) dp[j+][i]=(1LL*dp[j][i]*F[i+-(t[j]=='')-(s[j]=='')]+dp[j+][i])%MOD;
(MMH+=dp[n][i])%=MOD;
}
printf("%d\n",MMH);
}
}

codechef [snackdown2017 Onsite Final] AND Graph的更多相关文章

  1. codechef [snackdown2017 Onsite Final] Fusing Weapons

    传送门 题目描述 大厨最近迷上了一款勇者斗恶龙的游戏. 游戏每局开始前,会有 N 件武器摆成一圈.每件武器有一个整数的等级.大厨可以选择两件 相邻的等级相同(不妨设同为 A 级)的武器,将它们合成.这 ...

  2. codechef [snackdown2017 Onsite Final] Minimax

    传送门 题目描述 考虑一个 N 行 N 列的网格,行列编号均为 1 ∼ N.每个格子中包含一个整数.记 ri 为第 i 行的最小值,Ci 为第 i 列的最大值.我们称一个网格为好的,当且仅当满足:$$ ...

  3. CodeChef Counting on a directed graph

    Counting on a directed graph Problem Code: GRAPHCNT All submissions for this problem are available. ...

  4. 可视化工具solo show-----Prefuse自带例子GraphView讲解

    2014.10.15日以来的一个月,挤破了头.跑断了腿.伤透了心.吃够了全国最大餐饮连锁店——沙县小吃.其中酸甜苦辣,绝不是三言两语能够说得清道的明的.校招的兄弟姐妹们,你们懂得…… 体会最深的一句话 ...

  5. Falcon Genome Assembly Tool Kit Manual

    Falcon Falcon: a set of tools for fast aligning long reads for consensus and assembly The Falcon too ...

  6. 记一次亲身踩过的hibernate的bug

    记一次亲身踩过的hibernate的bug 在写实体类时,经常会对域增加校验,例如@NotNull表示哪个字段不能为空,昨天晚上调试代码,就遇到了问题, @Entity public class Ap ...

  7. 如何用kaldi做孤立词识别-初版

    ---------------------------------------------------------------------------------------------------- ...

  8. Dominator Tree & Lengauer-Tarjan Algorithm

    问题描述 给出一张有向图,可能存在环,对于所有的i,求出从1号点到i点的所有路径上的必经点集合. 什么是支配树 两个简单的小性质—— 1.如果i是j的必经点,而j又是k的必经点,则i也是k的必经点. ...

  9. 退役前的最后的做题记录upd:2019.04.04

    考试考到自闭,每天被吊打. 还有几天可能就要AFO了呢... Luogu3602:Koishi Loves Segments 从左向右,每次删除右端点最大的即可. [HEOI2014]南园满地堆轻絮 ...

随机推荐

  1. 《Office 365 开发入门指南》公开邀请试读,欢迎反馈

    终于等来了这一天,可以为我的这本新书画上一个句号.我记得是在今年的2月份从西雅图回来之后,就萌发了要为中国的Office 365开发人员写一些东西并最终能帮到更多中国用户的想法,而从2月26日正式写下 ...

  2. JaveScript用二分法与普通遍历(冒泡)

    二分法 查找 概念: 从有序的数列中,折半查找. 思路: --> 找到数组中最中间的元素,将其作为基准 --> 从0开始判断数组中的元素,与基准进行比较 --> 比基准小的元素,存入 ...

  3. 垃圾回收机制GC知识再总结兼谈如何用好GC(转)

    作者:Jeff Wong 出处:http://jeffwongishandsome.cnblogs.com/ 本文版权归作者和博客园共有,欢迎围观转载.转载时请您务必在文章明显位置给出原文链接,谢谢您 ...

  4. vue vuex vue-rouert后台项目——权限路由(超详细简单版)

    项目地址:vue-simple-template共三个角色:adan barbara carrie 密码全是:123456 adan 拥有 最高权限A 他可以看到 red , yellow 和 blu ...

  5. VM环境下Linux虚拟机扩展存储空间操作方法总结

    用VMwareware虚拟机安装的 Linux 系统剩余空间不足,造成软件无法正常安装.如果重新装一遍系统就需要重新配置好开发环境和软件的安装配置. 一.空间扩展  (1)打开VMware,选择Edi ...

  6. bzoj 4289: PA2012 Tax

    Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边 ...

  7. Python学习(三):迭代器、生成器、装饰器、递归、算法、正则

    1.迭代器 迭代器是访问集合的一种方式,迭代对象从集合的第一个元素开始访问,直到元素被访问结束,迭代器只能往前不能后退,最大的优点是不要求事先准备好整个迭代过程中的元素,这个特点使得它特别适合用于遍历 ...

  8. ES6 字符串的扩展

    字符的Unicode表示法 JavaScript允许采用\uXXXX形式表示一公分字符,其中XXXX表示字符的码点. "\u0061" //"a" 但是,这种表 ...

  9. Webpack 2 视频教程 018 - 使用可视化图表进行统计分析打包过程

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  10. ASP.NET如何通过后台数据库提供的链接播放视频(不使用外置插件)

    1.后台视频数据库: 2.aspx中的关键代码: <asp:DataList ID="DataList2" runat="server" DataKeyF ...