【CF245H】【Queries for Number of Palindromes】
2015-08-07 19:25
429 查看
H. Queries for Number of Palindromes
time limit per test
5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You've got a string s = s1s2... s|s| of
length |s|, consisting of lowercase English letters. There also are q queries,
each query is described by two integers li, ri (1 ≤ li ≤ ri ≤ |s|).
The answer to the query is the number of substrings of string s[li... ri],
which are palindromes.
String s[l... r] = slsl + 1... sr (1 ≤ l ≤ r ≤ |s|) is
a substring of string s = s1s2... s|s|.
String t is called a palindrome, if it reads the same from left to
right and from right to left. Formally, if t = t1t2... t|t| = t|t|t|t| - 1... t1.
Input
The first line contains string s (1 ≤ |s| ≤ 5000).
The second line contains a single integer q (1 ≤ q ≤ 106) —
the number of queries. Next q lines contain the queries. The i-th
of these lines contains two space-separated integers li, ri (1 ≤ li ≤ ri ≤ |s|) —
the description of the i-th query.
It is guaranteed that the given string consists only of lowercase English letters.
Output
Print q integers — the answers to the queries. Print the answers in the order, in which the queries are given in the input. Separate
the printed numbers by whitespaces.
Sample test(s)
input
output
注意当s[i] == s[j] 时候不能直接 +1 要判断这个是个回文串才可以,, 因为必需用s[i] 和 s[j] abca 就是个例子
time limit per test
5 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output
You've got a string s = s1s2... s|s| of
length |s|, consisting of lowercase English letters. There also are q queries,
each query is described by two integers li, ri (1 ≤ li ≤ ri ≤ |s|).
The answer to the query is the number of substrings of string s[li... ri],
which are palindromes.
String s[l... r] = slsl + 1... sr (1 ≤ l ≤ r ≤ |s|) is
a substring of string s = s1s2... s|s|.
String t is called a palindrome, if it reads the same from left to
right and from right to left. Formally, if t = t1t2... t|t| = t|t|t|t| - 1... t1.
Input
The first line contains string s (1 ≤ |s| ≤ 5000).
The second line contains a single integer q (1 ≤ q ≤ 106) —
the number of queries. Next q lines contain the queries. The i-th
of these lines contains two space-separated integers li, ri (1 ≤ li ≤ ri ≤ |s|) —
the description of the i-th query.
It is guaranteed that the given string consists only of lowercase English letters.
Output
Print q integers — the answers to the queries. Print the answers in the order, in which the queries are given in the input. Separate
the printed numbers by whitespaces.
Sample test(s)
input
caaaba 5 1 1 1 4 2 3 4 6 4 5
output
1 7 3 4 2
注意当s[i] == s[j] 时候不能直接 +1 要判断这个是个回文串才可以,, 因为必需用s[i] 和 s[j] abca 就是个例子
#include <iostream> #include <cstring> #include <cmath> #include <queue> #include <stack> #include <list> #include <map> #include <set> #include <string> #include <cstdlib> #include <cstdio> #include <algorithm> using namespace std; int T; typedef long long ll; char s[5002]; ll dp[5002][5002]; int main() { memset(s,0,sizeof(s)); scanf("%s",s); int len =strlen(s); for(int i=1;i<=len;i++) { dp[i][i] = 1; if(i - 1 >= 1) dp[i-1][i] = ((s[i-1] == s[i-1-1]) ? 1 : 0); } for(int j=2;j<=len;j++) { for(int i=j-2;i>=1;i--) { if(s[i-1] == s[j-1]) dp[i][j] += dp[i+1][j-1]; } } for(int j=2;j<=len;j++) { for(int i=j-1;i>=1;i--) { dp[i][j] = (dp[i][j] + dp[i+1][j] + dp[i][j-1] - dp[i+1][j-1]); } } scanf("%d",&T); int l,r; while(T --) { scanf("%d%d",&l,&r); printf("%I64d\n",dp[l][r]); } return 0; }
相关文章推荐
- PROPAGATION_REQUIRED事务管理
- Android API Guides学习1——Intents and Intent Filters
- hdu 5306 Gorgeous Sequence(线段树)
- android ui 积累
- UICollectionView
- UITableView
- "Auto Layout still required after executing -layoutSubviews” iOS7上崩溃sdk缺陷
- quick-3.5 打包加密的个人总结
- [IOS]今天开始学UI---UITextField&&UITextView
- 报错:require_once cannot allocate memory----php,以前自己弄的稍微有点特殊的开发环境
- (十) Advanced Build Customization(高级构建定制)(完)
- android事件之onInterceptTouchEvent,dispatchTouchEvent,onTouchEvent,requestDisallowInterceptTouchEvent
- 写在Demo战斗系统之前,先用原型工具做套UI第六篇-人物装备UI界面制作
- (九) Build Variants(构建变种版本)
- Codeforces Round #313 (Div. 2) Equivalent Strings(搜索)
- android通用的UUID唯一标示符
- android通用的UUID唯一标示符
- android通用的UUID唯一标示符
- POI操作Excel异常Cannot get a text value from a numeric cell
- 自定义UI制作流程