Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में टीमो अटैकिंग


मान लीजिए LOL दुनिया में, टीमो नाम का एक हीरो है और उसका हमला उसके दुश्मन ऐश को जहर की स्थिति में डाल सकता है। अब, मान लीजिए हमें ऐश की ओर टीमो के हमले का आरोही समय श्रृंखला और टीमो के हमले प्रति जहर की समय अवधि दी गई है, हमें कुल समय ढूंढना है कि ऐश जहर की स्थिति में है। हम मान सकते हैं कि टीमो एक विशिष्ट समय बिंदु की शुरुआत में हमला करता है, और ऐश को तुरंत जहर की स्थिति में डाल देता है।

इनपुट [1,4] और 2 है, तो आउटपुट 4 होगा। ऐसा इसलिए है क्योंकि समय बिंदु 1 पर, टीमो ऐश पर हमला करना शुरू करता है और ऐश को तुरंत जहर देता है। यहां यह जहर की स्थिति समय बिंदु 2 के अंत तक 2 सेकंड तक रहेगी। और समय बिंदु 4 पर, टीमो इस दुश्मन पर फिर से हमला करता है, और ऐश को और 2 सेकंड के लिए जहर की स्थिति में डाल देता है। इसलिए आपको अंततः 4 आउटपुट करना होगा।

हल का दृष्टिकोण

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • ret := 0 सेट करें
  • currEnd := -1
  • n := t का आकार
  • i = 0 से n-1 तक:
    • start := t[i], end := t[i] + d - 1
    • यदि currEnd < start, तो ret := ret + end - start + 1, currEnd = end,
    • अन्यथा ret := ret + end - currEnd, currEnd := end
  • 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; 
    } 
}; 

int main(){ 
    vector<int> v = {1,4}; 
    Solution ob; 
    cout << (ob.findPoisonedDuration(v, 2)); 
}

इनपुट

[1,4] 4

आउटपुट

4

  1. C++ में जंप गेम V C++ में जंप गेम V

    मान लीजिए हमारे पास arr नामक पूर्णांकों की एक सरणी और एक पूर्णांक d है। एक चरण में हम इंडेक्स i से कूद सकते हैं: i + x जहां: i + x < n और x की सीमा 1 से d है। = 0 और x की सीमा 1 से d है। arr[k] हो। हम सरणी के किसी भी इंडेक्स से कूदना शुरू कर सकते हैं। हमें अधिकतम इंडेक्स की संख्या ज्ञात करनी है ज

  1. - C++ में K डिजिट्स हटाना

    मान लीजिए हमारे पास एक नॉन-नेगेटिव इंटीजर num है जिसे स्ट्रिंग के रूप में दर्शाया गया है, हमें नंबर से k डिजिट्स हटाने हैं ताकि नया नंबर सबसे छोटा संभव हो। उदाहरण के लिए, अगर इनपुट 1432219 है और k = 3, तो रिजल्ट 1219 होगा। इसे हल करने के लिए, हम इन स्टेप्स को फॉलो करेंगे: एक स्टैक st डिफाइन करें,

  1. - C++ में चार डिवाइजर्स

    मान लीजिए हमारे पास एक इंटीजर ऐरे nums है, हमें उस ऐरे में उन इंटीजर्स के डिवाइजर्स का योग ढूंढना है जिनके ठीक चार डिवाइजर्स हैं। अगर ऐरे में ऐसा कोई इंटीजर नहीं है, तो 0 लौटाएं। उदाहरण के लिए, अगर इनपुट [21, 4, 7] है, तो आउटपुट 32 होगा, क्योंकि 21 के चार डिवाइजर्स हैं 1, 3, 7, 21, 4 के तीन डिवाइजर