zoukankan      html  css  js  c++  java
  • LC 983. Minimum Cost For Tickets

    In a country popular for train travel, you have planned some train travelling one year in advance.  The days of the year that you will travel is given as an array days.  Each day is an integer from 1 to 365.

    Train tickets are sold in 3 different ways:

    • a 1-day pass is sold for costs[0] dollars;
    • a 7-day pass is sold for costs[1] dollars;
    • a 30-day pass is sold for costs[2] dollars.

    The passes allow that many days of consecutive travel.  For example, if we get a 7-day pass on day 2, then we can travel for 7 days: day 2, 3, 4, 5, 6, 7, and 8.

    Return the minimum number of dollars you need to travel every day in the given list of days.

    int mincostTickets(vector<int>& days, vector<int>& costs) {
      unordered_set<int> travel(begin(days), end(days));
      int dp[366] = {};
      for (int i = 1; i < 366; ++i) {
        if (travel.find(i) == travel.end()) dp[i] = dp[i - 1];
        else dp[i] = min({ dp[i - 1] + costs[0], dp[max(0, i - 7)] + costs[1], dp[max(0, i - 30)] + costs[2]});
      }
      return dp[365];
    }
    class Solution {
    public:
    int mincostTickets(vector<int>& days, vector<int>& costs) {
      unordered_set<int> travel(begin(days), end(days));
      int dp[31] = {};
      for (int i = days.front(); i <= days.back(); ++i) {
        if (travel.find(i) == travel.end()) dp[i % 31] = dp[(i - 1) % 31];
        else dp[i % 31] = min({ dp[(i - 1) % 31] + costs[0],
            dp[max(0, i - 7) % 31] + costs[1], dp[max(0, i - 30) % 31] + costs[2] });
      }
      return dp[days.back() % 31];
    }
    };
  • 相关阅读:
    CSS3总结一:border(边框)
    浏览器控制台使用
    CSS3选择器
    jQuery实现搜索框插件+豆瓣音乐接口实现豆瓣搜索框
    服务器代理+jQuery.ajax实现图片瀑布流
    计算机网络之iframe内联框架跨域
    计算机网络之JSONP跨域
    程序集加载与反射(一):理论篇
    垃圾回收机制,是不是这样理解?
    异常处理机制
  • 原文地址:https://www.cnblogs.com/ethanhong/p/10351370.html
Copyright © 2011-2022 走看看