• 20200906 day1 模拟(一)


    1

    题意简述

    (A,B)构成的一个长为(T)序列,给定(M,N)表示每次将恰好(A)(M)(B)(N)变为(Z),且每次操作所改变的(A,B)之间不能有(Z),求将所有字母改变为(Z)的方案与否。

    题解

    首先特判(M=0,N=0)
    结论:当且仅当(kM)(A)(kN)(B)时有合法方案,其余情况无合法方案。

    证明
    (k=1)时显然。(即一次性可改变所有字母)
    (k>1)时,将整个序列划分为每段长(K),共(s)段的子序列,其中(K=M+N,Ks=T)
    ([1,K],[K+1,2K],...)中,至少有一个子序列(alpha)(leq M)(A),至少有一个子序列(eta)(geq M)(A)
    在长度(K)的“窗口”从第1位开始向右移动时,总会从序列(alpha)移动到序列(eta),且每次移动时区间内的(A)的数量(D)只可能(+1,-1,0)三种变化情况。(*)
    所以在这之间的某一个区间一定满足(D=M),且该区间连续,可以把他删除。以此递归,可证。

    (*)设区间(A[BBAB]A),窗口向右滑动时,多(1)(A)(1)(B)(A)的数量变化是(+1);设区间(A[ABAB]A),窗口向右滑动时,多(1)(A)(1)(A)(A)的数量变化是(0),同理区间(A[BABB]B);设区间(A[ABAB]B),窗口向右滑动时,多(1)(B)(1)(A)(A)的数量变化是(-1)

    用栈维护从(1)到第(J)(A)的个数(sum[J]),如果某段区间有恰好(M)(A)(即(sum[top]-sum[top-N-M]=N)),则该区间合法。倒序输出。

    2

    3

    题意简述

    4

    要做就做南波万
  • 相关阅读:
    输出菱形
    for语句输出三角形
    阶乘倒数的和
    变量赋值判断奇偶
    928作业
    各种主流数据库的比较(所以说我觉得Oracle这个keng?入的不错?)
    Oracle创建表
    (转载)全球唯一标识GUID
    (转载)Java基础知识总结
    两天以来对plsqldev操作的记忆
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/20200906day1-001.html
Copyright © 2020-2023  润新知