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

    T1「试除法」

    可以发现m只有200,不难猜到复杂度是 $O(msqrt{a_i})$

    只需要把每个数$O(sqrt{a_i})$试除法,求一下约数并且记录一下每个数作为约数出现了多少次即可,用map实现多了个$log$

    当然也可以开数组记录,由试除法推论,一个数N的约数个数最多为$2sqrt{N}$,所以开1e7左右即可,

    T2 「背包DP」

     我背包DP就没会过考场上只能死板地摸(mo)索(xie)了板子苟到了40分

    这个思路很好,之前的都是$f[cost]=max-val$,由于cost很大,那么就可以把下标和值换一下,再跑DP

    1 for(int i=1;i<=n;++i){
    2     for(int j=n*single_val;j>=1;--j){
    3         f[j]=min(f[j],f[j-val[i]]+cost[i]);
    4     }
    5     for(int j=n*single_val;j>=1;--j){
    6         f[j]=min(f[j],f[j+1]);
    7     }
    8 }

    离线一下,每次lower_bound复杂度$O(n^2v+qlog{nv})$

    T3什么点分支,并查集的思路出想了好几次,模拟41 T2 影子

    愿你在迷茫时,记起自己的珍贵。
  • 相关阅读:
    构造函数作为友元函数的参数
    引用调用
    分块查找
    折半查找
    c++中map按key和value排序
    STL之map学习实例
    STL之stack
    STL之map
    STL之string
    STL之template类模板
  • 原文地址:https://www.cnblogs.com/casun547/p/11620336.html
Copyright © 2011-2022 走看看