当前位置: 首页 > news >正文

【学习笔记】CF613E Puzzle Lover

这题本质上还是数据结构。

首先看到这个 2 × n 2\times n 2×n的网格图就很容易想到分治。我们还是考虑把要统计的东西变得可视化,一条路径要么穿过中线一次,那么我们可以将两边的串拼起来得到答案;要么穿过中线两次,考虑其中一边的路径是固定的,那么我们枚举两个端点再判断一下和原串是否匹配的上就做完了。那么考虑预处理出 d p i , j , 0 / 1 , 0 / 1 dp_{i,j,0/1,0/1} dpi,j,0/1,0/1表示从位置 ( 1 / 2 , i ) (1/2,i) (1/2,i)开始,匹配长度为 j j j,向左/右走的方案数,这事实上非常好转移,可以自己编一下。当然可能还要把串正着和倒着处理一边,总之挺麻烦的。

将网格图翻转后做两次即可得到答案。求 L c p Lcp Lcp可以用暴力 d p dp dp代替。事实上也并不需要分治。注意不要算重

细节题,贼容易写挂。

复杂度 O ( n 2 ) O(n^2) O(n2)

#include<bits/stdc++.h>
#define ll long long
#define fi first
#define se second
#define pb push_back
#define inf 0x3f3f3f3f
#define db double
#define cpx complex<db>
using namespace std;
const int mod=1e9+7;
const int N=2005;
int n,K,Right[2][N][N],Left[2][N][N],dpl[2][N][N],res;
string s[2],str;
void add(int &x,int y){x=(x+y)%mod;
}
void solve(){for(int i=0;i<2;i++){for(int j=n-1;j>=0;j--){for(int k=0;k<K;k++){Right[i][j][k]=(s[i][j]!=str[k])?0:((j!=n-1&&k>=1)?(Right[i][j+1][k-1]+1):1);}}}for(int i=0;i<2;i++){for(int j=0;j<n;j++){for(int k=0;k<K;k++){Left[i][j][k]=(s[i][j]!=str[k])?0:((j>=1&&k>=1)?(Left[i][j-1][k-1]+1):1);}}}memset(dpl,0,sizeof dpl);for(int i=0;i<2;i++){for(int j=0;j<n;j++){if(s[i][j]==str[0]){dpl[i][j][0]=1;}}}//fixedfor(int i=0;i<n;i++){for(int j=i;j<n;j++){for(int k=0;k<2;k++){//strangeif(Left[k][j][2*(j-i+1)-1]>=j-i+1&&Right[k^1][i][j-i]>=j-i+1){add(dpl[k][j][2*(j-i+1)-1],1);}}}}for(int k=1;k<K;k++){for(int i=0;i<2;i++){for(int j=0;j<n;j++){if(s[i][j]==str[k]){if(j)add(dpl[i][j][k],dpl[i][j-1][k-1]);if(s[i^1][j]==str[k-1]){if(j&&k-2>=0)add(dpl[i][j][k],dpl[i^1][j-1][k-2]);}}}}}
}
void getans(){//fixedfor(int i=0;i<2;i++){for(int j=0;j<n;j++){add(res,dpl[i][j][K-1]);}}for(int i=1;i<n;i++){for(int j=i+1;j<n;j++){for(int k=0;k<2;k++){if(Right[k][i][K-1]>=j-i+1&&K-(j-i+2)>=0&&Left[k^1][j][K-(j-i+2)]>=j-i+1&&K-2*(j-i+1)-1>=0){add(res,dpl[k^1][i-1][K-2*(j-i+1)-1]);}}}}
}
int main(){ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>s[0]>>s[1]>>str,n=s[0].size(),K=str.size();//fixedif(K==1){for(int i=0;i<2;i++){for(int j=0;j<n;j++){if(s[i][j]==str[0]){add(res,1);}}}cout<<res;return 0;}if(K==2){for(int i=0;i<2;i++){for(int j=0;j<n-1;j++){if(s[i][j]==str[0]&&s[i][j+1]==str[1]){add(res,1);}if(s[i][j+1]==str[0]&&s[i][j]==str[1]){add(res,1);}}}for(int i=0;i<2;i++){for(int j=0;j<n;j++){if(s[i][j]==str[0]&&s[i^1][j]==str[1]){add(res,1);}}}cout<<res;return 0;}//fixedsolve();getans();//fixedswap(s[0],s[1]),reverse(s[0].begin(),s[0].end()),reverse(s[1].begin(),s[1].end());solve();getans();cout<<res<<"\n";
}

