传送门

题解给出了一个很强势的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. EclipseIDE设置

    对于新安装的Eclipse而言要设置: 1.Window-Preferences-General-Workspace,然后分别设置Text file encoding为UTF-8和设置New text ...

  2. mysql-5.7.17.msi安装

    mysql-5.7.17.msi安装,跟着截图摩擦,一步一步是爪牙,是魔鬼的步伐 开始: 可以创建其他用户 我自己改了日志名

  3. 入门级Nginx反向代理nodejs

    本着想实现前后端分离开发的初衷,我决定学习一下关于nignx反向代理的配置. 1.下载Nginx稳定版本 2.打开nginx配置文件 nginx.conf: 3.在http模块的server部分配置 ...

  4. es6 let和const命令(1)

    基本用法 ES新增了let命令,用于声明变量.其用法类似于var,但是所声明的变量只在let命令所在的代码块中有效. for(let i = 0;i<5;i++) {} console.log( ...

  5. 字符串MD5加密运算

    public static string GetMd5String(string str)       {           MD5 md5 = MD5.Create();           by ...

  6. PHP按行读取文件 去掉换行符"\n"

    第一种: $content=str_replace("\n","",$content); echo $content; 或者: $content=str_rep ...

  7. Python学习_06_文件、IO

    文件对象 python中的文件操作和c语言比较类似,包括一些缓冲.偏移量的方式. 文件对象可以通过open().file()两个内建方法创建,两个方法并没有什么不同,使用方法和c语言中的fopen() ...

  8. Selectize使用总结

    一.简介 Selectize是一个可扩展的基于jQuery 的自定义下拉框的UI控件.它对展示标签.联系人列表.国家选择器等比较有用.它的大小在~ 7kb(gzip压缩)左右.提供一个可靠且体验良好的 ...

  9. MicroPython-GPRS教程之TPYBoardv702GPRS功能测试

    一.什么是TPYBoardV702 TPYBoardV702是目前市面上唯一支持通信通信功能的MicroPython开发板:支持Python3.0及以上版本直接运行.支持GPS+北斗双模通信.GPRS ...

  10. eclipse环境下日志打印输出

    1.先将jdk配置一下 选Preferences---- 找到自己的jdk所在的位置 2.配置Tomcat window-----preferences------- 找到自己的tomcat所在位置 ...