zoukankan      html  css  js  c++  java
  • AGC046(F未做)

    B

    有个跟官方题解不同的,稍微讲一下
    对于一个生成的矩阵(R imes C),由少一行或少一列的矩阵转移过来是有重复的
    (f_{i,j})为有多少个(i imes j)的矩阵:

    [f_{i,j}=f_{i-1,j} imes j+f_{i,j-1} imes i-f_{i-1,j-1} imes(i-1)(j-1) ]

    C

    看清楚题意

    D

    首先来思考给定(T),询问(S)是否可以生成
    (S')(S)的最长后缀使得其为(T)的子序列,显然这部分是可以不动的,那么我们仅需判断(S_{1...|S|-|S'|})能否进行操作获得(T_{1...|T|-|S'|})(0/1)数量

    考虑若已知(S_{1...i})进行操作能获得(0/1)数量分别为(j,k),那么要做的就是(S_{i+1...|S|})中通过插入(0/1)的数量为(j,k)能生成多少个字符串
    为了不重复计数,要使得(S_{i,i+1})间插入的数与(S_i)不同,(S_{i+1,i+2})间插入的数与(S_{i+1})不同...(S_{|S|})后插入的数与(S_{|S|})不同

    E

    (x,y)分别为(A_i)最小与最大的
    结论1:若(2A_x<A_y),则无解

    证明:
    考虑最后的序列单独提出(x,y),发现会出现首尾连续出现两次,或中间连续出现三次的情况,不合法

    推论1:若(2A_xle A_y),则有解

    证明:
    通过结论1的证明,不难发现通过大的数连续出现两次,以使得合法

    考虑贪心的填数,这里不同于有些贪心的题是一个一个填数。
    为方便考虑,在保证已填好的序列中最后(k)个是个置换的情况下,然后枚举新填的序列长度(len)
    然后判断填好后是否可行,这里不同于空序列判解:

    (mi=A_x,mx=A_y)
    (2A_x+1=A_y),需要满足前面一个排列(A_i=mx)的全部排在(A_i=mi)的前面

  • 相关阅读:
    ZOJ-3230-Solving the Problems
    zoj-3410-Layton's Escape
    cin输入超过文本末尾
    sizeof('a')
    WPF TranslatePoint/TransformToVisual 总返回零
    Lock-free multi-threading
    c++0X 用字符串调用函数
    Vim 的c++语法补齐
    Reentrancy VS Thread safe
    内存屏障
  • 原文地址:https://www.cnblogs.com/Grice/p/13192934.html
Copyright © 2011-2022 走看看