• 考试总结 模拟29


    心得:

    提高要求,真的是大众分!!!

    T1dalao们10分钟切完,而我搞了1小时,T2只会打暴力,虽然思考方向没错,但是没想出来,T3也是只会打暴力,考场找规律也是可行的

    题解

    T2「前缀和」「单调栈」

    首先离散一下,对于离散后的数组,考虑将每个数作为最大值的次数记录到桶中

    只需要知道每一位作为最大值的区间就行,用单调递减的栈实现,注意对于相等的点,不要加重

    然后就可以求前缀和并$O(1)$查询,还要注意考虑查询的k是不是在原数组中存在

    int:2e9!!!没开ll卡了好久

    T3「动态规划」

    f[i]:长度为i-1的排列们,搞成符合要求的所需代价和

    将i插入到i-1的排列中,挤到最后的第i位可以是1~i,

    若第i位是i,那么只需要将前i-1进行操作即可

    若第i位是1~i-1,那么就可以看成前i-1个数先排成有序的,代价f[i-1],然后把最后一位移到它该在的位置,由于前i-1位有(i-1)!种排列,还要乘上它

    定义g[k]为最后一位是k,回到该在的位置的代价

    g[1]=1,g[2]就是在回到1的基础上再加一步即g[2]=g[1]+1,g[3]就是在回到2的基础上再加一步即g[3]=g[2]+g[1]+1

    举个例子12453  31245 13245 21345(到这就是g[2]) 12345一共4步

    这样就是$f[i]=f[i-1]+sum(f[i-1]+fac[i-1]*g[k])(1<=k<i)$

    发现$g[k]=2^{k-1}$使用等比数列求和优化成O(n^2)

    愿你在迷茫时,记起自己的珍贵。
  • 相关阅读:
    第五周
    第三章 程序的机器级表示
    第二章 信息的表示和处理
    嵌入式Linux应用开发——Linux下的C编程基础
    Linux基础入门(20135207 王国伊)
    Java实验报告(实验四)
    linux系统之pam模块
    linux 从入门到跑路-时间,日期问题
    linux 从入门到跑路-Shell和部分命令
    linux 从入门到跑路-挂载,命令的执行顺序
  • 原文地址:https://www.cnblogs.com/casun547/p/11396134.html
Copyright © 2020-2023  润新知