[bzoj3160]万径人踪灭

ESP32-C61 eFuse控制器深度解析:寄存器架构与安全烧写实践 eFuse(电子熔丝)是嵌入式芯片实现硬件级不可逆配置与信任根构建的核心物理机制,其本质是通过电学编程固化关键安全参数。原理上依赖熔丝单元的单向导通/断开特性,结合Reed-Solomon纠错、多级写保护和时序可控编程,保障数据在宽温域与工艺偏差下的高可靠性。技术价值在于为Secure Boot、Flash加密、密钥隔离等安全功能提供可信锚点,支撑从启动到运行的全链路防护。典型应用场景涵盖物联网设备量产烧录、安全启动使能、MAC地址固化及抗DPA密码运算配置。本文聚焦ESP32-C61平台,深入解析其eFu 阅读详情

3160: 万径人踪灭

Time Limit: 10 Sec Memory Limit: 256 MB
Submit: 856 Solved: 487
[Submit][Status][Discuss]
Description

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

最后的答案可以表示成所有的回文子串的个数减去连续的回文串的个数。
后面的那个显然可以用manacher。前面的那个东西可以这样求:
设f[i]表示以i这个字符为中心的回文子串的个数。
那么f[i]=∑2∗ij=1(s[j]==s[2∗i−j])
让a,b分别等于0或1,式子就可以变成f[i]=∑2∗ij=1s[j]∗s[2∗i−j]
很明显这是一个卷积的形式,做两遍FFT就行了。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define Mod 1000000007
const int M=400000;
char s[M],ch[M];
int n,rev[M],dig[M],N,L,f[M],Pow[M],ans,p[M];
struct S{
    double x,y;
    S operator + (const S &xx){return (S){x+xx.x,y+xx.y};}
    S operator - (const S &xx){return (S){x-xx.x,y-xx.y};}
    S operator * (const S &xx){return (S){x*xx.x-y*xx.y,x*xx.y+y*xx.x};}
}a[M],c[M],d[M];
inline void FFT(S *a,int f){
    int i,j,k;
    S w,wn,x,y;
    for(i=0;i<N;++i) d[i]=a[rev[i]];
    for(i=0;i<N;++i) a[i]=d[i];
    for(i=2;i<=N;i<<=1){
        wn=(S){cos(2*M_PI/i),f*sin(2*M_PI/i)};
        for(j=0;j<N;j+=i){
            w=(S){1,0};
            for(k=j;k<j+i/2;++k){
                x=a[k];
                y=w*a[k+i/2];
                a[k]=x+y;
                a[k+i/2]=x-y;
                w=w*wn;
            }
        }
    }
    if(f==-1) for(i=0;i<N;++i) a[i].x/=(double)N;
}
inline int manacher(){
    int maxn=1,id=1,sum=0,i;
    for(ch[0]='$',ch[1]='#',i=1;i<=n;++i)
        ch[i<<1]=s[i-1],ch[i<<1|1]='#';
    for(i=1;i<=(n<<1|1);++i){
        p[i]=min(maxn-i,p[id*2-i]);
        while(ch[i+p[i]]==ch[i-p[i]]) ++p[i];
        if(p[i]+i>maxn) maxn=p[i]+i,id=i;
        sum=(sum+p[i]/2)%Mod;
    }
    return sum;
}
int main(){
    int i,len,j;
    scanf("%s",s);
    n=strlen(s);
    for(L=0,N=1;N<n;N<<=1,L+=1); N<<=1;L+=1;
    for(i=0;i<N;++i){
        for(j=i,len=0;j;j>>=1) dig[len++]=j&1;
        for(j=0;j<L;++j) rev[i]=rev[i]*2+dig[j];
    }
    for(i=0;i<n;++i)
        if(s[i]=='a') a[i]=(S){1.,0.};
    FFT(a,1);
    for(i=0;i<N;++i) c[i]=a[i]*a[i];
    memset(a,0,sizeof(a));
    for(i=0;i<n;++i)
        if(s[i]=='b') a[i]=(S){1.,0.};
    FFT(a,1);
    for(i=0;i<N;++i) c[i]=c[i]+a[i]*a[i];
    FFT(c,-1);
    ans=Mod-manacher();
    for(Pow[0]=1,i=1;i<N;++i) Pow[i]=Pow[i-1]*2%Mod;
    for(i=0;i<N;++i){
        f[i]=(c[i].x+0.5);
        ans=(ans+Pow[(f[i]+1)>>1]-1)%Mod;
    }
    printf("%d\n",ans);
}
【论文阅读笔记】One Shot 3D Photography 论文主页:https://facebookresearch.github.io/one_shot_3d_photography/ 代码地址:https://github.com/facebookresearch/one_shot_3d_photography   该3D照片方向,由于刚入门,所以会倾向于翻译文章。每个操作上的选择,及为什么不进行另外操作的原因都如数放上。 论文小结   本作的工作是从单张RGB图片生成一个移动视角的3D照片。   其管道大致如下: 由RGB图像通过单目深度估计网络估计深度图 阅读详情

