C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++でのTeemo攻撃


LOLの世界に、Teemoという名前のヒーローがいて、彼の攻撃によって敵のAsheが毒状態になる可能性があるとします。ここで、Teemoの攻撃の昇順の時系列をAsheに向けて与え、Teemoの攻撃ごとの毒の持続時間を与えたとすると、Asheが毒の状態にある合計時間を見つける必要があります。 Teemoは特定の時点の最初に攻撃し、Asheをすぐに毒状態にすると想定できます。

入力は[1,4]と2のようになり、出力は4になります。これは、時点1で、TeemoがAsheを攻撃し始め、Asheをすぐに毒殺するためです。ここで、この中毒状態は時点2の終わりまで2秒間続きます。そして、時点4で、Teemoはこの敵を再び攻撃し、Asheをさらに2秒間中毒状態にします。したがって、最終的に4を出力する必要があります。

これを解決するには、次の手順に従います-

  • Set ret:=0
  • currEnd:=-1
  • n:=tのサイズ
  • 0からn–1の範囲のiの場合
    • start:=t [i]、end:=t [i] + d – 1
    • currEnd
    • それ以外の場合、ret:=ret + end – currEnd、currEnd:=end
  • return ret

理解を深めるために、次の実装を見てみましょう-

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int findPoisonedDuration(vector<int>& t, int d) {
      int ret = 0;
      int currEnd = -1;
      int n = t.size();
      for(int i = 0; i < n; i++){
         int start = t[i];
         int end = t[i] + d - 1;
         if(currEnd < start){
            ret += end - start + 1;
            currEnd = end;
         } else {
            ret += end - currEnd;
            currEnd = end;
         }
      }
      return ret;
   }
};
main(){
   vector<int> v = {1,4};
   Solution ob;
   cout << (ob.findPoisonedDuration(v, 2));
}

入力

[1,4]
4

出力

4

  1. C++でゲームVをジャンプする

    arrと呼ばれる整数の配列と整数dがあるとします。 1つのステップで、インデックスiから-にジャンプできます。 i + xここで、i +x

  2. C++の4つの除数

    整数配列numsがあるとすると、正確に4つの除数を持つその配列内の整数の約数の合計を見つける必要があります。したがって、配列にそのような整数がない場合は、0を返します。たとえば、入力が[21、4、7]の場合、21には4つの除数1、3、7、21があるため、出力は32になります。 4には3つの除数1、2、4があり、7には2つの除数1と7があります。答えは21の約数の合計のみです。 これを解決するには、次の手順に従います- ok()というメソッドを定義します。これはxを入力として受け取ります ret:=1 + x、cnt:=2 i:=2の場合、i ^ 2 <=x、iを1増やしま