HDU 3973 AC's String

保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置) 本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。 阅读详情

本题使用字符串的Hash来解决。将一个字符串看成是一个P进制的数字,那么可以知道每一个字符串都可以被唯一表示(P> 256, 并不考虑高精度)。可是由于字符串的长度比较大,那么我们无法保存如此大的数字。于是使用Hash mod2^64来作为Hash.(的却可能会冲突,可是冲突的概率趋于无穷小)

然后就是Hash(s,P) = s[0]*P^(Len-1) + s[1] *P^(Len -2) + … + s[Len-1]*P^0 (mod2^64)

P随便选个素数什么的都可以。

之后假设没有修改操作,那么我们可以与处理出H[i]表示S[0..i]的Hash

那么为了获得S[l..r]的Hash,我们有:

S[0..r]= s[0]*P^r + s[1]*P^(r-1) +…+s[r]*P^0

S[0..l-1]=s[0]*P^(l-1)+s[1]*P^(l-2)+…+s[l-1]*P^0

于是

S[l..r]=s[l]*P^(r-l)+s[l+1]*P^(r-l-1)+…+s[r]*P^0

=S[0..r] – S[0..l-1]*P^(r-l+1)

=H[r] – H[l-1]*P^(r-l+1)

其中P^(r-l+1)显然直接预处理。

于是查询就可以O(1)

现在需要修改某些字符!

于是可以使用一颗线段树来维护

[L..R]维护S[L..R]的Hash,这样更新查询均解决。更新和查询均为O(logN)级别


#include<cstdio>
#include<cstring>
#include<map>
#define maxn 100010
#define p 33
using namespace std;
typedef unsigned long long ll;
struct Tree{
    int l,r;
    ll hashes;
}tree[300000];
char str[2000100];
ll hh[maxn];
void init(){
    int i;
    hh[0]=1;
    for(i=1;i<=maxn;i++)
        hh[i]=hh[i-1]*p;
}
ll calhash(){
    int i,len=strlen(str);
    ll sum=0;
    for(i=0;i<len;i++)
        sum=sum*p+str[i]-'a'+1;
    return sum;
}
void build(int s,int t,int id){
    tree[id].l=s;tree[id].r=t;
    if(s==t){
        tree[id].hashes=str[s]-'a'+1;
        return;
    }
    int mid=(s+t)>>1;
    build(s,mid,id<<1);
    build(mid+1,t,id<<1|1);
    tree[id].hashes=tree[id<<1].hashes*hh[t-mid]+tree[id<<1|1].hashes;
}
void update(int l,int id){
    if(tree[id].l==tree[id].r){
        tree[id].hashes=str[l]-'a'+1;
        return ;
    }
    int mid=(tree[id].l+tree[id].r)>>1;
    if(l<=mid) update(l,id<<1);
    else update(l,id<<1|1);
    tree[id].hashes=tree[id<<1].hashes*hh[tree[id].r-mid]+tree[id<<1|1].hashes;
}
ll query(int s,int t,int id){
    if(tree[id].l==s && tree[id].r==t)
        return tree[id].hashes;
    int mid=(tree[id].l+tree[id].r)>>1;
    if(t<=mid) return query(s,t,id<<1);
    else if(s>mid) return query(s,t,id<<1|1);
    return query(s,mid,id<<1)*hh[t-mid]+query(mid+1,t,id<<1|1);
}
int main(){
    int t,T,pos,l,r,i,q,n;
    char s1[10],s2[10];
    map<ll,int>mp;
    init();
    scanf("%d",&T);
    for(t=1;t<=T;t++){
        printf("Case #%d:\n",t);
        scanf("%d",&n);
        mp.clear();
        for(i=1;i<=n;i++){
            scanf("%s",str);
            mp.insert(make_pair(calhash(),1));
        }
        scanf("%s",str);
        int len=strlen(str);
        build(0,len-1,1);
        scanf("%d",&q);
        for(i=1;i<=q;i++){
            scanf("%s",s1);
            if(s1[0]=='C'){
                scanf("%d%s",&pos,s2);
                str[pos]=s2[0];
                update(pos,1);
            }
            else{
                scanf("%d %d",&l,&r);
                if(mp.find(query(l,r,1))!=mp.end()) printf("Yes\n");
                else printf("No\n");
            }
        }
    }
}



stata 代码实现熵值法计算 含常见问题解答 2.标准化①正向指标②负向指标。 阅读详情

相关推荐

【AAAI 2025】轻量级特征增强新范式!FCM 模块助力小目标检测,即插即用提升模型泛化能力

本文介绍了AAAI 2025提出的轻量级特征增强新范式FCM模块,它通过显式分离并双向交互语义与空间特征,有效解决了小目标检测中特征信息失配的核心难题。该模块设计精巧,计算开销极低,能够即插即用式地嵌入YOLO等主流检测网络,显著提升模型对小目标的泛化检测能力,尤其适用于遥感、自动驾驶等对计算资源敏感的实际场景。