相关推荐

从打印攻击到视频重放:手把手用OULU-NPU训练你的第一个活体检测模型

本文详细介绍了如何使用OULU-NPU数据集训练活体检测模型,以应对打印攻击和视频重放等安全威胁。通过PyTorch框架,从环境准备、数据加载、预处理到模型架构设计,手把手教你构建一个高效的双流网络,结合CNN和LSTM技术,提升模型在多种攻击场景下的检测准确率。

weixin_29092031的博客 384

BZOJ3160(NTT+manacher)

题面 题目定义的回文序列,指的是以某个位置(可以为间隙)为对称轴,左右两端对应位置相等的序列。 比如在串baababbbb中, b__bab__b是一个回文子序列 给你一个仅包含’a’和‘b’的字符串,问有多少个非连续的回文子序列。 我对回文的认识只有manacher,能求出所有的回文串,显然回文串是连续的回文子序列,并不属于答案,大概是要最后减掉的。 那么原问题就变成了问原串有多少个

KKiseki的博客 401

OrthoFinder功能、流程和文件注释

OrthoFinder 的标准输出包括:直系同源组,直系同源基因,有根基因树,解析基因树,无根物种树、有根物种树,基因重复事件以及相关的统计数据。

hs6605015的博客 3046

bzoj3160

题意:给定一个字符串,求出所有不连续的回文子序列,并且该子序列在原串的位置关于某位置对称。 先忽略掉不连续这个条件,先求出所有的然后减去连续的。 连续的就是回文子串 用Manacher算法可以O(n)求解,(注意这题回文中心可能是在2个字符之间) 所有的情况,要分2种情况,第一个是回文中心是某个字符,另外一个就是在2个字符之间。 考虑到如果s[i-k]=s[i+k],那么这就会

lpf_as_a_oier的博客 442

SpringCloud 2025王炸更新!GraalVM原生镜像启动速度提升90%实战

在当今云原生和Serverless架构盛行的时代,应用的启动速度已成为衡量技术栈竞争力的关键指标。传统SpringCloud应用由于依赖JVM的动态类加载、反射等机制,启动时间通常超过30秒,在Kubernetes滚动更新和函数计算场景下成为显著性能瓶颈。2025年,SpringCloud迎来里程碑式更新,通过深度集成GraalVM原生镜像技术,实现了启动速度提升90%的惊人突破,让SpringCloud应用正式进入"秒级启动"时代。

小筱在线博客 1098

在Simulink中进行基于模拟信号数字化处理的仿真

模拟信号数字化处理通常包括以下几个步骤:采样、量化、编码以及数字信号处理(如滤波、变换等)。Simulink提供了丰富的模块库,可以方便地实现这些步骤,并支持对整个系统的实时仿真与调试。首先明确你的系统需求,比如输入信号类型(正弦波、方波等)、采样率、需要执行的数字信号处理操作(低通滤波、频谱分析等)。假设我们需要处理一个50Hz的正弦波信号,采样率为1kHz,并希望对该信号进行低通滤波以去除高频噪声。本文介绍了如何在Simulink中进行基于模拟信号数字化处理的仿真。

xiaoheshang_123的博客 623

BZOJ 3160 万径人踪灭

BZOJ 3160 万径人踪灭读题时请自行跳到第六段(前面的真的是废话)题解FFT + Manacher简单一点若是忽略题目中的 “不能有连续一段” 的信息 那么我们就可以以每个点作为对称中心 然后寻找每个点作为中心的方案数找到关于点x对称的相同字符对数Cx 那么方案数P就是 点对的集合的真子集个数 即 Px=2Cx−1 P_x=2^{Cx}-1 找到了每个点的点对数之后 统计一下 一切就都好办了

