笔记

  1. 问题 D: String Formation
    当题目数组很大时,优先考虑时间复杂度,优化算法。如果可能的话,自己写一个具有代表性的测试数据进行测试。
  2. 牛牛的跳跳棋(贪心)
    本题中的贪心策略即为:尽可能的跳到最远的格子上,所以题意中“他的下一步可以移动到[i−pi,i+pi]范围内的任意一个格子。”是不用往回跳的,往前一条路走到黑。并且当前格子的选择不会影响之前格子的选择,实现:局部最优->整体最优
    标记当前格子:last=1,当前可达到的最远格子是maxl=1。
    a[]循环遍历数组:i=1~n
    若第i 个格子能达到的更远的距离(i+a[i]>maxl)则更新last和maxl;
    若当前第i个格子是之前格子所能达到的最远距离,到达极限(i=maxl)则使用魔法,last=i+1;maxl++;
    以此类推。。。
    拓展:贪心算法

贪心算法是对某些求最优解问题的更简单、更迅速的设计技术,贪心算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,不考虑整体情况,省去了为找最优解要穷尽所有可能而必须耗费的大量时间。贪心算法每做一次贪心选择,就将所求问题简化为一个规模更小的子问题,是一种自顶而下的想法,贪心算法不能回溯。

  1. ->和.运算符的区别


    ->和.运算符的区别
  2. 若要减小算法的时间复杂度,通过 减少循环嵌套、循环内操作尽量简洁、cout 比printf消耗的时间多得多尽量减少在层数很高的循环中出现
  3. 虽然初始变量的范围不大,但是要注意程序运行过程中产生新的大范围变量,当提交wa是先找long long。

你可能感兴趣的:(笔记)