Codeforces835D-Palindromic characteristics(DP)
来源:互联网 发布:广数螺纹编程格式 编辑:程序博客网 时间:2024/05/21 21:40
Palindromic characteristics of string s with length |s| is a sequence of |s| integers, where k-th number is the total number of non-empty substrings of s which are k-palindromes.
A string is 1-palindrome if and only if it reads the same backward as forward.
A string is k-palindrome (k > 1) if and only if:
- Its left half equals to its right half.
- Its left and right halfs are non-empty (k - 1)-palindromes.
The left half of string t is its prefix of length ⌊|t| / 2⌋, and right half — the suffix of the same length. ⌊|t| / 2⌋ denotes the length of string tdivided by 2, rounded down.
Note that each substring is counted as many times as it appears in the string. For example, in the string "aaa" the substring "a" appears 3 times.
The first line contains the string s (1 ≤ |s| ≤ 5000) consisting of lowercase English letters.
Print |s| integers — palindromic characteristics of string s.
abba
6 1 0 0
abacaba
12 4 1 0 0 0 0
In the first example 1-palindromes are substring «a», «b», «b», «a», «bb», «abba», the substring «bb» is 2-palindrome. There are no 3- and 4-palindromes here.
题意:
给出一个字符串,在其中找到1..k阶的回文子串并统计它们的数量。如果一个字符串是一个回文串,则它可以是1阶子串(k阶字符串,要求它的左边和右边都是k-1阶子串)
解题思路:
dp[i][j]用来记录这段字符串是几阶子串即可
#include<bits/stdc++.h>using namespace std;const int maxn = 5005;int dp[maxn][maxn], ans[maxn];char s[maxn];int main(){ while(scanf("%s", s+1) != EOF) { memset(dp, 0, sizeof(dp)); memset(ans, 0, sizeof(ans)); int len = strlen(s+1); for(int i = 1; i <= len; i++) { dp[i][i] = 1; ans[1]++; if(i < len && s[i] == s[i+1]) { dp[i][i+1] = 2; ans[2]++;ans[1]++; } } for(int j = 3; j <= len; j++) for(int i = 1; i+j-1 <= len; i++) if(dp[i+1][i+j-2] && s[i] == s[i+j-1]) { dp[i][i+j-1] = dp[i][i+j/2-1] + 1; for(int k = 1; k <= dp[i][i+j-1]; k++) ans[k]++; } for(int i = 1; i <= len; i++) printf("%d%c", ans[i], i == len ? '\n' : ' '); } return 0;}
- Codeforces835D-Palindromic characteristics(DP)
- Codeforces835D Palindromic characteristics
- CF835D Palindromic characteristics(dp)
- Codeforces 835 D Palindromic characteristics 区间dp
- Codeforces 835D Palindromic characteristics【区间Dp】
- Codeforces Round #427 (Div. 2) D. Palindromic characteristics dp
- Codeforces 835 D Palindromic characteristics(区间DP)
- CF427D(Div2) Palindromic characteristics
- codeforces835D
- 【Codeforces】Codeforces Round #427 (Div. 2) D. Palindromic characteristics DP回文串
- Codeforces Round #427 (Div. 2)D. Palindromic characteristics(DP+回文串)
- Codeforces 835D Round #427 D-Palindromic characteristics—— DP+回文串
- Codeforces Round #427 (Div. 2) D.Palindromic characteristics【DP、后缀和】
- Codeforces 835D-Palindromic characteristics
- Codeforces #835D: Palindromic characteristics 题解
- 【回文串】835D Palindromic characteristics
- 【Codeforces 835 D. Palindromic characteristics】& 思维
- 【XSY2534】【CF835D】Palindromic characteristics 回文自动机
- 新手学C++多线程编程(10)类行为和线程处理
- zigbee协议栈z-satack解读。
- [微信小程序]鼠标事件
- Js中非构造函数的继承(深拷贝浅拷贝)
- 介绍 redis-Bit-Map 的相关命令和常用场景
- Codeforces835D-Palindromic characteristics(DP)
- MongoDB 聚合操作
- imx6 Linux Kernl添加spidev的设备节点
- maven 配置windows环境变量
- 【HDU 6060 RXD and dividing】+ DFS
- 分清数学库与浮点运算
- Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$Ac
- 【51Nod】1085
- 奥威数据可视化平台Power-BI -RFM分析找出活跃客户