weixin_29056145的博客 287

hdu 3973 字符串hash+线段树动态维护

AC's String Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1091    Accepted Submission(s): 311 Problem Description You are given

写东西的地方 783

避坑指南:Python模拟抖音扫码登录时,那些你可能会遇到的‘Referer’和‘Token’校验问题

本文深入解析Python模拟抖音扫码登录时常见的Referer校验与Token失效问题,提供五大陷阱的解决方案。从动态fp参数生成到Referer校验策略,再到Token生命周期管理,手把手教你破解抖音登录接口的反爬机制,助力开发者高效完成自动化登录。

weixin_42573113的博客 781

HDU3973-字符串哈希+线段树

HDU3973-字符串哈希+线段树 题目描述 即给你一个母串,和nnn个字符串,mmm次操作,每次操作有两种:1,询问母串中l到r位置的字串是否在nnn个字符串中出现过;2,修改母串中xxx位置的字母 题解 字符串哈希套线段树裸题(注意查询操作,对于类似的区间合并,常用该种查询方式) 还有一个坑,代码中有说 代码实现 #include <stdio.h>//字符串哈希套线段树-AC #...

Daniel__d的博客 314

VUE3如何使得大屏自适应的几种方法?

16:9。

weixin_42711805的博客 1万+

雷电模拟器安装面具环境并过软件检测系列(看这一篇就够了!)

雷电模拟器安装面具环境并过基本软件的环境检测

qq_45059975的博客 6万+

Xor Sum 2 (atcoder) (前缀异或和技巧)

There is an integer sequence A of length N. Find the number of the pairs of integers l and r (1≤l≤r≤N) that satisfy the following condition: Al xor Al+1 xor … xor Ar=Al + Al+1 + … + Ar Here, xor den...

代码行 1391

基于三轴加速度计的塑料水管泄漏振动检测技术全解析

在流体力学与结构动力学领域,管道振动分析是评估系统健康状态的关键技术。其基本原理在于,当管道内流体状态发生异常(如泄漏)时,会引发管壁产生特定的机械振动信号。这项技术的核心价值在于实现了对管道系统的非侵入式、在线监测,能够提前预警潜在故障,避免资源浪费与次生灾害。在智慧城市与智能水务等应用场景中,它对于保障供水管网安全、提升运维效率具有重要意义。本文聚焦于如何利用高精度的三轴加速度计,精准捕捉塑料水管因泄漏产生的微弱振动,并通过信号处理与机器学习算法,构建一套从数据采集到泄漏识别与定位的完整工程解决方案。

weixin_32239523的博客 407

hdu 3973 字符串hash+线段树

http://acm.hdu.edu.cn/showproblem.php?pid=3973 Problem Description You are given some words {Wi}. Then our stupid AC will give you a very long string S. AC is stupid and always wants to know w

ACM,再见! 1371

二十一、SAP-库存管理

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1810

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

教会你如何用自己的数据集转换成对应格式的数据集以及如何训练YOLO11-pose关键点检测

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 5418

hdu3973 线段树+哈希

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3973 题解:m组询问子串是否出现过,和单点修改。将字符串哈希,放进线段树合并就可以了,根据下面的公式合并就行了 #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;algorithm&gt; #define ull unsigned ...

Exception 310

机器学习kaggle报告-Facial Keypoints Detection【完整解题过程+代码】

在处理面部关键点检测任务时,首先需要将存储在 CSV 文件中的图像数据转换为可以显示和分析的图像。数据集中每个图像是以一个一维数组的形式存储,其中包含了图像的所有像素值。为了将这些数据转化为实际的图像,我们需要按照一定的规则将这些像素值重新排列为一个二维矩阵(即图像的行列)。下面是一个案例,展示了如何将数据集中的图像数据转化为图片。转化过程读取CSV文件:首先,我们需要读取包含图像数据的 CSV 文件,通常该文件包含多张图像的像素值。每一行表示一张图像,并且包含图像的像素值列表。提取图像数据。

一键难忘的博客 3353

AC's String HDU3973

http://acm.hdu.edu.cn/showproblem.php?pid=3973 线段树维护HASH #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu

霁月难逢 彩云易散 985

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

HDU 3973 AC's String (substr 强行匹配)

HDU 3973 AC's String (substr 强行匹配)

Tc的专栏 1488

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

HDU 3973 AC's String 字符串哈希

