#P10593. BZOJ2958 序列染色

    ID: 12074 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度普及+/提高− 上传者: 标签>动态规划 DPO2优化

BZOJ2958 序列染色

背景

题目来自原 BZOJ,我们承认题面及原数据的版权均属于原 BZOJ 或将题目授权给 BZOJ 使用的出题人。如果您是版权所有者且认为我们侵犯了您的权益,可联系我们。

题目描述

给出一个长度为 nn,由 B,W,X\tt B,W,X 三种字符组成的字符串 SS,你需要把每一个 X\tt X 染成 B\tt B 或 W\tt W 中的一个。

对于给出的 kk,问由多少种染色方式,使得存在整数 a,b,c,da,b,c,d 满足:

  • 1≤a≤b<c≤d≤n1\leq a\leq b<c\leq d\leq n;
  • b=a+k−1b=a+k-1,d=c+k−1d=c+k-1;
  • Sa=Sa+1=⋯=Sb=BS_a=S_{a+1}=\dots=S_b=\tt B;
  • Sc=Sc+1=⋯=Sd=WS_c=S_{c+1}=\dots=S_d=\tt W;

由于方法可能很多,你只需输出最后的答案对 109+710^9+7 取模的结果。

输入格式

第一行输入两个正整数 n,kn,k;

第二行输出一个长度为 nn 的字符串 SS。

输出格式

输出一行,包含一个整数,表示答案。

5 2
XXXXX
4

提示

对于 20%20\% 的数据,1≤n≤201\leq n\leq 20;

对于 50%50\% 的数据,1≤n≤20001\leq n\leq 2000;

对于 100%100\% 的数据,1≤n,k≤1061\leq n,k\leq 10^6。