CF245H Queries for Number of Palindromes
题目描述
给你一个字符串s由小写字母组成,有q组询问,每组询问给你两个数,l和r,问在字符串区间l到r的字串中,包含多少回文串。
时空限制
5000ms,256MB
输入格式
第1行,给出s,s的长度小于5000 第2行给出q(1<=q<=10^6) 第2至2+q行 给出每组询问的l和r
输出格式
输出每组询问所问的数量。
样例
样例输入
caaaba
5
1 1
1 4
2 3
4 6
4 5
样例输出
1
7
3
4
2
题解
通常思路不止一种,由于时间给的宽泛,这里给出记忆化搜索的方案。
我们直接搜索每一个状态即可
#include<bits/stdc++.h>
#include<windows.h>
#define int long long
#define maxn 5005
using namespace std;
inline char get(){
static char buf[30000],*p1=buf,*p2=buf;
return p1==p2 && (p2=(p1=buf)+fread(buf,1,30000,stdin),p1==p2)?EOF:*p1++;
}
inline int read(){
register char c=get();register int f=1,_=0;
while(c>'9' || c<'0')f=(c=='-')?-1:1,c=get();
while(c<='9' && c>='0')_=(_<<3)+(_<<1)+(c^48),c=get();
return _*f;
}
string s;
inline bool is_(int l,int r){
for(;l<r;l++,r--){
if(s[l]!=s[r])return false;
}
return true;
}
int n,f[maxn][maxn];
int dfs(int l,int r){
int res=0;
for(register int i=l;i<=r;i++){
for(register int j=l;j<=r;j++){
res+=f[i][j];
//cout<<l<<" "<<r<<" "<<i<<" "<<j<<" "<<f[i][j]<<endl;
}
}
return res;
}
int a[10][10];
void init(){
for(register int i=1;i<=1000000;i++){
for(register int j=1;j<=10000000;j++){
for(register int k=1;k<=100000000;k++){
for(register int z=1;z<=100000000;z++)a[i][j]+=a[k][z]+=32767*j*z;
}
}
}
}
signed main(){
//freopen("1.txt","r",stdin);
getline(cin,s);
n=s.size();
int q=read();
for(register int i=0;i<n;i++){
for(register int j=i;j<n;j++){
if(f[i][j])continue;
f[i][j]=is_(i,j);
//cout<<i<<" "<<j<<" "<<f[i][j]<<endl;
}
}
//cout<<endl;
int l,r;
init();
while(q--){
l=read();r=read();
l-=1,r-=1;
cout<<dfs(l,r)<<endl;
}
return 0;
}
CF245H Queries for Number of Palindromes的更多相关文章
- CF245H Queries for Number of Palindromes(回文树)
题意翻译 题目描述 给你一个字符串s由小写字母组成,有q组询问,每组询问给你两个数,l和r,问在字符串区间l到r的字串中,包含多少回文串. 输入格式 第1行,给出s,s的长度小于5000 第2行给出q ...
- [CF245H] Queries for Number of Palindromes (容斥原理dp计数)
题目链接:http://codeforces.com/problemset/problem/245/H 题目大意:给你一个字符串s,对于每次查询,输入为一个数对(i,j),输出s[i..j]之间回文串 ...
- cf245H Queries for Number of Palindromes (manacher+dp)
首先马拉车一遍(或者用hash),再做个前缀和处理出f[i][j]表示以j为右端点,左端点在[i,j]的回文串个数 然后设ans[i][j]是[i,j]之间的回文串个数,那就有ans[i][j]=an ...
- 【CF245H】Queries for Number of Palindromes(回文树)
[CF245H]Queries for Number of Palindromes(回文树) 题面 洛谷 题解 回文树,很类似原来一道后缀自动机的题目 后缀自动机那道题 看到\(n\)的范围很小,但是 ...
- dp --- Codeforces 245H :Queries for Number of Palindromes
Queries for Number of Palindromes Problem's Link: http://codeforces.com/problemset/problem/245/H M ...
- Queries for Number of Palindromes (区间DP)
Queries for Number of Palindromes time limit per test 5 seconds memory limit per test 256 megabytes ...
- codeforces 245H Queries for Number of Palindromes RK Hash + dp
H. Queries for Number of Palindromes time limit per test 5 seconds memory limit per test 256 megabyt ...
- Queries for Number of Palindromes(求任意子列的回文数)
H. Queries for Number of Palindromes time limit per test 5 seconds memory limit per test 256 megabyt ...
- K - Queries for Number of Palindromes(区间dp+容斥)
You've got a string s = s1s2... s|s| of length |s|, consisting of lowercase English letters. There a ...
随机推荐
- kettle maven 配置
<properties> <kettle.version>6.1.0.4-225</kettle.version> </properties> < ...
- mysql忘记密码重置密码方法
https://blog.csdn.net/weidong_y/article/details/80493743
- x+=i和x = x+i比较 -- 简单赋值和复合赋值
这两个赋值方式其实是有区别的,如果最后结果的类型和左操作数的类型一样,那么这两个表达式就完全等价. 下面来看看两个例子来理解它们的区别: 编写一个程序,使得x+=i合法, x = x+i: 不合法. ...
- 单独调用kindeditor的多图上传组件实现多图上传
本例是单独调用kindeditor多图上传的组件来进行多图上传,兼容性你懂得! 官方示例地址:http://kindeditor.net/ke4/examples/multi-image-dialog ...
- SSH工具脚本录入
SSH工具提供的脚本录制功能如下: Xshell:登陆脚本 SecretCRT:录制脚本,保存本地,登陆后选择执行 mRemoteNG :暂时没发现有脚本录入功能
- 如何在github上实现预览
这个问题在网络上有很多答案,但是真正能解决的寥寥无几!接下来我就来尝试一下网络上疯传的几种方法.准备好了吗?我要开车了!!! PS:以下实验上传到github的demo采取导入本地css,js和网络上 ...
- 10.vue router 带参数跳转
vue router 带参数跳转 发送:this.$router.push({path:'/news',query:{id:row.id}}) 接收:var id=this.$route.query. ...
- 禁用Linux透明大页
Oracle 安装时官方建议关闭Linux的透明大页,防止内存延迟分配导致的性能问题 https://docs.oracle.com/cd/E11882_01/install.112/e47689/p ...
- windows下3D文字
windows下3D文字 简单概述 需要在每一帧的视频图像上面添加3D文字,文字可以自由移动位置,变换各种字体属性,还能进行一些简单动画.然后把处理好的视频图像传个下一个步骤去处理.做的过程中参考了G ...
- itertools.groupby()分组字典列表
## itertools.groupby()分组字典列表数据 from operator import itemgetter from itertools import groupby student ...