zoukankan      html  css  js  c++  java
  • 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

    要做就做南波万
  • 相关阅读:
    使用RSL 给FLEX 瘦身
    网络游戏同步法则
    .NET中的内存管理,GC机制,内存释放过程
    C++静态成员函数小结(转)
    关于GetSystemMetrics()函数
    CImage
    assert()函数用法总结
    Win32 系统部分函数
    818瘦身简单过程(增加内存)
    818内存升级到128m
  • 原文地址:https://www.cnblogs.com/liuziwen0224/p/20200906day1-001.html
Copyright © 2011-2022 走看看