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)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
随机推荐
- HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite r ...
- 高可用之keepalived的配置文件详解
! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover ...
- P1041 查找元素
题目描述 现在告诉你一个长度为 \(n\) 的有序数组 \(a_1, a_2, ..., a_n\) ,以及 \(q\) 次询问,每次询问会给你一个数 \(x\) ,对于每次询问,你需要确定在数组中是 ...
- js 正则匹配 两个字符串之间,某个字符串之前(之后)的内容
1.js截取两个字符串之间的内容: var str = "aaabbbcccdddeeefff"; str = str.match(/aaa(\S*)fff/)[1]; alert ...
- Linux 字节序
小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高 级的平台以另一种方式(大端)工作. 任何可能的时候, 你的代码应当这样来编写, 它不在 乎它操作的数据的字节序 ...
- jekyll 在博客添加流程图
本文告诉大家如何在博客使用流程图. 如果你使用的是我博客的模板,那么就可以直接使用我说的文件,如果是自己的主题,就需要在自己文件对应的地方加上代码. 在我的博客里,需要添加下面的js到博客,可以打开 ...
- JavaScript实现版本号比较
/* * JavaScript实现版本号比较 * 传入两个字符串,当前版本号:curV:比较版本号:reqV * 调用方法举例:Version('5.12.3','5.12.2'),将返回true * ...
- html5中的audio和video属性和事件汇总
<audio> 标签属性: src:音乐的URL preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览器自带的控制 <video> 标 ...
- 使用 Visual Studio Code 进行远程开发
使用 Visual Studio Code 进行远程开发 在完成了 AT 指令入门的学习之后,接下来就要使用 AT 指令进行 Socket 通信了.问题在于,之前 .NET 的 Socket 编程只需 ...
- 字符串format格式方式
1.format后面都是个元组类型!!! 不一一对应则报错,比如少了一个替换的元素,format可以少但是不能多,一多就会报错 括号里可以加索引,看例2 可以用索引只取一个值,比如括号里都是{1} r ...