【GDOI 2016 Day1】第二题 最长公共子串

学习Python,小白如何搭建Python环境? 学习Python,首先需要搭建好Python环境,主要分为【运行环境搭建】、【开发环境搭建】以及【Python环境配置】三个环节,接下来我将对Python环境搭建这三个部分进行介绍。 阅读详情

Description

这里写图片描述

抽象题意:给出两字符串S,T,求经过一些奇怪的操作后的最长公共子串

Solution

很显然一些有交集的区间是可以合并的,
一个区间内我们只需要记录每个字母的个数,
我们就可以枚举两个字符串的相对位置,然后在重叠的部分用指针维护,
设区间i,j是合法的,
我们现在把j往后移一位,j所在的区间的字母Tj个数就-1,
然后把再移动指针i去使其合法,i所在的区间的Ti个数就+1,并且i++;直到合法或移爆为止。

Code

#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int N=2500;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
bool ZM(char ch){return('a'<=ch && ch<='z');}
int n,m,m1,ans;
int a[N],b[N];
int ag[N];
struct qqw{int s,t;}c[N*5];
int f[N][28],F[N][28],f0;
bool PX(qqw a,qqw b){return(a.s<b.s || a.s==b.s&&a.t<b.t);}
void solue(int q,int w)
{
    int i=q,j,I=w-q;
    for(j=q;j<=n && j+I<=m;j++)
    {
        while(!f[ag[j]][b[j+I]] && i<=j)
        {
            if(i<j)f[ag[i]][b[i+I]]++;i++;
        }
        if(i<=j)f[ag[j]][b[j+I]]--;
        ans=max(ans,j-i+1);
    }
    while(i<j)f[ag[i]][b[i+I]]++,i++;
}
int main()
{
    freopen("lcs.in","r",stdin);
    freopen("lcs.out","w",stdout);
    int q,w;char ch;
    while(!ZM(ch=getchar()));
    for(;ZM(ch);ch=getchar())b[++m]=ch-96;b[m+1]=27;
    while(!ZM(ch=getchar()));
    for(;ZM(ch);ch=getchar())a[++n]=ch-96;a[n+1]=0;
    read(m1);
    fo(i,1,m1)read(c[i].s),read(c[i].t);
    c[++m1].s=c[m1].t=n-1;
    sort(c+1,c+1+m1,PX);
    q=w=0;
    fo(i,1,m1)
    {
        c[i].s++,c[i].t++;
        if(q<c[i].s)while(q+1<=c[i].s)ag[++q]=++w;
        fo(j,q+1,c[i].t)ag[j]=w;
        q=max(q,c[i].t);
    }
    f0=w;ans=0;
    fo(i,1,n)F[ag[i]][a[i]]++;
    fo(i,1,f0)fo(j,1,26)f[i][j]=F[i][j];
    fo(i,2,n)solue(i,1);
    fo(i,1,m)solue(1,i);
    printf("%d\n",ans);
    return 0;
}
【异常】OpenClaw 项目 `fetch failed` 报错问题排查与解决方案Response interrupted: TypeError: fetch failed 针对无超时控制、异常兜底缺失导致的请求中断,封装标准化的安全请求工具,一次性解决超时控制、异常捕获、日志埋点三大问题,全项目替换原生。:将项目运行的 Node.js 版本升级至 18.x 及以上 LTS 版本,使用 Node.js 内置的稳定版。实现的网络请求环节,包括但不限于:第三方开放接口调用、内部服务接口通信、跨域资源请求、外部配置拉取等场景。:针对无法升级 Node.js 版本的存量环境,通过社区稳定兼容包替换原生。类型异常,直接造成业务请求响应中断。第二步:业务代码改造,替换原生。 阅读详情

相关推荐

[Multisim][模电实验]简易函数信号发生器的设计与实现_北京邮电大学2019级信通院电子电路实验下

本文记述了笔者设计并实现以±12V供电电压输出1KHZ~10KHZ频率连续可调的方波、三角波和正弦波的过程。其中,方波输出电压峰峰值为12V(误差<20%),占空比可调、三角波输出电压峰峰值为8V(±20%),正弦波输出电压峰峰值≥1V。

lgc0208的博客 4万+

GDOI 2016 Day1 T2 最长公共子串

题意 给出两个字符串A和B,求最长公共子串。 其中B串中有k个区间的字符可以任意调换。 |A|,|B|&lt;=2000,k&lt;=100000 题解 一个显然的性质就是,如果两个区间有交集,那是可以并成一个的 然后我们就来考虑怎么做。。 一个十分朴素的想法,是枚举两个的起点,然后暴力往后匹配 这样做是O(n3)O(n3)O(n^3)的,不满足要求 但是我们考虑一下,枚...

OZY的博客 253

ArcGIS Pro中文帮助离线包安装指南:版本匹配与操作详解

