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

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

我的做法是这样的

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

看它是不是B串的子序列

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

  1. //light
  2. /*
  3. 这一道题我个人的思路就是二分答案+暴力
  4.  
  5. */
  6. #include<bits/stdc++.h>
  7. using namespace std;
  8. string A,B;
  9. /*
  10. 可以逆序枚举字符串,用ne[i][j]表示i位置的下一个j+'a’字母的位置
  11. */
  12. int ne[][];/*
  13. void Yuchuli(){
  14. for(int i=B.length()-1;i>=0;i--){
  15. int j=B[i]-'a';
  16. int k=i-1;
  17. while(k>=0&&B[k]-'a'!=j){
  18. ne[k][j]=i;
  19. k--;
  20. // cout<<k<<' '<<j<<' '<<B[i]<<endl;
  21. }
  22. if(B[k]-'a'==j)
  23. ne[k][j]=i;
  24. }
  25. }*/
  26. int Zixulie(int l,int r){
  27. int i=l;int k=;
  28. // cout<<l<<" "<<r<<endl;
  29. while(k<B.length()){
  30. // j=ne[j][A[i]-'a'];
  31. int flag=;
  32. for(int j=k;j<B.length();j++)
  33. if(A[i]==B[j]){
  34. flag=;
  35. // cout<<i<<" "<<A[i]<<" "<<j<<" "<<B[j]<<" "<<k<<endl;
  36. k=j+;i++;
  37. //cout<<i<<" "<<j<<endl;
  38. break;
  39. }
  40. if(flag==)
  41. break;
  42. }
  43. if(i>r)
  44. return ;
  45. else
  46. return ;
  47. }
  48. bool check(int llenA){
  49. //现在既然已经预处理出来了 就枚举区间 判断是否是子序列
  50. for(int i=;i+llenA-<A.length();i++)
  51. if(Zixulie(i,i+llenA-)==)
  52. return false;
  53. return true;
  54. }
  55. int main()
  56. {
  57. //freopen("light.in","r",stdin);
  58. //freopen("light.out","w",stdout);
  59. cin>>A>>B;
  60. // Yuchuli();
  61. // for(int i=0;i<B.length();i++){
  62. // for(int j=0;j<26;j++)
  63. // cout<<ne[i][j]<<" ";
  64. // cout<<endl;
  65. // }
  66.  
  67. int l=,r=,ans=-;
  68. while(l<r){
  69. int mid=(l+r)>>;
  70. if(mid>A.length()||mid>B.length()){
  71. r=mid-;
  72. continue;
  73. }
  74. // cout<<l<<" "<<r<<endl;
  75. if(check(mid)==){
  76. ans=mid;
  77. r=mid;
  78. }
  79. else
  80. l=mid+;
  81. }
  82. cout<<ans;
  83. return ;
  84. }/*
  85. aabbcc
  86. abcabc
  87.  
  88. Tido 2019/7/25 星期四 10:41:04
  89. abcdefddbba
  90. aabbcce
  91.  
  92. */

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

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

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

例如二分答案

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

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

这一道题老师的正解是

就是枚举以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. 插播一条 WMI修复教程

    一般情况下,WMI都会好好的工作,但偶尔也会出现小问题. 这些小问题会影响到正在使用WMI的程序,比如设置的有线和无线网络依然还是依赖WMI的.如果WMI自己都没办法工作,有些数据就获取不到了. 先看 ...

  2. 【7003】&&【a203】合并多项式

    Time Limit: 3 second Memory Limit: 2 MB 问题描述      求两个一元多项式的和.输入多项式方式为:多项式项数.每项系数和指数,按指数从大到小的顺序输入.输出多 ...

  3. Linux 内核 EISA 总线

    扩展 ISA (EISA) 总线是一个对 ISA 的 32-位 扩展, 带有一个兼容的接口连接器; ISA 设备板可被插入一个 EISA 连接器. 增加的线在 ISA 接触之下被连接. 如同 PCI ...

  4. Comet OJ - Contest #5

    Comet OJ - Contest #5 总有一天,我会拿掉给\(dyj\)的小裙子的. A 显然 \(ans = min(cnt_1/3,cnt_4/2,cnt5)\) B 我们可以感性理解一下, ...

  5. dotnet 获取指定进程的输入命令行

    本文告诉大家如何在 dotnet 获取指定的进程的命令行参数 很多的程序在启动的时候都需要传入参数,那么如何拿到这些程序传入的参数? 我找到两个方法,一个需要引用 C++ 库支持 x86 和 x64 ...

  6. git常用常用操作指令

    GIT操作 1:git init 初始化空的仓库,会在当前文件夹生成一个隐藏.git的文件夹,相当于一个仓库. 2:提交代码的流程:工作代码区-->暂存区 -->主仓库 -->服务器 ...

  7. git authentication failed for 或 fatal:not a git repository

    第一种解决 (我的是第一种解决) github上更改密码之后,我在本地操作git发现出错,错误代码如上,在网上搜了一圈,没有解决问题,后发现需要进行如下操作: 进入控制面板>用户账号>凭据 ...

  8. Mybatis的mapper.xml文件详解

    1.#{}和${}的区别: #{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo.hashmap.        如果接收简单类型,#{}中可以写成value或其它名称.      ...

  9. zabbix脚本监控mysql

    Zabbix监控mysql 1.1 客户端配置 1.1.1 安装客户端包 yum -y install unixODBC rpm -ivh zabbix-agent--.el6.x86_64.rpm ...

  10. Django 开发项目创建

    创建项目环境 """ 为项目创建一个虚拟环境 >: mkvirtualenv 环境名 """ """ 按 ...