<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      Title

      LeetCode每日一題2025-10-11-LC3186-施咒的最大傷害

      3186-施咒的最大傷害

      思路

      題目大意是:選出一個子集,這個子集需要滿足一個要求:子集中元素相互之間的差值不能是1和2,目標求最大子集和

      • 直接考慮一個元素應不應該被選上既要考慮比它小的,又要考慮比它大的,比較麻煩,我們直接從小往大考慮,加入一個數的時候就只用考慮比它小的數就可以了,所以我們先把數組排個序

      • 接著我們考慮每一個元素,對于元素\(a_i\),如果\(a_{i - 1} = a_i\),那么\(a_i\)肯定跟在\(a_{i - 1}\)的后面才能保證此時是在選上\(a_{i}\)的情況下的最優解

      • 如果\(a_{i - 1} \neq a_{i}\),此時我們在一個合法范圍內\((a_i - a_j \geq 3)\)時找一個最大值就好,因為我們已經提前排過序了,所以此時可用用二分查找, 找最大值就理所當然地維護一個前綴最大值就好了

      那么這個題目我們就維護兩個數組就好了
      \(premax[i]\) : 前\(i\)個元素取值的最大值
      \(dp[i]\) : 前\(i\)個元素,選上元素\(i\)時的最大值

      \[premax[i] = \begin{cases} power[0] &i = 0\\ max(premax[i - 1], \space dp[i]) &i > 0 \end{cases} \]

      \[dp[i] = \begin{cases} power[0] &i = 0\\ dp[i - 1] + power[i] &power[i] = power[i - 1]\\ Max_{j = 0}^{i - 1}dp[j] + power[i] &power[i] \neq power[i - 1] \end{cases} \]

      代碼

      using lli = long long;
      class Solution {
      public:
          lli maximumTotalDamage(std::vector<int>& power) 
          {
              int n = power.size();
              std::vector<lli> premax(n, 0);
              std::vector<lli> dp(n, 0);
              std::sort(power.begin(), power.end());
              dp[0] = power[0];
              premax[0] = dp[0];
              for (int i = 1; i < n; i++)
              {
                  if (power[i] == power[i - 1])
                  {
                      dp[i] = dp[i - 1] + power[i];
                  }
                  else
                  {
                      int l = -1, r = i;
                      while(l + 1 < r)
                      {
                          int mid = (l + r) >> 1;
                          if (power[i] - power[mid] >= 3)
                          {
                              l = mid;
                          }
                          else
                          {
                              r = mid;
                          }
                      }
                      if (l == -1)
                      {
                          dp[i] = power[i];
                      }
                      else
                      {
                          dp[i] = premax[l] + power[i];
                      }
                  }
                  premax[i] = std::max(premax[i - 1], dp[i]);
              }
              lli ans = 0;
              for (int i = 0; i < n; i++) ans = std::max(ans, dp[i]);
              return ans;
          }
      };
      
      posted @ 2025-10-11 10:29  栗悟飯與龜功気波  閱讀(4)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产欧美日韩高清在线不卡| 高清中文字幕一区二区| 日本免费观看mv免费版视频网站| 免费十八禁一区二区三区| 亚洲尤码不卡av麻豆| 你懂的一区二区福利视频| 十八禁日本一区二区三区| 久久天天躁狠狠躁夜夜婷| 国产一区二区三区高清在线观看| 国产成人亚洲无码淙合青草| 热久久这里只有精品99| 国产乱码精品一区二区三| 国产亚洲精品VA片在线播放 | 好先生在线观看免费播放| 国产午夜精品理论片久久影院| 无线日本视频精品| 亚洲岛国av一区二区| 欧美不卡无线在线一二三区观| 成人午夜在线观看日韩| 国外av片免费看一区二区三区| 天天做天天爱夜夜爽导航| 国产一区二区不卡视频在线| 久久久久久久久久久久中文字幕| 日韩人妻av一区二区三区| 国产精品午夜福利精品| 高清有码国产一区二区| 亚洲码欧洲码一二三四五| 国产白袜脚足j棉袜在线观看| 小伙无套内射老熟女精品| 激情欧美日韩一区二区| 国产熟女肥臀精品国产馆乱| 五月丁香啪啪| 色噜噜噜亚洲男人的天堂| 熟妇人妻任你躁在线视频| 久久99精品国产99久久6尤物| 青青草成人免费自拍视频| 国产在线午夜不卡精品影院| 99精品国产中文字幕| 人成午夜免费视频无码| 亚洲qingse中文字幕久久| 亚洲精品天堂在线观看|