Codeforces Round #427 (Div. 2)D. Palindromic characteristics(DP+回文串)
来源:互联网 发布:lena藤井莉娜的淘宝店 编辑:程序博客网 时间:2024/05/21 22:39
传送门
题意:
给一个字符串,问其中每一个回文子串的总价值。
回文子串的价值,定义:
1、如果是回文的则价值为1;
2、如果左半个回文部分的价值为k-1,则当前子串的价值为k。
思路:
1、dp[i][j]表示从第i个字符到第j个字符的子串价值,num[i]表示价值为i的子串的个数;
2、先枚举长度1、2的价值,再通过dp[i+1][j-1]尝试更新dp[i][j]的值;
3、由于子串的值可以累加,则还需对num[i]进行处理。
#include <bits/stdc++.h>using namespace std;#define N 5005int dp[N][N];char s[N];int num[N];int main(){ scanf("%s",s); int n = strlen(s); for(int i=0;i<n;i++){ dp[i][i] = 1; } num[1] = n; for(int i=1;i<n;i++){ if(s[i]==s[i-1]) num[2]++,dp[i-1][i] = 2; //在单独枚举长度为2 } for(int i=2;i<n;i++){ for(int j=0;j+i<n;j++){ if(!dp[j+1][j+i-1]) continue; //如果不枚举长度2 则当 i==1 时 dp[j+1][j+1-1] 为 dp[j+1][j] if(s[j]!=s[j+i]) continue; dp[j][j+i] = dp[j][j+(i+1)/2-1] + 1; num[dp[j][j+i]]++; } }j for(int i=n;i>=1;i--){ num[i-1] += num[i]; } for(int i=1;i<=n;i++){ printf(i==1?"%d":" %d",num[i]); } return 0;}
阅读全文
0 0
- Codeforces Round #427 (Div. 2)D. Palindromic characteristics(DP+回文串)
- 【Codeforces】Codeforces Round #427 (Div. 2) D. Palindromic characteristics DP回文串
- Codeforces Round #427 (Div. 2) D-Palindromic characteristics (回文串,暴力)
- 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
- Codeforces Round #427 (Div. 2) D.Palindromic characteristics【DP、后缀和】
- Codeforces Round #427 (Div. 2)C. Star sky 暴力D. Palindromic characteristics
- Codeforces 835 D Palindromic characteristics(区间DP)
- Codeforces 835 D Palindromic characteristics 区间dp
- Codeforces 835D Palindromic characteristics【区间Dp】
- 【回文串】835D Palindromic characteristics
- Codeforces 835D-Palindromic characteristics
- Codeforces 427Div2 D、835D Palindromic characteristics
- Codeforces 835D Round #427 Div2D :回文串DP
- Codeforces Round #273 (Div. 2)D dp
- Codeforces Round #358 (Div. 2) D dp
- Codeforces Round #263 (Div. 2)D(树形DP)
- 《C 程序设计》——>基本概念
- 两个Flash的闹钟小程序
- JQuery
- Maven编译打包spark(2.1.0)源码及出现问题的解决方案(win7+Intellij IDEA)
- anconda多版本管理
- Codeforces Round #427 (Div. 2)D. Palindromic characteristics(DP+回文串)
- 5.多线程之内存可见性
- Xshell、Xftp、WinSCP的安装与使用
- 剑指offer:二维数组中的查找
- 关于使用JSONArray.fromObject()方法和引入net.sf.json包所需要的jar包支持
- toString(),直接输出(XX);IntValue parseInt valueOf ;equals “==”
- (四)JNI学习之C语言基础,构造类型
- 类加载
- ssh框架分析