神族文字

题目大意

在长度为n的字符串中找一个最长的连续子串,使其为回文串。
n<=5*10^5。

M开头的算法

manacher裸题。
我们在字符之间以及头尾加入’$’,并在最前和最后加入’&’(这是用来防止越界的)。
设f[i]为新字符串中第i个字符为中心,i-f[i]..i+f[i]这个部分是一个回文串,且f[i]最大。
我们设一个j,使当前j+f[j]最大。
当一个i<=j+f[j]时,我们容易通过对称性得到f[i]=f[j*2-i]。
但我们要防止这样做超过了j+f[j]导致失去对称性,所以f[i]=min(f[j*2-i],j+f[j]-i)。
然后更新j。

参考代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=5000000+100;
int f[maxn*2];
char s[maxn*2],ch;
int i,j,k,l,t,n,m,ans;
int main(){
    n=3;
    while ((ch=getchar())>='a'&&ch<='z') s[n=n+2]=ch;
    s[1]='&';
    s[n+2]='&';
    n+=2;
    fo(i,2,n-1)
        if (i%2==0) s[i]='$';
    fo(i,2,n-1){
        if (i>j+f[j]){
            f[i]=0;
            while (s[i-f[i]-1]==s[i+f[i]+1]) f[i]++;
            j=i;
        }
        else{
            f[i]=min(f[2*j-i],j+f[j]-i);
            while (s[i-f[i]-1]==s[i+f[i]+1]) f[i]++;
            if (i+f[i]>j+f[j]) j=i;
        }
        ans=max(ans,f[i]);
    }
    printf("%d\n",ans);
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文字转语音可以使用语音合成技术来实现。目前,有很多云端语音合成服务提供商,如腾讯云、阿里云、百度智能云等,它们都提供了文字转语音的API接口,可以通过调用API接口来实现。 以腾讯云为例,可以按照以下步骤来实现文字转语音功能: 1. 注册腾讯云账号,并进入腾讯云控制台。 2. 在控制台中选择“人工智能”>“语音服务”>“语音合成”,创建一个语音合成实例。 3. 在创建实例后,获取API密钥和API密钥ID,并记录下来。 4. 在本地安装Python开发环境,并安装腾讯云SDK。 5. 在Python程序中,调用腾讯云提供的文字转语音API接口,将需要转换的文字作为参数传入,即可获得语音合成的音频文件。 以下是一个Python代码示例,可以实现将指定的文字转换为语音,并保存为MP3文件: ```python from tencentcloud.common import credential from tencentcloud.common.profile.client_profile import ClientProfile from tencentcloud.common.profile.http_profile import HttpProfile from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException from tencentcloud.tts.v20190823 import tts_client, models try: cred = credential.Credential("Your SecretId", "Your SecretKey") httpProfile = HttpProfile() httpProfile.endpoint = "tts.tencentcloudapi.com" clientProfile = ClientProfile() clientProfile.httpProfile = httpProfile client = tts_client.TtsClient(cred, "ap-guangzhou", clientProfile) req = models.TextToVoiceRequest() params = { "Text": "Hello, world.", # 需要转换的文字 "SessionId": "test", "ModelType": 1, "Volume": 5, "Speed": 0, "ProjectId": 0, "VoiceType": 0, "PrimaryLanguage": 1, "Codec": "mp3" } req.from_json_string(json.dumps(params)) resp = client.TextToVoice(req) with open("output.mp3", "wb") as f: f.write(resp.Audio) # 将语音合成的音频文件保存为MP3文件 except TencentCloudSDKException as err: print(err) ``` 这个代码示例使用了腾讯云的Python SDK,并调用了腾讯云提供的`TextToVoice`接口,将文字转换为语音,并保存为MP3文件。需要注意的是,需要替换代码中的API密钥和API密钥ID为自己的密钥信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值