• 2月24-第二次机试课记录


    2月24-第二次机试课记录

    总结

    • 模拟的优化可以考虑使用STL来减少时间复杂度
    • 对于时间复杂度的减低
      • 在方法上,对n减低到logn这类思路上的转变
      • 还要考虑各种细节,比如
        • 输入输出,使用printf而不是cout
        • mp.count()反而是多余的判断
        • 使用unordered_map
    • 对于题目有的时候可以从别的角度进行模拟的思考,比如网络那题,从枚举的角度进行bfs比倒bfs更简化
    • 模拟的优化,在进制转换那题数据量大的提示,就告诉了需要从新的角度去思考

    题目序号

    思路与技巧

    • 1332

      • 使用char *进行字符串的保存,故接收一行需要使用gets();
      • 使用stl中的reverse(a, b)将[a, b)直接的进行反转
      char str[100];
      gets(str);
      reverse(str + a, str + b);
      
    • 1325

      • 最开始的想法是进行倒bfs,逆推回去,但是代码太繁琐了,参考答案是枚举每个中毒的点,进行bfs模拟和结果对比,bfs的时间复杂度是O(点数+边数),再乘上感染数,不会超时

      • 因为点比边多,可以使用vector进行邻接表的声明,同时注意到是无向图,要存储两次

      • bfs需要使用vis数组防止重复访问点,并且使用memset初始化vis数组从而可以多次使用

    • 1037

      • 需要c++中string重载了大于符号,如果使用char需要使用strcmp进行比较,否则只是比较指针指向
    • 1114

      • 之前在杭电做过一题数据量小的,可以通过格式化输入输出简化,但是这题数据量大,只能考虑进行模拟,如果直接进行10进制模拟还是会越界,所以考虑直接进行二进制模拟,如何使用map简化模拟过程

        scanf("%x", &a);
        printf("%o", a);
        
    • 1173

      • 一个思路上进行预处理,从而将时间复杂度从O(n4)降到O(n2)

      • 几个容易TLE的点

        • 使用unordered_map(map重复使用需要clear)

        • 初始化在主函数外,避免重复定义

        • mp.count(key)判断后在加会有问题,因该直接加mp[key]

    • 1330

      • 很经典的使用set的题目,因为需要返回对排序的组件删除和添加,故使用set(内部自带排序)进行操作,每次操作都是o(logn)
  • 相关阅读:
    iOS图片压缩上传
    Spring MVC获得HttpServletRequest
    BZOJ 1002 FJOI2007 轮状病毒 递推+高精度
    破解2559
    Redis源代码分析(十七)--- multi事务操作
    Android setTag()与getTag(),与set多个setTag()
    【NOI2015】【程序自己主动分析】【并查集+离散化】
    BZOJ1433 [ZJOI2009]假期的宿舍
    将參数从PHP传递到JavaScript中
    NUTCH2.3 hadoop2.7.1 hbase1.0.1.1 solr5.2.1部署(二)
  • 原文地址:https://www.cnblogs.com/faberry/p/12359347.html
Copyright © 2020-2023  润新知