Light.NKOI 331

配置xen上VM混杂模式,使其能捕获物理网络流量

本文目的:配置VM和xen相应的物理网卡(pif)和虚拟网卡(vi

LeoDuo的专栏 3720

【BZOJ3160】万径人踪灭(manacher)(FFT)

传送门 题解: 求有多少个不完全连续的回文子序列,要求字符和位置都必须关于某个对称轴对称。 考虑求出所有回文子序列个数和回文子串个数,两者答案相减即为所求。 回文子串个数直接用manacher即可。 回文子序列个 代码: #include<bits/stdc++.h> #define ll long long #define re register #define cs const...

zxyoi_dreamer的博客(不定期诈尸) 207

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

Robot_PLC_HMI_Automation 6514

C++软件调试与异常排查从入门到精通专栏介绍与文章汇总

根据近几年排查软件异常的实践与经验,系统地讲解了C++软件异常常见原因与常用排查方法,以图文并茂的方式给出具体的分析实例,带领大家逐步掌握C++软件异常排查的相关技术与要领。

dvlinker的技术专栏 23万+

bzoj3160 万径人踪灭(manacher+fft)

要求不连续的回文子序列个数。我们考虑用所有的回文子序列个数-连续的回文子序列个数。连续的回文子序列个数就是回文子串的个数,我们可以用manacher来求。考虑如何求回文子序列的总数。我们先都按manacher那样插入若干’#’以后,处理出一个f[i]数组,表示i两侧对称的字母对数。(含自己,不含#)。则总数就是∑i=22n2f[i]−1\sum\limits_{i=2}^{2n}2^{f[i]}-1

Icefox的博客 436

GStreamer Plugin之Gst-nvdewarper

支持三种投影类型 NVDS_META_SURFACE_FISH_PUSHBROOM, NVDS_META_SURFACE_FISH_VERTCYL 和NVDS_META_SURFACE_PERSPECTIVE_PERSPECTIVE。关于每个平面的NvDewarperSurfaceMeta参数(projection_type, surface_index, and source_id)以及内存中有效的矫正平面(num_filled_surfaces)包含RGBA格式的一帧的缓存。矫正后的RGBA格式。

pvmsmfchcs的博客 366

bzoj3160: 万径人踪灭 FFT manacher

bzoj3160: 万径人踪灭 题目 分析 一道FFT神题。话说题目还真是会强行玩梗啊 首先需要进行转化。 不连续是一个假的条件。因为你可以把连续的用manacher算出来。所以总的答案就是子序列答案-manacher 然后先把序列变成回文串的形式。比如串S=abaS=abaS=aba 变成S′=xaxbxaxS′=xaxbxaxS'=xaxbxax(下标从零开始...

maxtir的博客 352

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【BZOJ3160】万径人踪灭 - 题解

题目链接 【BZOJ3160】万径人踪灭 做法 不包含连续下标的回文子序列 = 所有回文子序列 - 连续下标的回文子序列。 对于连续下标的回文子序列,可以用 $ Manacher $ 算法快速计算。 对于所有回文子序列,考虑枚举对称中心 $ r $ , 若有 $ k $ 组 $ (x, y) $ 满足 $ x \not= y $ 且 $ x + y = 2r $ 且 $ s_x = s_y $ ,...

weixin_30588729的博客 141

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【bzoj3160】万径人踪灭 FFT

【bzoj3160】万径人踪灭 FFT 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3160 我是一个傻叉 微笑脸 1 #include<bits/stdc++.h> 2 #d...

anchoupi8353的博客 131

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【BZOJ3160】万径人踪灭(FFT,Manacher)

Description click me 直接就把pdf的图片放在那里,还不方便复制样例,差评 Solution 考虑用所有的位置对称的回文子序列的方案数减去回文串的数量,那么题目就变成了两个部分: 1. 回文串的数量直接用Manacher求即可。 2. 回文子序列可以用FFT来求,分别把a、b看做1,然后做FFT求卷积即可。 感觉用FFT解决字符串问题也是个套路吧,回文串直接F...

დ♂Hany01's Blog Space♂ღ 289

BZOJ 3160: 万径人踪灭

Description 一个ab串,问有多少回文子序列,字母和位置都对称,并且不连续. Sol FFT+Manacher. 不连续只需要减去连续的就可以了,连续的可以直接Manacher算出来. 其他全部对称的回文子序列就可以用生成函数那样FFT搞出来,把ab分开考虑就行. 有挺多细节的...包括下标运算什么什么的... Code /*****************...

aisen1985的博客 233

BZOJ3160: 万径人踪灭

n<=1e5的ab串,问对称的不连续的回文子序列数。取模。 虽然是道卷积题但是根本看不出来耶! 好吧没关系,要熟悉卷积那个图形:(红箭头那里是交于一点的,如果你觉得不是就是近视加深了) 好来看这个题,要是连续的可以用manacher得,所以不连续条件可先排除掉。 然后剩下的东西不就是要求这种形式的东西有多少个嘛! 说人话,$f(i)$表示对称轴为$\frac{i}{2...

a2850363633的博客 150

【BZOJ3160】万径人踪灭

题面 题目分析 我们来看一看一个回文串满足什么: 对于回文串,如果中点一定,所有以它为中点的点对下标之和也一定。 我们设下标为\(i\),点对个数之和为\(f(i)\),则方案数为\(2^{f(i)}-1\)。 显然有\(f(x)=((\sum\limits_{i=1}^{x-1}[s[i]=s[x-i]])+1)/2\)。 其中\(\sum\limits_{i=1}^{x-1}[s[...

banchangyue3928的博客 137

[bzoj3160]万径人踪灭_FFT_Manacher

万径人踪灭 bzoj-3160 题目大意:给定一个ab串。求所有的子序列满足:位置和字符都关于某条对称轴对称而且不连续。 注释:$1\le n\le 10^5$。 想法: 看了大爷的题解,OrzOrz。 因为对称轴可以是两个字符中间的位置,所以我们把字符串按照$Manacher$的形式倍增。 我们希望处理出一个数组$f$,$f_i$表示以$i$为对称轴的左右相等字符个数。...

dianan0938的博客 157

[bzoj3160] 万径人踪灭

Description Input Solution 考虑先忽略不可以连成一段的条件。 那么,暴力的做法就是,枚举一个中心点,暴力找出旁边有多少个对称的点,设数量为\(x\),则这个中心点对答案的贡献为\(2^x-1\)。 这样是\(O(n^2)\)的,考虑怎么优化。 对于中心点\(mid\),能对\(x\)造成贡献的位置\(i,j\),一定是满足\(i+j=mid*2\)且\(s[i]=s...

weixin_30593261的博客 97

BZOJ3160【万径人踪灭】 【FFT】

。。恩 打了四五遍 不会也背出来了。。 BZOJ3160 【听说时限紧?转C++的优势么?】 上AC代码 fft 1 /*Problem: 3160 2 User: cyz666 3 Language: C++ 4 Result: Accepted 5 Time:1992 ms 6 Memory:18492 kb...

anrui5830的博客 112

[BZOJ3160]万径人踪灭

[BZOJ3160]万径人踪灭 试题描述 输入 输出 见“输入” 输入示例 见“输入” 输出示例 见“输入” 数据规模及规定 题解 问题分为两部分: 一. 对于每一个分界点(某个位置)或分界线(某两个位置中间),要求这么一个东西 意思就是回文串要求左半部分与右半部分对称,那么找到这些对称的位置,每个位置有选择或者不选两种情况,所以是 2 的那么...

weixin_30527143的博客 74

BZOJ 3160: 万径人踪灭 FFT+快速幂+manacher

BZOJ 3160: 万径人踪灭题目传送门 【题目大意】   给定一个长度为n的01串,求有多少个回文子序列?   回文子序列是指从原串中找出任意个,使得构成一个回文串,并且位置也是沿某一对称轴对称。  假如x是对称轴,若 i 和 j 是对称且di=dj,i,j可以视为可行的一组。可行组数记为f[x]。   f[x]=∑x−1i=1[d[x−i]==d[x+i]]f[x]=\sum_{i=1

kxy的博客 336
上一篇: [bzoj4378][POI2015]Logistyka
下一篇: [bzoj2342][SHOI2011]双倍回文
FZHvampire
博客等级 码龄12年 24粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值