本文详细指导如何为ArcGIS Pro安装中文帮助离线包,解决在线帮助访问不畅的问题。核心在于确保软件版本与离线包的精确匹配,并提供了从版本查看、离线包获取、安装步骤到软件内配置的完整操作流程。文中重点强调了版本匹配的重要性,并分享了高效使用本地帮助搜索及管理多版本帮助的实用技巧。

whisky的博客 990

【JZOJ 4486】【GDOI 2016 Day1】第二题 最长公共子串

Description给你两个字符串S,T 给你N个区间,S串中这些区间内的字符可以随意改变在区间中的位置。 求S,T可以达到的的最长公共子串长度。Analysis可以用双指针移动,我打的是dp。 设f[i][j]f[i][j]表示S串的第i个区间与T串的第j个字符的LCS。 预处理一堆东西,转移的话自行脑补。Code#include<cstdio> #include<cstring>

LYD729 913

一文搞定学术英语写作 (斯坦福SCI论文写作课程笔记)

0.前言: 本文基于斯坦福Kristin Sainani 教授的学术论文写作公开课——SCI论文写作(Writing in the Sciences)。在此基础上进行章节顺序的重排及部分内容的删减,以方便第一次进行英语学术论文写作的同学快速上手。 时间充足和想要系统学习英文学术写作的同学,十分建议观看完整课程视频,一定会受益匪浅!课程地址如下: 课程B站地址:https://www.bilibili.com/video/BV1zv41177JQ 1.论...

Ogmx的博客 3万+

实战!在 AMD RX 9070 XT (16G) 上使用原生 Windows ROCm 7.1 部署 ComfyUI + Z-Image-Turbo

本文详细介绍了如何在Windows系统下为AMD Radeon RX 9070 XT显卡配置Z-Image-Turbo AI绘图环境。主要内容包括:安装VS Build Tools和最新显卡驱动,配置Conda Python 3.12环境,安装ROCm 7.1.1 SDK及PyTorch适配版本,部署ComfyUI可视化界面。重点解决了AMD显卡在AI绘图中的适配问题,通过--use-split-cross-attention参数优化显存使用,最终成功搭建了可在消费级16G显存设备上运行的AI绘图环境

qq_33614778的博客 4696

【GDOI2016Day1】第二题 最长公共子串

DescriptionInputOutputSample InputSample OutputData Constraint分析如果两个操作区间有交集,那么可以把它们合并。(容易证明) n,m较小,可以设f[i][j] 表示从S和T的第i、j个位置开始最多能匹配多少位。直接计算会超时,因此考虑dp对于S的一个位i,用l[i],r[i]表示它所在的操作区间的两个边界(如果它不被包含,则视作它被[i.

WorldWide_D的博客 764

AI初识—LLM、Ollama、Llama都是些个啥?

LLM指的是大语言模型(Large Language Model),是一种基于深度学习的模型,能够理解和生成自然语言。它通过大量文本数据进行训练,具备了理解上下文、生成连贯文本和回答问题的能力。著名的LLM包括OpenAI的GPT系列和Google的BERT。在AI技术快速发展的背景下,LLM、Ollama和Llama代表了现代自然语言处理的不同方面。LLM为我们提供了强大的语言理解能力,Ollama为模型的部署和管理提供了便利,而Llama则在效率和多样性上不断推进。

小蜗牛的珍贵百宝箱 4631

JZOJ 4485【GDOI 2016 Day1】第一题 中学生数学题

Description 给定商品成本 p0 和系数 k ,常数 n0 ,设价格为 p ,购买商品人数满足n1=⌊n0−k∗p⌋n1 =⌊ n0 -k*p⌋ 其中 p , k 为实数, n0 为整数。 题目分为两部分: 1)可以设置一个价格,求最大利润。 2)可以设置两个价格,p1,p2 p1 , p2 ,有 n1=⌊n0−k∗p1⌋n1 = ⌊n0-k*p1 ⌋ 的人按 p1 购买,n2=

LYD729 753

SAP ABAP实战:手把手教你用BAPI_BILLINGDOC_CREATEMULTIPLE批量开票(附完整代码与避坑指南)

本文详细解析了SAP ABAP中BAPI_BILLINGDOC_CREATEMULTIPLE批量开票的全流程,包括参数配置、事务控制、错误处理及性能优化。通过实战案例和完整代码示例,帮助开发者高效处理大批量发票生成任务,避免常见陷阱,提升开发效率。

weixin_34101914的博客 266

DRV8711驱动器的各寄存器的介绍

drv8711驱动器

PCLintelligence的博客 1635

【GDOI 2016 Day1】第二题 最长公共子串 题解+代码

题目描述给定两个串S,T,其中串T可以在指定区间内无限制次数交换位置,求最长公共字串。输入前两行两个串S,T 接下来一行一个整数k表示区间个数 接下来k行每行两个整数表示一个可以修改的区间输出一行一个整数表示最长公共字串的长度。样例输入abcdafg aafbcd 2 0 2 2 5样例输出6题解我先将区间都加1,这样就把区间从0..n-1变成1..n 可以发现,如果两个区间有交集,那

Jacky35 797

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

