CF 835D D. Palindromic characteristics 字符串hash
来源:互联网 发布:mac设置airdrop 编辑:程序博客网 时间:2024/05/22 02:41
题意。 定义k回文,一个是k回文的串
那么他本身是回文,并且左右相等,并且左右是k-1回文
问:一个S,所以字串分别是x回文?输出1----n回文的数目
思路:
直接暴力记忆化搜索!枚举判断就好了,回文和相等的条件都用hash判断就好了,注意下标问题!!!!尤其是回文时候的下标问题!!!
代码:
#include<bits/stdc++.h>using namespace std;#define MEM(a,b) memset(a,b,sizeof(a))#define PB push_back#define MP make_pair#define X first#define Y second#define bug puts("bug");typedef long long ll;typedef pair<ll,ll> pii;const double PI=acos(-1);const int maxn=1e6+10;int n;string s;int dp[5005][5005],ans[maxn],vis[5005][5005];const int MAXN = 50100;const unsigned long long SEED = 13331;unsigned long long P[MAXN],S[MAXN],RS[MAXN];unsigned long long HS(int l,int r){ if(l==r) return s[l]; ++l;++r; return S[r] - S[l-1]*P[r-l+1];}unsigned long long RHS(int l,int r){ if(l==r) return s[l]; l=n-l-1,r=n-r-1;swap(l,r); ++l;++r; return RS[r] - RS[l-1]*P[r-l+1];}void DFS(int l,int r){ if(vis[l][r]) return; vis[l][r]=1; if(l==r){ dp[l][r]=1; return; } int rr=(l+r-1)/2,ll=(l+r)/2+1; if(RHS(l,rr)==HS(ll,r)) dp[l][r]=1; DFS(l,rr);DFS(ll,r); if(dp[l][r]&&HS(l,rr)==HS(ll,r)) dp[l][r]=min(dp[ll][r],dp[l][rr])+1;}int main(){ P[0] = 1; for(int i = 1; i < MAXN; i++)P[i] = P[i-1] * SEED; cin>>s; MEM(vis,0);MEM(dp,0);MEM(ans,0); n=s.size(); RS[0]=S[0] = 0; for(int i = 1; i <= n; i++)S[i] = S[i-1]*SEED + s[i-1]; for(int i = 1; i <= n; i++)RS[i] = RS[i-1]*SEED + s[n-i]; for(int i=0;i<n;i++) for(int j=i;j<n;j++)DFS(i,j); for(int i=0;i<n;i++) for(int j=i;j<n;j++)ans[dp[i][j]]++; for(int i=n-1;i>=1;i--) ans[i]+=ans[i+1]; for(int i=1;i<=n;i++) printf("%d%c",ans[i]," \n"[i==n]); return 0;}
阅读全文
1 0
- CF 835D D. Palindromic characteristics 字符串hash
- Codeforces 835D-Palindromic characteristics
- Codeforces #835D: Palindromic characteristics 题解
- Codeforces 835 D Palindromic characteristics 区间dp
- Codeforces 835D Palindromic characteristics【区间Dp】
- 【回文串】835D Palindromic characteristics
- 【Codeforces 835 D. Palindromic characteristics】& 思维
- Codeforces 427Div2 D、835D Palindromic characteristics
- Codeforces 835 D Palindromic characteristics(区间DP)
- CF-333D- Characteristics of Rectangles
- Codeforces 835D Round #427 D-Palindromic characteristics—— DP+回文串
- codeforces.contest/835/problem/D Palindromic characteristics (记忆化搜索)
- Codeforces Round #427 (Div. 2) D. Palindromic characteristics dp
- Codeforces Round #427 (Div. 2) D.Palindromic characteristics
- CF D. DZY Loves Strings(字符串hash 暴力)
- CF271 D 字符串hash
- [数据结构-hash]CF 7D Palindrome Degree
- Codeforces Round #427 (Div. 2)C. Star sky 暴力D. Palindromic characteristics
- C语言之最好理解的通过函数指针作为参数实现回调函数
- ionic自动刷新
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- docker中使用redis
- Codeforces Round #427 (Div. 2) C. Star sky 二维前缀和
- CF 835D D. Palindromic characteristics 字符串hash
- JointJS流程图
- sudo用户配置
- 记录一次解决PHP返回数据被nginx截断的问题
- 统计下边这个长字符串中各个字符出现的次数并找到小甲鱼送给大家的一句话
- 完全二叉树的特点
- bugku Web4
- angularJS中显示数据-合并行
- RHCE——归档文件并在系统间复制文件