@vjudge
只要保证不出现长度为kkk或k+1k+1k+1的回文串就可以
状压保存最后kkk位的状态,每次转移时判断一下是否合理就好了

Code:

#include <bits/stdc++.h>
#define maxn 410
#define maxm 2010
#define qy 1000000007
using namespace std;
int power[25], n, m, dp[maxn][maxm];inline int read(){int s = 0, w = 1;char c = getchar();for (; !isdigit(c); c = getchar()) if (c == '-') w = -1;for (; isdigit(c); c = getchar()) s = (s << 1) + (s << 3) + (c ^ 48);return s * w;
}bool calc(int x, int y){ return !(x > 0 && y > 0 || x == 0 && y == 0); }bool check(int x, int y){int flag = 0;if (calc(x & power[m - 1], y)) flag = 1;if (!flag)for (int i = m - 1; i; --i)if (calc(x & power[i - 1], x & power[m - i - 1])){ flag = 1; break; }return flag;
}bool check1(int x, int y){int flag = 0;if (calc(x & power[m - 2], y)) flag = 1;if (!flag){for (int i = m - 2; i; --i)if (calc(x & power[i - 1], x & power[m - 1 - i - 1])){ flag = 1; break; }}return flag;
}int main(){int Q = read();power[0] = 1;for (int i = 1; i <= 20; ++i) power[i] = power[i - 1] << 1;
//  m = 3; printf("%d\n", check1(2, 1));while (Q--){n = read(), m = read();if (m < 2){ puts("0"); continue; }//   printf("%d\n", ((2 << 1) | 1) & (power[m] - 1));for (int i = 1; i <= n; ++i)for (int j = 0; j <= power[m] - 1; ++j) dp[i][j] = 0;dp[1][0] = dp[1][1] = 1;for (int i = 1; i < n; ++i)for (int j = 0; j <= power[min(m, i)] - 1; ++j){//    printf("modest%d\n", dp[i][j]);for (int k = 0; k <= 1; ++k)if (i < m - 1 || (i == m - 1 && check1(j, k)) || i >= m && check1(j, k) && check(j, k)){if ((dp[i + 1][((j << 1) | k) & (power[m] - 1)] += dp[i][j]) >= qy)dp[i + 1][((j << 1) | k) & (power[m] - 1)] -= qy;
//                      printf("dp[%d][%d]=%d\n", i + 1, ((j << 1) | k) & (power[m] - 1), dp[i + 1][((j << 1) | k) & (power[m] - 1)]);}}int ans = 0;for (int i = 0; i < power[min(m, i)]; ++i) if ((ans += dp[n][i]) >= qy) ans -= qy;printf("%d\n", ans);}return 0;
}

【题解】UVA1633:Dyslexic Gollum相关推荐

  1. 【UVa】【DP】1633 Dyslexic Gollum

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

  2. 禁止的回文子串 Dyslexic Gollum

    UVA1633 一个长的回文串都可以由短的回文串拓展而来,只要短的回文在左右两端增加相同的字符即可.因此,在考虑长度为NNN的01串时,只要在从长度为1向NNN拓展的过程中,保证后KKK个字符不是回文 ...

  3. 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 ...

  4. SPOJ AMR12E Dyslexic Gollum 解题报告

    题目 Summer Training 06 - Amritapuri 2012 总结 题意: 在所有长度为n的01串中,不包含长度大于等于K的回文字串的串有多少个. 题解: 注意到K非常小,所以可以用 ...

  5. UVA 1633 Dyslexic Gollum (状压dp)

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

  6. Dyslexic Gollum

    题意: 求长度是n的二进制串中,不含长度大于等于k的回文串的个数 分析: dp[i][j][k]表示长度i,后11位状态是j不含长度大于等于k的回文串的个数(因为k最大是10,所把后11位状态压缩,d ...

  7. UVA 1633 Dyslexic Gollum

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

  8. SPOJ AMR12E Dyslexic Gollum

    AC自动机+DP.题目要求是生成一个长度为n的 0-1 串,其中最长回文子串的长度小于 k ( 1 <= k <= 10).因为k长度只有10,所以我们可以先预处理出长度小于11的所有回文 ...

  9. UVA - 1633 Dyslexic Gollum 状态压缩

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

最新文章

  1. 一文带你入门图论和网络分析(附Python代码)
  2. 【三次优化】剑指 Offer 35. 复杂链表的复制
  3. Fiori Elements value help selection pass back
  4. java gsoap_gsoap c与java web之间传输字符串中文乱码问题 | 学步园
  5. Android之应用APN、WIFI、GPS定位小例子
  6. matlab求零空间,matlab求矩阵的零空间的一组整数基,该怎样操作?
  7. ARM 汇编语言入门
  8. linux 系统盘无法ls,系统故障排除
  9. 书籍《循环经济之道》-观后感-2021年12月
  10. 荣耀v30搭载鸿蒙,荣耀30和V30系列首批搭载Magic UI 4.0,可升鸿蒙2.0
  11. 关闭腾讯QQ游戏后跳出的广告
  12. python系列教程176——函数调用
  13. CREO图文教程:三维设计案例之水龙头的螺旋弹簧设计图文教程之详细攻略
  14. vue项目实现文字转换成语音播放功能
  15. 26. 平衡二叉排序树
  16. 怎么将欧姆龙PLC数据转OPC UA
  17. 蒙特卡罗方法(Monte Carlo)
  18. 到底什么是嵌入式?什么是单片机?
  19. 关于良率:交期延误、报废补料、不做退款都是什么情况?
  20. 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限

热门文章

  1. 微信公众平台昵称乱码emoji表情过滤
  2. 小记:Comparator Comparable
  3. RabbitMQ实现消息的延迟推送或延迟发送
  4. 服务器群 密码定期修改,服务器密码设置定期修改密码
  5. git-16-删除标签
  6. spring AOP注解失效原因
  7. VS代码中文注释下有红色波浪线解决办法
  8. ServiceNow - 更改列表默认每页显示记录数(Change List Default Row-Count PerPage)
  9. android 平板 切换任务管理器,看谁分身有术 三大平板系统多任务横评
  10. 《百面机器学习》第零问:什么是特征工程?什么是结构化数据?什么是非结构化数据?