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

प्रतिस्पर्धात्मक प्रोग्रामिंग के लिए C++ ट्रिक्स


यहां हम C++ प्रोग्रामिंग भाषा के कुछ अच्छे ट्रिक्स देखेंगे जो विभिन्न क्षेत्रों में हमारी मदद कर सकते हैं। जैसे यदि हम किसी प्रतिस्पर्धात्मक प्रोग्रामिंग आयोजन में भाग लेना चाहते हैं, तो ये ट्रिक्स कोड लिखने में लगने वाले समय को कम करने में मदद करेंगे। आइए इन उदाहरणों को एक-एक करके देखते हैं।

1. % ऑपरेटर के बिना विषम/सम जांच

हम संख्या और 1 के साथ बिटवाइज़ AND ऑपरेशन कर सकते हैं। यदि परिणाम शून्येतर है तो विषम, अन्यथा सम।

if ((n & 1) != 0) {
    // यह विषम है
} else {
    // यह सम है
}

2. शिफ्ट ऑपरेटर से तेज गुणा/भाग

2ⁿ से गुणा के लिए बाएं शिफ्ट n बार, 2ⁿ से भाग के लिए दाएं शिफ्ट n बार।

x = 40;
y = x << 2; // x * 4 = 160
cout << y;

x = 40;
y = x >> 2; // x / 4 = 10
cout << y;

3. तीसरे वेरिएबल के बिना स्वैप (XOR)

// x और y स्वैप करें
x ^= y;
y ^= x;
x ^= y;

4. strlen() के बिना स्ट्रिंग ट्रैवर्सल

for(int i = 0; s[i]; i++) {
    cout << s[i];
}

5. push_back() के बजाय emplace_back()

emplace_back() तेज है क्योंकि यह कंटेनर में सीधे ऑब्जेक्ट बनाता है, अस्थायी ऑब्जेक्ट बनाकर कॉपी/मूव नहीं करता।

6. इनबिल्ट GCD फ़ंक्शन

__gcd(x, y) // x और y का GCD

7. सरणी आकार सीमाएं

  • लोकल (main में): ~10⁶
  • ग्लोबल: ~10⁷

8. लॉग से सबसे महत्वपूर्ण अंक (MSD)

n = 4578;
double k = log10(n);
k = k - floor(k);
int x = pow(10, k); // x = 4 (MSD)

9. लॉग से अंकों की संख्या

n = 4578;
int digits = floor(log10(n)) + 1; // 4

10. 2 की घात जांच

x = 1024;
bool isPowerOfTwo = x && (!(x & (x-1))); // true

11. एल्गोरिदम: all_of, any_of, none_of

all_of(begin, end, pred);  // सभी प्रीडिकेट सेटिस्फाई करते हैं
any_of(begin, end, pred);  // कम से कम एक सेटिस्फाई करता है
none_of(begin, end, pred); // कोई भी सेटिस्फाई नहीं करता

12. copy_n: कंटेनर्स के बीच कॉपी

int src[5] = {10, 20, 30, 40, 50};
int dest[5];
copy_n(src, 5, dest);

13. iota: क्रमिक मान भरें

int arr[5];
iota(arr, arr+5, 10); // {10, 11, 12, 13, 14}

14. बाइनरी लिटरल्स (C++14+)

int x = 0b1101; // 13

15. वैकल्पिक ऑपरेटर कीवर्ड्स

and (&&), or (||), not (!), bitand (&), bitor (|), xor (^), compl (~), and_eq (&=), or_eq (|=), xor_eq (^=), not_eq (!=)।

if (x < 10 and x > 5) cout << "True";
  1. C++ में STL का उपयोग करके BFS (प्रतिस्पर्धी प्रोग्रामिंग के लिए) C++ में STL का उपयोग करके BFS (प्रतिस्पर्धी प्रोग्रामिंग के लिए)

    ब्रेडथ फर्स्ट सर्च (BFS) क्या है? ब्रेडथ फर्स्ट सर्च (BFS) ट्रैवर्सल एक एल्गोरिदम है जिसका उपयोग दिए गए ग्राफ के सभी नोड्स को विजिट करने के लिए किया जाता है। इस ट्रैवर्सल एल्गोरिदम में एक नोड चुना जाता है और फिर सभी आसन्न नोड्स को एक-एक करके विजिट किया जाता है। सभी आसन्न वर्टेक्स पूरे होने के बाद,

  1. - कॉम्पिटिटिव प्रोग्रामिंग के लिए पायथन इनपुट मेथड्स

    इसमें हम पायथन में कॉम्पिटिटिव प्रोग्रामिंग के लिए विभिन्न I/O मेथड्स देखेंगे। कॉम्पिटिटिव प्रोग्रामिंग में इनपुट को जितनी तेज़ी से संभव हो पढ़ना महत्वपूर्ण है ताकि दूसरों पर बढ़त मिल सके। मान लीजिए आप कोडफोर्स या इसी तरह के ऑनलाइन जज (जैसे SPOJ) पर हैं और आपको संख्याएं a, b, c, d पढ़कर उनका गुणनफल

  1. - प्रतिस्पर्धात्मक कोडिंग के लिए Python ट्रिक्स

    Python अधिकांश प्रतिस्पर्धात्मक प्रोग्रामिंग चुनौतियों के लिए कोडर्स के बीच पसंदीदा भाषाओं में से एक है। अधिकांश समस्याओं को Python का उपयोग करके उचित समय सीमा में आसानी से हल किया जाता है। कुछ जटिल समस्याओं के लिए, पर्याप्त तेज़ Python कोड लिखना अक्सर एक चुनौती होती है। नीचे कुछ पायथनिक कोड निर्म