UVA 1633 Dyslexic Gollum (状压dp)
分析: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)相关推荐
- 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 ...
- UVA - 1252 Twenty Questions (状压dp+vis数组加速)
有n个物品,每个物品有m个特征.随机选择一个物品让你去猜,你每次可以询问一个特征的答案,问在采取最优策略时,最坏情况下需要猜的次数是多少. 设siz[S]为满足特征性质集合S的特征的物品总数,dp[S ...
- UVA 1633 Dyslexic Gollum
有一定难度的一道动态规划的题目.这个题目首先计算palindrom[i][j],其中i表示对应的数据的位数,j表示相应的数据,palindrom[i][j]中记录的就是i位二进制位表示的数据j是否为回 ...
- UVA - 1633 Dyslexic Gollum 状态压缩
问题 输入N,K(N<=400,K<=10),求长度为N且不含有长度至少为K的连续回文子串的01字符串有多少个? 分析 输入k,要判断k,k+1的情况,因为一个字符串有长度为k的回文子串, ...
- 【UVa】【DP】1633 Dyslexic Gollum
UVa 1633 Dyslexic Gollum 题目 ◇题目传送门◆(由于UVa较慢,这里提供一份vjudge的链接) ◇题目传送门(vjudge)◆ 题目大意 输入正整数N,KN,KN,K,求长度 ...
- 状压DP UVA 10817 Headmaster's Headache
题目传送门 1 /* 2 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 3 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][ ...
- UVa 11825 (状压DP) Hackers' Crackdown
这是我做状压DP的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的. 题意: 有编号为0~n-1的n台服务器,每台都运行着n中服务,每台服务器还和若干台其他服 ...
- 状压DP学习总结 (详解,适合没状压dp基础的人学习,还在更新中,,,,)
本次博客,主要是给学弟学妹们讲解一下状压dp,不适合有基础的同学观看,可能会浪费时间,因为偏基础 先来最简单的一个吧 http://acm.hdu.edu.cn/showproblem.php?p ...
- POJ 1038 Bugs Integrated Inc (复杂的状压DP)
\(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...
最新文章
- 201312-2_ISBN号码
- nvarchar(2048)能写多少个字符_我的拼多多店一个标题能带来多少的免费流量?三个字“非常多”...
- metainfo可以设置说明_Vs Code安装说明及入门操作
- xx云网络实施方案案例
- AD9371官网汇总
- PropertyUtils.copyProperties 属性值复制失败
- 海康RTSP客户端连接深入分析
- 记录一个可以word,xls,PDF互转思维导图的工具
- GNSS说第(七)讲---自适应动态导航定位(七)---抗差估计理论介绍
- 51单片机学习:蜂鸣器实验
- 职场中的你有危机感吗?在职提升来社科院与杜兰大学金融管理硕士项目
- IT博客大赛——我的写博历程和拉票方法
- 【QScrollBar | QSlider | QDial | QProgressBar | QLCDNumber】
- php 五舍六入,Golang浮点型的默认舍入规则——四舍六入五成双
- 支撑 100Gbit/s K8s 集群的未来网络数据平面
- python培训班课程大纲_Python课程大纲
- 小布老师-PL_SQL(第六讲)
- 系统映像还原失败 找不到可用于恢复系统盘的磁盘
- abstract 和 唯一标示符
- 【自定义CPU占用率】