分析:dp[i][j]表示当前为i长度,长度为k的后缀状态,有多少个串。考虑一下k和k+1长度的串是否为回文串即可

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <queue>
#include <set>
#define FRER() freopen("in.txt","r",stdin)
#define FREW() freopen("out.txt","w",stdout)
#define go int T;cin>>T;for(int kase=0;kase<T;kase++)
#define debug cout<<"****************"<<endl
#define lowbit(x) x&(-x)
#define eps 1e-6
#define mod 1000000007
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int maxn = 1 << 12;
ll dp[500][maxn];
bool ok[12][maxn];
int n,k;
bool OK(int st,int len){len--;for(int i=0;i<=len/2;i++){if(((st&(1<<i))>0)!=((st&(1<<(len-i)))>0)) return false;}return true;
}
ll dfs(int len,int st,int st2){ll& ans = dp[len][st];if(~ans) return ans;if(len == n) return ans = 1;ans = 0;for(int i=0;i<=1;i++){int newst = st<<1|i;if(ok[k][newst]) continue;//长度为Kif(len>=k&&ok[k+1][st2<<1|i]) continue;//长度为K+1newst=st&(~(1<<(k-1)));newst<<=1;newst|=i;ans += dfs(len+1,newst,st<<1|i);ans %= mod;}return ans;
}
void solve(){if(k>n){printf("%lld\n",(ll)(1<<n)%mod);return;}ll ans = 0;memset(dp, -1, sizeof(dp));for(int i=0;i<(1<<(k-1));i++){ans += dfs(k-1, i,0);ans %= mod;}printf("%lld\n",ans);return;
}
int main(){//FRER();//FREW();for(int i=0;i<maxn;i++) for(int j=1;j<=11;j++) ok[j][i] = OK(i,j);//cout<<ok[1][1]<<" "<<ok[1][0]<<" "<<ok[2][2]<<" "<<ok[2][3]<<endl;go{scanf("%d%d",&n,&k);solve();}return 0;
}

UVA 1633 Dyslexic Gollum (状压dp)相关推荐

  1. UVa 1633 Dyslexic Gollum(状压DP)

    题意 求有多少长度等于N(N≤400)N(N\leq 400)N(N≤400)的∑={0,1}\sum = \{0,1\}∑={0,1}字符串里面不包含长度大于等于k(k≤10)k(k \leq 10 ...

  2. UVA - 1252 Twenty Questions (状压dp+vis数组加速)

    有n个物品,每个物品有m个特征.随机选择一个物品让你去猜,你每次可以询问一个特征的答案,问在采取最优策略时,最坏情况下需要猜的次数是多少. 设siz[S]为满足特征性质集合S的特征的物品总数,dp[S ...

  3. UVA 1633 Dyslexic Gollum

    有一定难度的一道动态规划的题目.这个题目首先计算palindrom[i][j],其中i表示对应的数据的位数,j表示相应的数据,palindrom[i][j]中记录的就是i位二进制位表示的数据j是否为回 ...

  4. UVA - 1633 Dyslexic Gollum 状态压缩

    问题 输入N,K(N<=400,K<=10),求长度为N且不含有长度至少为K的连续回文子串的01字符串有多少个? 分析 输入k,要判断k,k+1的情况,因为一个字符串有长度为k的回文子串, ...

  5. 【UVa】【DP】1633 Dyslexic Gollum

    UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...

  6. 状压DP UVA 10817 Headmaster's Headache

    题目传送门 1 /* 2 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 3 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][ ...

  7. UVa 11825 (状压DP) Hackers' Crackdown

    这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...

  8. 状压DP学习总结 (详解,适合没状压dp基础的人学习,还在更新中,,,,)

    本次博客,主要是给学弟学妹们讲解一下状压dp,不适合有基础的同学观看,可能会浪费时间,因为偏基础 先来最简单的一个吧   http://acm.hdu.edu.cn/showproblem.php?p ...

  9. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

最新文章

  1. 201312-2_ISBN号码
  2. nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
  3. metainfo可以设置说明_Vs Code安装说明及入门操作
  4. xx云网络实施方案案例
  5. AD9371官网汇总
  6. PropertyUtils.copyProperties 属性值复制失败
  7. 海康RTSP客户端连接深入分析
  8. 记录一个可以word,xls,PDF互转思维导图的工具
  9. GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
  10. 51单片机学习:蜂鸣器实验
  11. 职场中的你有危机感吗?在职提升来社科院与杜兰大学金融管理硕士项目
  12. IT博客大赛——我的写博历程和拉票方法
  13. 【QScrollBar | QSlider | QDial | QProgressBar | QLCDNumber】
  14. php 五舍六入,Golang浮点型的默认舍入规则——四舍六入五成双
  15. 支撑 100Gbit/s K8s 集群的未来网络数据平面
  16. python培训班课程大纲_Python课程大纲
  17. 小布老师-PL_SQL(第六讲)
  18. 系统映像还原失败 找不到可用于恢复系统盘的磁盘
  19. abstract 和 唯一标示符
  20. 【自定义CPU占用率】

热门文章

  1. android Matrix的invert实现
  2. rtl8188 wifi模块设置
  3. 基于matlab的船体三维模型仿真
  4. runas自动输入密码普通用户以管理员权限自动安装软件
  5. 中小企业的四个数据存储方法和措施
  6. 火狐OS手机操作系统
  7. 悼念512汶川大地震遇难同胞——来生一起走
  8. TCP/UDP端口连接测试
  9. mysqldump导出数据库视图_mysqldump导出视图数据库
  10. “人、机、料、法、环、测”