【SemiDrive源码分析】【X9芯片启动流程】11 - freertos_safetyos目录Cortex-R5 DIL2.bin 引导程序源代码分析

|~~~热爱生活、努力学习的小伙汁~~~| 2109

[gmoj 4486]【GDOI 2016 Day1】第二题 最长公共子串

Description Input Output 思路: 首先我们要发现一个性质: 如果有 [x1,y1],[x2,y2][x_1,y_1],[x_2,y_2][x1​,y1​],[x2​,y2​]两个区间, 而且 x2⩽y1x_2\leqslant y_1x2​⩽y1​ , 那它就相当于 [min⁡{x1,x2},max⁡{y1,y2}][\min\{x_1,x_2\},\max\{y_1,y_2\}][min{x1​,x2​},max{y1​,y2​}]这样的区间。 (因为你操作可以无限次) 接着

蒟蒻こんにゃく 210

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JZOJ.4486 【GDOI 2016 Day1】第二题 最长公共子串

双指针法(对于字符串)

Luckfort 726

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【总结】GDOI2016总结

本次GDOI反应出了许多问题,首先是实力太弱了,许多题型都没有见过。其次是打程序时的细节处理和打字速度还有待提高。

473

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

{题解}[jzoj4486] GDOI2016 Day1_T2 最长公共子串

jzoj4486 尽管是T2,不过这道题还是能看懂的。 不过,倒也没有那么简单。 题目描述暂无,以后可能会有吧。 题目大意: 给定字符串s,t,求它们之间的最长公共子串 当然没有这么简单,又给定n个区间,区间中(S的)字符可以随意调整

FarmerJohn 2538

最长公共子串

// 最长公共子串.cpp : 定义控制台应用程序的入口点。 // /*用动态规划求解最长公共子串,建立01的二维矩阵表示子串是否相似,找相邻斜对角线的最大长度,每次找下一行的时候更新二维数组, 并且令当前值为其上一行斜对角线的值加一。由于二维矩阵不断的每行每行的更新,所以可以用一维数组代替。用变量保存已经求得的 最大的子串长度,和最后一个子串出现的位置。此方法的时间复杂度为O(m*n),m,n分

Creek Shi 744

ssl1463-公共子串【各种dp之1】

前言:开始水做练习题了,反正难度还是比较大的QAQ。比较dp。emmmmmmmmmmmmmmmmmmm题目大概就是给出两个字符串,蓝后让你求出他们相同的一串(but可以不连续 不连续还叫子串?)的长度。输入abcfbc abfcab输出4解题思路(不存在的思路)看了看题目,不禁陷入沉思这道题有点水了。我们用f[i][j]来表示第一串前i个和第二串前j个的最大值。代码#include<cstdio

QuantAsk 517

【GDOI 2016 Day1】疯狂动物城

题目 分析 注意注意:码农题一道,打之前做好心理准备。 对于操作1、2,修改或查询x到y的路径,显然树链剖分。 对于操作2,我们将x到y的路径分为x到lca(x,y)和lca(x,y)到y两部分。 对于第一部分的某个点i,设它到y的距离为s,那么s=deep[i]+deep[y]-2deep[lca(x,y)],i对答案的贡献为a[i]s(s+1)/2,如果不考虑除以2,设t=deep...

weixin_30407099的博客 171

最大公共子串的长度模板

#include #include #include using namespace std; char a[1003],b[1003]; int dp[1003][1003],len; int main() { int num; scanf("%d",&num); getchar(); while(num--) { int i,j,k=0;

xunalove的博客 521

[gmoj] [GDOI 2016 Day1] 最长公共子串

[gmoj] [GDOI 2016 Day1] 最长公共子串 题目 解题思路 题意 给出k个区间,区间内可任意换位置 最大的公共子串最长为多少 首先不可能枚举出每种情况再找,太慢了 可以想到记录每个区间内每个字母含有多少个 匹配时用一个减去一个 区间内可以随意换,不需要给出具体换成什么样 给出了k个区间 如果区间之间有交点那么就可以合并 因为你可以将它先换到公共区域,再将它放到另一个区间 再将字符串分为一段一段 做一遍初始匹配 l[i][j]表示第i段从匹配串第j位开始,左边有多少位能匹配 r[i]

Y的博客 188

GDOI2016题解

【GDOI 2016 Day1】第一题 中学生数学题 【GDOI 2016 Day1】第二题 最长公共子串 【GDOI 2016 Day1】第三题 有趣的一关 【GDOI 2016 Day1】第四题 疯狂动物城 【GDOI 2016 Day2】第一题 SigemaGO 【GDOI 2016 Day2】第二题 森林之家 【GDOI 2016 Day2】第三题 机密网络 ......

1483

GDOI2016游记

一次在肇庆四会的旅游

不来也不去的一只失忆蝴蝶 2315
上一篇: 【GDOI 2016 Day2】第三题 机密网络
下一篇: 【GDOI 2016 Day1】第四题 疯狂动物城
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值