zoukankan      html  css  js  c++  java
  • String

    String

    Description

    给N个字符串,可以对长度为偶数的前缀(如果字符串长度为偶数,这里的前缀包括整个字符串)进行翻转,可以翻转任意次,如果翻转后两个字符串相同就可以消去,最后最少剩下多少个字符串。

    Solution

    可以证明可以实现如下三个操作:

    1.

    AB->BA

    ABCD->ABDC

    ABCDEF->ABCDFE

    ABCDEFGH->ABCDEFHG

    ……

    2.

    ABCD->CDAB

    ABCDEF->CDEFAB

    ABCDEFGH->CDEFGHAB

    ……

    3.

    ABCDEF->ABEFCD

    ABCDEFGH->ABCDGHEF

    ABCDEFGHIJ->ABCDEFIJGH

    …..

    证明:

    对于AB->BA无须证明

    对于ABCD->ABDC:

    ABCD->DCBA->CDBA->ABDC

    对于ABCDEF->ABCDFE:

    ABCDEF->FEDCBA->EFDCBA->ABCDFE

    ……

    对于ABCD->CDAB:

    ABCD->DCBA->……->DCAB->CDAB

    对于ABCDEF->CDEFAB:

    ABCDEF->FEDCBA->……->FEDCAB->CDEFAB

    对于ABCDEFGH->CDEFGHAB:

    ABCDEFGH->HGFEDCBA->……->HGFEDCAB->CDEFGHAB

    ……

    对于ABCDEF->ABEFCD:

    ABCDEF->……->EFABCD->……->ABEFCD

    对于ABCDEFGH->ABCDGHEF:

    ABCDEFGH->……->GHABCDEF->……->ABCDGHEF

    对于ABCDEFGHIJ->ABCDEFIJGH:

    ABCDEFGHIJ->……->IJABCDEFGH->……->ABCDEFIJGH

    ……

    证明了这三个操作,就可以给每个字符串中的字符排序,这样就可以判断两个字符串是否能变成同一个字符串。

  • 相关阅读:
    [SHOI2008]堵塞的交通
    [SHOI2008]汉诺塔
    [JSOI2008]最小生成树计数
    [JSOI2008]球形空间产生器
    [HNOI2014]画框
    HDU 2255 奔小康赚大钱
    [SDOI2017]新生舞会
    [BZOJ2285][SDOI2011]保密
    [BZOJ3232]圈地游戏
    [HDU5909]Tree Cutting
  • 原文地址:https://www.cnblogs.com/JebediahKerman/p/6043576.html
Copyright © 2011-2022 走看看