相关文章:

【学习笔记】CF613E Puzzle Lover

这题本质上还是数据结构。 首先看到这个 2 n 2\times n 2n的网格图就很容易想到分治。我们还是考虑把要统计的东西变得可视化&#xff0c;一条路径要么穿过中线一次&#xff0c;那么我们可以将两边的串拼起来得到答案&#xff1b;要么穿过中线两次&#xff0c;考虑其中一边的…...

软考报名资格审核要多久?证明材料要哪些?

软考报名资格审核要多久&#xff1f; 一般来说&#xff0c;软考资格审核时间不超过1个工作日。当然&#xff0c;每个地区的具体情况都不一样。有些地区估计需要1-3个工作日。总之&#xff0c;为了顺利成功报名&#xff0c;大家应尽快报名&#xff0c;不要拖到最后一天。 软考…...

2023-04-27 polardbx-LSM-tree的Parallel Recovery性能优化

背景 数据库的Crash Recovery时长关系到数据库的可用性SLA、故障止损时间、升级效率等多个方面。本文描述了针对X-Engine数据库存储引擎的一种Crash Recovery优化手段,在典型场景下可以显著缩短数据库实例的故障恢复时间,提升用户使用感受。 当前面临的问题 X-Engine是阿里…...

创作纪念日让 AI 与我共同记录下今天 — 【第五周年、1460天】

今天正是五一&#xff0c;收到一条消息&#xff1f; 五一还要我加班 &#x1f60f;&#xff1f; 喔&#xff0c;原来是 CSDN 给我发的消息呀&#xff01;我在 CSDN 不知不觉已经开启第五周年啦&#xff01; 目录 1.机缘2.收获3.日常4.我与 AI 的“合作”part Ipart II Super al…...

枚举法计算24点游戏

# 请在此处编写代码 # 24点游戏 import itertools# 计算24点游戏代码 def twentyfour(cards):"""(1)itertools.permutations(可迭代对象)&#xff1a;通俗地讲&#xff0c;就是返回可迭代对象的所有数学全排列方式。itertools.permutations("1118") -…...

@Cacheable注解

Cacheable注解是Spring框架中提供的一种缓存技术&#xff0c; 用于标记一个方法的返回值可以被缓存起来&#xff0c;当再次调用该方法时&#xff0c;如果缓存中已经存在缓存的结果&#xff0c;则直接从缓存中获取结果而不是再次执行该方法&#xff0c;从而提高系统的性能和响应…...

CentOS分区挂载 fdisk、parted方式解析

1 介绍 在linux中&#xff0c;通常会将持久化数据保存到硬盘当中&#xff0c;但是硬盘一把会比较大&#xff0c;因此我们为了方便管理&#xff0c;会将一个硬盘分成多个逻辑硬盘&#xff0c;称之为分区。 为了能够让分区中的文件使得能让操作系统处理&#xff0c;则需要对分区…...

BuildKit

介绍 BuildKit是一个现代化的构建系统&#xff0c;主要用于构建和打包容器镜像。它是Docker官方的构建引擎&#xff0c;支持构建多阶段构建、缓存管理、并行化构建、多平台构建等功能。BuildKit还支持多种构建语法和格式&#xff0c;包括Dockerfile、BuildKit Build Specifica…...

c++ 11标准模板(STL) std::vector (二)

