zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    JSON 使用
    JSON 语法
    JSON 简介
    什么是 JSON ?
    PHP 数组排序
    PHP 数组
    swan.after
    Page.after
    App.after
    AOP说明
  • 原文地址:https://www.cnblogs.com/Chen574118090/p/10381735.html
Copyright © 2011-2022 走看看