HDU 3973 通过哈希函数将一个字符串转化为一个整数,通过特定的方式可以使得这个哈希值几乎没有冲突(这就是关键之处,几乎没有视为没有= =!, 其实也可以考虑实现哈希冲突时的处理,只是这道题没必要而已),然后使用线段树维护修改后的哈希值。 因为输入的字符串只有26个,考虑使用一个大于等于26的素数p作为进制,然后将原串转化为一个p进制的数mod 2^63(也相当于自然溢出),然后这个数存入...

weixin_30900589的博客 110

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

AI短剧批量生产链路:凤希AI全自动短剧生成方案部署与验收

在内容工业化生产趋势下,AI视频生成正从单一环节工具走向全链路自动化流水线。其核心原理是将文本剧本、角色形象、分镜绘制、语音合成、字幕压制与视频拼接等模块解耦,再通过任务队列串联成端到端的生成管道。这种架构的价值在于显著降低系列短剧的重复制作成本,尤其适合角色设定固定、剧情模板明确的批量内容场景。对于抖音、快手等竖屏短剧团队,以及需要本地化部署的AI应用开发者而言,掌握从环境准备、全链路功能测试到API批量调用的完整验收方法,是落地AI短剧生产线的关键。本文以凤希AI全自动短剧生成方案为例,梳理了从单模块验

weixin_33762130的博客 208

hash +线段树 HDU 3973 AC's String

本题使用字符串的Hash来解决。将一个字符串看成是一个P进制的数字(可以联想10进制数),那么可以知道每一个字符串都可以被唯一表示(P> 256, 并不考虑高精度)。可是由于字符串的长度比较大,那么我们无法保存如此大的数字。于是使用Hash mod2^64来作为Hash.(的却可能会冲突,可是冲突的概率趋于无穷小)然后就是Hash(s,P) = s[0]*P...

weixin_30301449的博客 71

fzu 2045 \ hdu 3973 AC's String(线段树+RK)

题意:给出10000个模式串和一个长度为100000的匹配串,有两种操作: 1.查询匹配串的子串[L,R]是否存在于模式串中 2.修改匹配串某个位置的字符 解法:由于RK函数满足区间加法啊,因此可以用线段树动态维护和查询某个子串的hash值,得到子串的hash值,剩下的就是普通的rk了。 将所有模式串的hash值放入map中,对于hash值相同的模式串使用链表串联起来,当获取某个子串的

新博客地址:sensirly.github.io 1319

HDU - 3973 AC's String(Hash+线段树)

http://acm.hdu.edu.cn/showproblem.php?pid=3973 题意 给一个词典和一个主串。有两种操作,查询主串某个区间,问这主串区间中包含多少词典中的词语。修改主串某一位置的字符。 分析 题目要求区间查询,和单点更新,那么最先想到的应该是线段树。可字符串怎么利用线段树呢?用hash!首先将词典按规则hash后放入map,然后将主串的hash值放置入线段...

weixin_34384681的博客 113

hdu 3973 AC's String(字符串hash+线段树单点修改)

题意: 题意:给出10000个模式串和一个长度为100000的匹配串,有两种操作: 1.查询匹配串的子串[L,R]是否存在于模式串中 2.修改匹配串某个位置的字符 解析: 将一个字符串看成是一个P进制的数字,那么可以知道每一个字符串都可以被唯一表示(P>256P> 256,并不考虑高精度)。可是由于字符串的长度比较大,那么我们无法保存如此大的数字。于是使用Hash mod2^64

小G的ACM之路 759

hdu 3973 AC's String 字符串哈希处理 查询子串是否是模式串 可以修改

Problem Description You are given some words {Wi}. Then our stupid AC will give you a very long string S. AC is stupid and always wants t

kongming_acm的专栏 1049

Codeforces Beta Round #7, problem: (D) Palindrome Degree

#include #include #include #include __int64 dp[5000000+5]; char s[5000000+5]; using namespace std; int main(void) { __int64 ans=0,l=0,r=0,k=1; scanf("%s",s); for(int i=0;s[i];i++) {

1292765944的专栏 1639

Codeforces Round #166 (Div. 2) D - Good Substrings

题意说的很清楚了,就是要寻找满足某一条件的不同字串个数。 方法一: 寻找不同字串个数体型很直接的一种方法就是把字符串hash值保存在set或者数组中,统计其中不同的个数。 //一个长为n的字符串的字串个数为n*(n+1)/2 #include #include #include #include #include #define multiple 1000000007 //这里mul

1292765944的专栏 1607

Codeforces 213E - Two Permutations

用线段树维护一段序列的HASH值 #include #include #define N 200010 #define M 1000003 //prime #define Mod 1000000007 //prime typedef long long ll; using namespace std; ll tem[N],sum,s; int num[N],pos[N]; struct T

1292765944的专栏 1501
上一篇: CF 113B || CF196D
下一篇: Codeforces Beta Round #7, problem: (D) Palindrome Degree
Benzema67
博客等级 码龄15年 120粉丝 357原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值