定义于头文件 <vector> template< class T, class Allocator std::allocator<T> > class vector;(1)namespace pmr { template <class T> using vector std::vector<T, std::pmr::polymorphic_allocator<T>>; }(2)(C17…...

Python 循环技巧

目录 在字典中循环时&#xff0c;用 items() 方法可同时取出键和对应的值&#xff1a; 在序列中循环时&#xff0c;用 enumerate() 函数可以同时取出位置索引和对应的值&#xff1a; 同时循环两个或多个序列时&#xff0c;用 zip() 函数可以将其内的元素一一匹配&#xff1a…...

【Java笔试强训 7】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;Fibona…...

工作7年的程序员,明白了如何正确的“卷“

背景 近两年&#xff0c;出台和落地的反垄断法&#xff0c;明确指出要防止资本无序扩张。 这也就导致现在的各大互联网公司&#xff0c;不能再去染指其他已有的传统行业&#xff0c;只能专注自己目前存量的这些业务。或者通过技术创新&#xff0c;开辟出新的行业。 但创新这…...

数学建模——查数据

如果选择C题的小伙伴常常需要查找一些数据&#xff0c;那么这些数据一般都可以从哪里找到呢&#xff1f; 常用的查数据平台 优先在知网、谷歌学术等平台搜索国家统计局 最全面&#xff0c;月度季度年度&#xff0c;各地区各部门各行业&#xff0c;包罗万象 https://data.stat…...

PAT A1019 General Palindromic Number

1019 General Palindromic Number 分数 20 作者 CHEN, Yue 单位 浙江大学 A number that will be the same when it is written forwards or backwards is known as a Palindromic Number. For example, 1234321 is a palindromic number. All single digit numbers are pa…...

ChatGPT会颠覆SEO内容创作吗

近几年 AI 的发展日新月异。除了搜索算法本身大规模应用人工智能&#xff0c;我也一直关注着 AI 用于写作的进展。 上篇关于 Google 有用内容更新的帖子还在说&#xff0c;高质量内容创作是 SEO 最难的事之一&#xff0c;对某些网站来说&#xff0c;如果能有工具帮助&#xff…...

Maven私服搭建

为什么要搭建私服 通常在maven项目的pom.xml文件中引入了某个依赖包之后&#xff0c;maven首先会去本地仓库去搜索&#xff0c;本地仓库搜索不到会去maven的配置文件settings.xml中配置的maven镜像地址去找&#xff0c;比如&#xff1a; <mirrors><!-- mirror| Specif…...

Ajax和Json综合案例

1. 查询所有 创建brand.html,使用axios发送请求&#xff0c;其中查询一般采用get的请求方式 <script src"js/axios-0.18.0.js"></script><script>//1. 当页面加载完成后&#xff0c;发送ajax请求window.onload function () {//2. 发送ajax请求axi…...

【genius_platform软件平台开发】第九十四讲:int64_t的格式化问题(lld和PRId64)

问题起因是在进行上位机软件优化的工作安排时&#xff0c;同事对unsigned long long 类型的时间戳进行了格式化输出优化&#xff0c;从%ull优化为了% PRIu64&#xff0c;我进行代码合并请求处理的时候突然感觉这个可以仔细查一下。查阅到的相关资料如下&#xff1a; * 1. int6…...

多模态之clip

论文&#xff1a;Learning Transferable Visual Models From Natural Language Supervision Github&#xff1a;https://github.com/OpenAI/CLIP OpenAI出品 论文通过网络爬取4亿(image, text)对&#xff0c;使用对比学习的方法训练得到clip&#xff08;Contrastive Languag…...

Lombok常用注解

文章目录 一、简介二、Idea中配置三、Maven中配置四、相应注解1、Data2、RequiredArgsConstructor3、AllArgsConstructor4、NoArgsConstructor5、Getter/Setter:6、ToString7、EqualsAndHashCode8、Builder9、NonNull10、Log11、Slf4j12、Log4j213、SneakyThrows14、Cleanup15、…...

KKManager终极指南:三步轻松管理你的游戏Mod和插件

KKManager终极指南&#xff1a;三步轻松管理你的游戏Mod和插件 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager KKManager是一款专为Illusion系列游戏设计的M…...

零基础玩转CTFShow Web1-7:手把手教你用Burp Suite和蚁剑拿flag

零基础玩转CTFShow Web1-7&#xff1a;从工具配置到实战渗透全指南 第一次接触CTF比赛时&#xff0c;看着其他选手在终端里敲出神秘代码就能拿到flag&#xff0c;总觉得这是黑客才能掌握的"黑魔法"。直到自己动手尝试才发现&#xff0c;只要掌握正确的工具和方法&…...

NaViL-9B多模态模型5分钟快速部署:图文问答零基础入门教程

NaViL-9B多模态模型5分钟快速部署&#xff1a;图文问答零基础入门教程 1. 认识NaViL-9B多模态模型 NaViL-9B是上海人工智能实验室推出的原生多模态大语言模型&#xff0c;它不仅能像传统语言模型一样处理纯文本问答&#xff0c;还具备强大的图片理解能力。这意味着你可以上传…...

资源占用优化:OpenClaw在RTX4090D上并发控制策略

资源占用优化&#xff1a;OpenClaw在RTX4090D上并发控制策略 1. 为什么需要关注OpenClaw的资源占用&#xff1f; 去年冬天&#xff0c;当我第一次在RTX4090D上部署OpenClaw对接Qwen3-32B模型时&#xff0c;系统频繁崩溃的场景至今记忆犹新。原本以为24GB显存足以应对常规任务…...

告别性能瓶颈:如何用NVIDIA Profile Inspector释放显卡90%潜能?

告别性能瓶颈&#xff1a;如何用NVIDIA Profile Inspector释放显卡90%潜能&#xff1f; 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector 为什么官方显卡控制面板永远像个"锁着的工具箱"&#…...

基于springboot图书综合服务平台设计与开发(源码+精品论文+答辩PPT等资料)

博主介绍&#xff1a;CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…...

RK3568 NPU RKNN(五):RKNN-ToolKit2性能与内存评估实战解析

1. 环境准备与工具链搭建 在开始RKNN-ToolKit2的性能与内存评估之前&#xff0c;我们需要先搭建完整的开发环境。这里以野火LubanCat开发板为例&#xff0c;具体硬件配置为RK3568芯片4GB内存版本。开发主机建议使用Ubuntu 20.04系统&#xff0c;确保Python版本在3.6-3.8之间。 …...

OpenClaw定时任务:利用GLM-4.7-Flash实现智能日程管理

OpenClaw定时任务&#xff1a;利用GLM-4.7-Flash实现智能日程管理 1. 为什么需要智能化的定时任务 记得上个月我连续错过了三个重要会议&#xff0c;原因很简单——手动设置的日历提醒被其他通知淹没了。这种经历让我开始寻找更智能的解决方案。传统定时工具只能机械地执行预…...

AI 自动获客系统正在重构企业线索获取方式

在数字化营销持续深化的当下&#xff0c;企业获客成本逐年攀升&#xff0c;传统 “广撒网” 的线索获取模式早已难以为继。销售团队大量时间耗费在无效线索筛选上&#xff0c;真正用于精准跟进、成交的时间不足两成&#xff0c;人力与投入的失衡让企业陷入增长内耗。而 AI 自动…...

OpenClaw安全指南:使用GLM-4.7-Flash时的权限管理

OpenClaw安全指南&#xff1a;使用GLM-4.7-Flash时的权限管理 1. 为什么需要特别关注OpenClaw的安全配置 当我第一次在本地部署OpenClaw并接入GLM-4.7-Flash模型时&#xff0c;最让我震惊的是这个框架赋予AI的权限范围。它不仅能读取我的文件&#xff0c;还能执行系统命令、发…...