心得:这一道题其实就是自己打暴力打出来的

没有想到正解真的就是暴力枚举

我的做法是这样的

就是枚举A字符串中长度为x的子串

看它是不是B串的子序列

接下来是我的绝望考试代码(100分AC)

//light
/*
这一道题我个人的思路就是二分答案+暴力 */
#include<bits/stdc++.h>
using namespace std;
string A,B;
/*
可以逆序枚举字符串,用ne[i][j]表示i位置的下一个j+'a’字母的位置
*/
int ne[][];/*
void Yuchuli(){
for(int i=B.length()-1;i>=0;i--){
int j=B[i]-'a';
int k=i-1;
while(k>=0&&B[k]-'a'!=j){
ne[k][j]=i;
k--;
// cout<<k<<' '<<j<<' '<<B[i]<<endl;
}
if(B[k]-'a'==j)
ne[k][j]=i;
}
}*/
int Zixulie(int l,int r){
int i=l;int k=;
// cout<<l<<" "<<r<<endl;
while(k<B.length()){
// j=ne[j][A[i]-'a'];
int flag=;
for(int j=k;j<B.length();j++)
if(A[i]==B[j]){
flag=;
// cout<<i<<" "<<A[i]<<" "<<j<<" "<<B[j]<<" "<<k<<endl;
k=j+;i++;
//cout<<i<<" "<<j<<endl;
break;
}
if(flag==)
break;
}
if(i>r)
return ;
else
return ;
}
bool check(int llenA){
//现在既然已经预处理出来了 就枚举区间 判断是否是子序列
for(int i=;i+llenA-<A.length();i++)
if(Zixulie(i,i+llenA-)==)
return false;
return true;
}
int main()
{
//freopen("light.in","r",stdin);
//freopen("light.out","w",stdout);
cin>>A>>B;
// Yuchuli();
// for(int i=0;i<B.length();i++){
// for(int j=0;j<26;j++)
// cout<<ne[i][j]<<" ";
// cout<<endl;
// } int l=,r=,ans=-;
while(l<r){
int mid=(l+r)>>;
if(mid>A.length()||mid>B.length()){
r=mid-;
continue;
}
// cout<<l<<" "<<r<<endl;
if(check(mid)==){
ans=mid;
r=mid;
}
else
l=mid+;
}
cout<<ans;
return ;
}/*
aabbcc
abcabc Tido 2019/7/25 星期四 10:41:04
abcdefddbba
aabbcce */

可以看出来,我把这一道题想复杂了

或者说我觉得这道题很麻烦以至于自己的代码很麻烦

我在程序中的很多地方其实是不必要的

例如二分答案

其实一个个从小往大枚举就行(其实都行)

然后我判断的地方一开始也有一点麻烦

这一道题老师的正解是

就是枚举以i为起点,长度为j的子串 最多也就n2

(》》我一开始还在考虑优化)

n最大2000 20002 =4000000=4*106其实还是可以接受的饿哦

综上所述这一道题就是一个超级简单的模拟枚举暴力求解啦

以后在做题的时候稍微对自己的想法和思路有点信心

以后还要学会自己算一下时间复杂度和空间大小,避免卡bug!

Biu加油

light题目讲解 7.25模拟赛T1的更多相关文章

  1. 12.25模拟赛T1

    可以区间dp,但是复杂度太高. 所以应该是贪心,怎么贪心呢? 这种题目,最好还是手玩找一些规律. 可以发现,由于保证可以m次填完,所以颜色之间没有相互包含关系. 比较像分治的模型. 所以考虑拿到一个区 ...

  2. 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物

    T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...

  3. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  4. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  5. 【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)

    几个性质 我们通过推式子可以发现: \[B⇒AC⇒AAB⇒AAAC⇒C\] \[C⇒AB⇒AAC⇒AAAB⇒B\] 也就是说: 性质一: \(B,C\)可以相互转换. 则我们再次推式子可以发现: \[ ...

  6. NOIP欢乐模拟赛 T1 解题报告

    小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...

  7. [NOIP2018校模拟赛]T1 阶乘

    题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...

  8. [NOIP2018校模拟赛]T1聚会 party

    题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...

  9. 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)

    打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...

随机推荐

  1. H5 存储数据sessionStorage

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. 21个项目玩转深度学习:基于TensorFlow的实践详解01—MNIST机器学习入门

    数据集 由Yann Le Cun建立,训练集55000,验证集5000,测试集10000,图片大小均为28*28 下载 # coding:utf-8 # 从tensorflow.examples.tu ...

  3. MD5登陆密码的生成

    package com.cinc.ecmp.userpermission.utils; import java.security.MessageDigest;import java.security. ...

  4. gitLab操作规范和项目流程

    刚做完一个项目并且艰难得上线,对整个项目流程和gitLab规范 有了一些心得,给新来的同学普及一下. 最先产品会写一篇需求文档,咱们要先看需求文档对项目有一个大致了解,然后产品喊后端.ui.前端  一 ...

  5. 牛客多校第四场sequence C (线段树+单调栈)

    牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...

  6. 设计模式2——状态模式State

    参考链接: 设计模式之状态模式:https://www.cnblogs.com/haoerlv/p/7777789.html 设计模式系列之状态模式:https://www.jianshu.com/p ...

  7. HDU1556 Color the ball & 牛客 contest 135-I 区间 [差分标记]

    一.差分标记介绍 差分标记用来解决针对区间(修改-查询)的问题,复杂度比线段树要更低.推荐这个博客. 例如,给数组中处于某个区间的数进行加减操作,然后查询某个位置上数的变化值. 二.HDU1556 C ...

  8. ELK学习实验003:Elasticsearch 集群安装

    前面已经介绍了Elasticsearch这个工具,并对单机安装做了简单介绍,现在使用三台机器做一个elasticsearch集群 一 环境准备 1.1 机器准备 1.2 同步时间 [root@node ...

  9. DEVOPS技术实践_11:Jenkins集成Sonar

    前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...

  10. [工具] Git版本管理(四)(贡献开源代码、git配置、git免密、gitignore)

    一.开源项目贡献代码 1.fork项目代码 例如,我们想向tornado框架贡献代码,首先搜索tornado. 然后,将tornado的代码fork到我们的仓库中. 2.clone到本地进行开发 克隆 ...