zoukankan      html  css  js  c++  java
  • csp-s105 T1 小W的魔术

    字符串的题很头疼

    擅长打表

    考试想了将近2个小时

    想到了重复的长什么样子

    然而不会正确的加回来

    甚至加多了发现有各种重复

    感觉药丸,,,换题

    证明:

    想了两个小时

    用总的-合法的

    合法的有重复  恶心

    设插入的串为x

    那么所有插入后的串长这个样子:

    abcXsgd

    abcsgXd

    考虑重复的情况,可以掐头去尾,变成Xsg和sgX类似的情况

    就是$a+b==b+a$

    不妨设a+b==b+a成立此时重复   倒着推出重复的前提条件

    [...........][...]                  [..][...........]

    [...][...........]         OR    [...........][..]

    其中的X串是插入的可以任意设字母变化,剩下的是题目中给的串的一部分 是固定的

    由于设了$a+b==b+a$成立,所以至少有一种方案使得为X安排字母使得$a+b==b+a$

    那么在原串的插入情况中不仅有Xsg ,  sgX  这种情况  还会有 删掉一个(把下面的X往前插一个的情况)(Xs,sX)

    由于原先有方案合法那么删掉一个的情况下一定可以合法(因为X可以自由安排)

    :[...........][...]

     [...][...........] 由于合法  那么中间部分相同  左右两侧X的部分是继承固定串的,删掉一个后依然有继承能力

    那么a+b==b+a重复的话说明a+一个长度为1的串(字母)==字母+b

      [...........][...]          [...........][.]

      [...][...........]   - >   [.][...........]

    所以a+b==b+a的前提是a+字母==字母+b

    那么要满足X的首字母等于这个字母

    即:X的首字母==X插入后X的后一个字母

    这就是发生重复串的前提条件。

    如何避免

    1.先都加上  最后减去

    2.考虑加的时候少加一个(提前预知后方有串可以和准备加的重复时不加了)

    第一种容易发现难以求出(也许根本不能

    第二种情况下由于每一次提前预知不加  $a=b=c$  预知$a=b$, $a$不加  $b=c$  $b$不加  可以解决连等多重复问题,很优秀

    那么由得出的前提条件可以提前预知

    X的首字母是可以随便安排的,所以只要后边有字母  X的首字母就不能填那一个(预知,不加)。

    其余位置随便填  所以X的内部方案$25*26^{n-|s|-1}$   可以插在$|s|$个位置(不是$|s|+1$因为插在最后后边没有字母)

    所以合法方案数为$25*26^{n-|s|-1}*|s|+26^{n-|s|}$;

    用总的减去

    答案:$26^{n}-   |s|*25*26^{n-|s|-1}  -   26^{n-|s|}$;

  • 相关阅读:
    php关键字
    PHP PSR-2 代码风格规范 (中文版)
    关于未来编程发展趋势的九大预测
    canvas动画基础
    HTML 5 Web Sockets应用初探
    jquery简单插件到复杂插件(3)--顶部导航固定
    jquery简单插件到复杂插件(2)--简单手风琴
    jquery简单插件到复杂插件(1)--tabs
    ie调试工具
    javascript + jquery函数大全
  • 原文地址:https://www.cnblogs.com/three-D/p/11820689.html
Copyright © 2011-2022 走看看