zoukankan      html  css  js  c++  java
  • 考试总结 模拟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)

    愿你在迷茫时,记起自己的珍贵。
  • 相关阅读:
    c# DataTable 转为 List 类型
    .net配置文件读取
    文件重命名(递归)
    sharepoint 网站创建
    Sharepoint添加顶部导航菜单
    .net sharepoint文档库操作
    c#下载共享文件夹下的文件并记录错误日志
    JS命名空间实例
    js时间处理函数
    模块
  • 原文地址:https://www.cnblogs.com/casun547/p/11396134.html
Copyright © 2011-2022 走看看