贪心

  • 如果下一个位置i+1有障碍的话,从当前位置i进行跳跃就有两种情况

    • 只有一个选择

      • 即当前i已经有了一个障碍,算上下一个的障碍,3-2=1 只需要选择剩下唯一的空跳即可
    • 有两个选择
      • 这时候就要判断该选哪个了
      • 方法就是贪心。分别看两个选择往后,在不跳跃的情况下,最远能走多久
  • 时间复杂度O(n2)O(n^2)O(n2)
class Solution {
public:int minSideJumps(vector<int> &ob) {int len = ob.size();int res = 0;int num = 2;for (int i = 0; i < len; i++) {if (ob[i + 1] == num) {set<int> choice = {1, 2, 3};choice.erase(num);choice.erase(ob[i]);if (choice.size() == 1) {num = *choice.begin();res++;} else {map<int, int> cntLen;int a[6], t = 0;for (auto &e: choice) {int tmp = i;while (tmp < len && ob[tmp] != e) tmp++;cntLen[tmp] = e;a[t++] = tmp;}num = cntLen[max(a[0], a[1])];res++;}}}return res;}
};

DP

  • 本来是 dp[i][1…3]

    • i表示当前位置,3表示三个赛道
    • dp[i][j] 表示到达第i个位置的第j个赛道,需要跳跃的最小次数
    • 状态转移:
      dp[i][j]=min(dp[i−1][j],dp[i−1][j2]+1,dp[i−1][j3+1]dp[i][j] = min(dp[i-1][j], dp[i-1][j_2] + 1, dp[i-1][j_3 + 1]dp[i][j]=min(dp[i−1][j],dp[i−1][j2​]+1,dp[i−1][j3​+1]
  • 后来发现 dp[i][j] 仅仅和 dp[i -1][j] 有关,因此可以只用一维数组来做
  • 时间复杂度O(n)O(n)O(n)
class Solution {
public:int minSideJumps(vector<int> &ob) {int len = ob.size();int dp[4];fill(dp, dp + 4, 1);
//        cout << dp[1] << " ";dp[2] = 0;for (int i = 1; i < len; i++) {int pre1 = dp[1];int pre2 = dp[2];int pre3 = dp[3];fill(dp, dp + 4, 0x7f7f7f);if (ob[i] != 1) dp[1] = pre1;if (ob[i] != 2) dp[2] = pre2;if (ob[i] != 3) dp[3] = pre3;if (ob[i] != 1) dp[1] = min(dp[1], min(dp[2], dp[3]) + 1);if (ob[i] != 2) dp[2] = min(dp[2], min(dp[1], dp[3]) + 1);if (ob[i] != 3) dp[3] = min(dp[3], min(dp[2], dp[1]) + 1);}return min(dp[1], min(dp[2], dp[3]));}
};

1824. Minimum Sideway Jumps 贪心和DP方法相关推荐

  1. 【Leetcode】1824. Minimum Sideway Jumps

    题目地址: https://leetcode.com/problems/minimum-sideway-jumps/description/ 给定一条宽为333的路,可以视为三条平行线,给定一个长n+ ...

  2. LeetCode——1824. 最少侧跳次数(Minimum Sideway Jumps)[中等]——分析及代码(Java)

    LeetCode--1824. 最少侧跳次数[Minimum Sideway Jumps][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划(二维数组) (1)思路 (2)代 ...

  3. 搜索,贪心,DP,三者的区别和联系

    1. 贪心是一种特殊的动态规划,动态规划的本质是独立的子问题,而贪心则是每次可以找到最优的独立子问题. 贪心和动归不是互斥的,而是包含的,贪心更快,但约束更强,适应范围更小.动归和bfs的关系也是一样 ...

  4. 2019.04.20【NOIP提高组】模拟 B 组 观察题目+堆(?)+最大匹配+贪心、DP

    文章目录 0 压缩后缀数组 1 新年礼物 2 聚会 3 辽哥游戏 立阳二中.清华医学系谢俞 0 压缩后缀数组 据传是水题 当f[i]=i时,原数组s的i位置一定是偶数,那么s[i]=a[对应的位置]* ...

  5. 贪心与DP——P1987摇钱树

    题目:P1987 摇钱树 \(\text{蒟蒻在DP之路上求索着}\) 这道题我一开始竟然觉得是区间DP 思路 看起来这道题我们可以以任何顺序来砍树,这就牵扯到先后砍树哪一种更优.如果我们要暴力的话, ...

  6. 树形dp ---- gym101667 A(贪心 + 树形dp + 两个dp方程组维护)

    题目链接 题目大意: 就是一棵5e35e35e3的树,可以选择一些点,放上基站,如果uuu上的基站价值为ddd,那么距离uuu小于等于ddd的点都会被覆盖,问使得整棵树被覆盖需要的最小价值. 解题思路 ...

  7. 【贪心 和 DP + 卖股票】LeetCode 122. Best Time to Buy and Sell Stock II

    LeetCode 122. Best Time to Buy and Sell Stock II Solution1:我的答案 贪心和DP傻傻分不清! class Solution { public: ...

  8. STO GZM Orz %%%% ender魔王考试题解(前两道)(贪心和DP)STO WK orz

    STO Ender orz 太强了        STO WK orz 太神了 首先,为什么是前两道呢? 因为最后一道是导数推论+泰勒展开,对于我一个初中生来说只能稍作理解,严格推论还是写不出 第一题 ...

  9. codeforces 480B B. Long Jumps(贪心)

    题目链接: B. Long Jumps time limit per test 1 second memory limit per test 256 megabytes input standard ...

最新文章

  1. 傲游5里保存的网址,在傲游4不能同步?外加几句吐槽
  2. XSS挑战之旅闯关笔记
  3. 爬虫学习笔记(十二)—— scrapy-redis(一):基本使用、介绍
  4. 非确定性算法_带你从不同角度了解强化学习算法的分类
  5. gcc 的visibility
  6. Typecho浅色三栏主题
  7. 电子表格控件Aspose.Cells V17.4.0发布 | 新增重要功能
  8. Codeforces Round #467 (Div. 2)
  9. shell解析xml文件
  10. Internet Explorer 8的新特性和自定义部署
  11. robocode java_如何建造你的第一个Java Robocode?
  12. python宿舍管理系统_python实现宿舍管理系统
  13. matlab矩阵求和速度慢,matlab – 将完整矩阵转换为完整矩阵的速度很慢?
  14. Python打印表格
  15. 拒酒词、与领导喝酒的诀窍、酒量不行的技巧
  16. Centos7中Docker安装Redis
  17. Android星座运势案例
  18. 云终端ncomputingl300服务器,fl300云终端服务器(share fl300)
  19. jqGrid可编辑模式下 单元格内容不能复制处理
  20. 附近的人打招呼V1.0

热门文章

  1. 外网如何访问本地项目
  2. 低照度图像增强论文阅读笔记——ZERO-SHOT RESTORATION OF UNDEREXPOSED IMAGES VIA ROBUST RETINEX DECOMPOSITION
  3. 借助新电商平台,湖北荷塘三宝直达全国餐桌
  4. 帮小姐姐打分系统的模型创建,滚雪球学 Python 第三轮第 11 篇
  5. Java内存溢出与栈溢出
  6. 笔记-uni-app入门到实战 以项目为导向 掌握完整开发流程
  7. 使用计算机连接bmcc,Blackmagic Cinema Camera BMCC MFT/EF 摄影机 bmcc
  8. 中国石油大学《政治学原理》第一次在线作业
  9. 【苹果相册推】增加家庭协议sendmail postfix MDA
  10. 忠诚点数体系和区块链