light题目讲解 7.25模拟赛T1

心得:这一道题其实就是自己打暴力打出来的
没有想到正解真的就是暴力枚举
我的做法是这样的
就是枚举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的更多相关文章
- 12.25模拟赛T1
可以区间dp,但是复杂度太高. 所以应该是贪心,怎么贪心呢? 这种题目,最好还是手玩找一些规律. 可以发现,由于保证可以m次填完,所以颜色之间没有相互包含关系. 比较像分治的模型. 所以考虑拿到一个区 ...
- 2019.2.25 模拟赛T1【集训队作业2018】小Z的礼物
T1: [集训队作业2018]小Z的礼物 我们发现我们要求的是覆盖所有集合里的元素的期望时间. 设\(t_{i,j}\)表示第一次覆盖第i行第j列的格子的时间,我们要求的是\(max\{ALL\}\) ...
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 20180610模拟赛T1——脱离地牢
Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...
- 【2019.7.25 NOIP模拟赛 T1】变换(change)(思维+大分类讨论)
几个性质 我们通过推式子可以发现: \[B⇒AC⇒AAB⇒AAAC⇒C\] \[C⇒AB⇒AAC⇒AAAB⇒B\] 也就是说: 性质一: \(B,C\)可以相互转换. 则我们再次推式子可以发现: \[ ...
- NOIP欢乐模拟赛 T1 解题报告
小澳的方阵 (matrix.cpp/c/pas) [题目描述] 小澳最近迷上了考古,他发现秦始皇的兵马俑布局十分有特点,热爱钻研的小澳打算在电脑上还原这个伟大的布局. 他努力钻研,发现秦始皇布置兵马俑 ...
- [NOIP2018校模拟赛]T1 阶乘
题目: 描述 有n个正整数a[i],设它们乘积为p,你可以给p乘上一个正整数q,使p*q刚好为正整数m的阶乘,求m的最小值. 输入 共两行. 第一行一个正整数n. 第二行n个正整数a[i]. 输出 共 ...
- [NOIP2018校模拟赛]T1聚会 party
题目链接: 聚会 分析: 设每个点到1号点的距离为dist_{i},每个点的权值为x_{i},目标点到1号点的距离为dist,权值为x,那么对于每一次查询,我们讨论三种情况: ① 目标家庭在区间左边( ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
随机推荐
- H5 存储数据sessionStorage
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 21个项目玩转深度学习:基于TensorFlow的实践详解01—MNIST机器学习入门
数据集 由Yann Le Cun建立,训练集55000,验证集5000,测试集10000,图片大小均为28*28 下载 # coding:utf-8 # 从tensorflow.examples.tu ...
- MD5登陆密码的生成
package com.cinc.ecmp.userpermission.utils; import java.security.MessageDigest;import java.security. ...
- gitLab操作规范和项目流程
刚做完一个项目并且艰难得上线,对整个项目流程和gitLab规范 有了一些心得,给新来的同学普及一下. 最先产品会写一篇需求文档,咱们要先看需求文档对项目有一个大致了解,然后产品喊后端.ui.前端 一 ...
- 牛客多校第四场sequence C (线段树+单调栈)
牛客多校第四场sequence C (线段树+单调栈) 传送门:https://ac.nowcoder.com/acm/contest/884/C 题意: 求一个$\max {1 \leq l \le ...
- 设计模式2——状态模式State
参考链接: 设计模式之状态模式:https://www.cnblogs.com/haoerlv/p/7777789.html 设计模式系列之状态模式:https://www.jianshu.com/p ...
- HDU1556 Color the ball & 牛客 contest 135-I 区间 [差分标记]
一.差分标记介绍 差分标记用来解决针对区间(修改-查询)的问题,复杂度比线段树要更低.推荐这个博客. 例如,给数组中处于某个区间的数进行加减操作,然后查询某个位置上数的变化值. 二.HDU1556 C ...
- ELK学习实验003:Elasticsearch 集群安装
前面已经介绍了Elasticsearch这个工具,并对单机安装做了简单介绍,现在使用三台机器做一个elasticsearch集群 一 环境准备 1.1 机器准备 1.2 同步时间 [root@node ...
- DEVOPS技术实践_11:Jenkins集成Sonar
前言 前面已经有介绍sonar的安装,简单应用,下面在简答的研究一下sonar和jenkins集成的简单使用,对于sonar的安装不做介绍 一 sonar的简单介绍 持续检查避免了低质量的代码,比如S ...
- [工具] Git版本管理(四)(贡献开源代码、git配置、git免密、gitignore)
一.开源项目贡献代码 1.fork项目代码 例如,我们想向tornado框架贡献代码,首先搜索tornado. 然后,将tornado的代码fork到我们的仓库中. 2.clone到本地进行开发 克隆 ...