zoukankan      html  css  js  c++  java
  • 考试总结 模拟76

    之前连续爆炸,没想太多

    前20分钟读题:T1看上去没思路,暴力dp很好打,T2 一点思路都没有,只会20分的n==3的指数枚举,T3看着前序中序遍历,更没有思路了

    T1先是想不断交换来满足题意,然后打表,发现有个假的规律,继续深究才看出来,总共写了2个小时,太慢了,主要是边想正解边想部分分,而zzyy大佬只用了30分钟

    还有1h20min,T2,T3交替思考什么都没有思考出来,

    T2打开了大样例,没有排序输出发现性质,注意去从下发文件入手,如果不是随机数据,那很可能就有规律

    T3 catalan的20分,,,考的第三次,第三次没看出来。然后跟catalan相关的也只有一个出栈入栈顺序 还没考过?

    T1「性质题」

    打表发现(字典序最小)构造方式:最终有cnt个倒序的区间,las个数升序放队首,最后满足las+倒序长度<b的区间(0/1个)+cnt个倒序小区间构成

    如:n=10,a=5,b=3:1 2 4 3   7 6 5   10 9 8 

    T2「性质题」

    根据大样例可得:

    先将a从小到大排序,那么若当前的a_i / 2>sum_{i-1},那么[sum_{i-1},a_i]的区间无法被覆盖

    证明:

    对于一个sum,会使[sum/2.sum]的数都成为美妙的数

    考虑从小到大加入每个物品:

    那么上一个区间[sum/2,sum],

    当前a_i=sum*2,那么会扩展到[sum*3/2,3sum],而只选a_i会覆盖[sum,2*sum]

    也就是保证了没有空隙,

    当a_i更大时,显然只会产生空隙即[sum_i+1,a_i/2],不管是选前i-1共sum个还是a_i都不行

    T3「DP」

    定义f[i][j]为以i为根的子树大小为j的方案数

    可以发现限制只有两种情况,

    对于前序a<b的,

    若要求中序a在b之后,那么b只能在a的左子树,由于编号连续,那么左子树大小必然>=所有满足改条件max{b-a}

    若a在b前,那么b不能在a左子树,可以在右子树,也可是在lca的另一侧,那么左子树大小必然<min{b-a}

    预处理出来所有的限制

    然后O(n^3)依次枚举节点编号i,子树大小j,和左子树大小k

    $$f[i][j]=sum f[i+1][k]* f[i+k+1][j-k-1]$$

    注意f[i][1]不能初始化1,因为可能不存在子树大小为1的情况

  • 相关阅读:
    cs
    PC管理端与评委云打分配合步骤及疑难问题汇编,即如何使用PC管理端的云服务管理功能
    B.数据结构(栈和队列)
    13.Python(模块)
    A.数据结构(线性表)
    c.Matlab(数据和函数的可视化)
    b.Matlab(字符串)
    12.Python(装饰器)
    11.Python(生成器)
    10.Python(高级特性)
  • 原文地址:https://www.cnblogs.com/casun547/p/11691213.html
Copyright © 2011-2022 走看看