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

घटनाओं की अधिकतम संख्या जिन्हें C++ में भाग लिया जा सकता है


मान लीजिए कि हमारे पास कई इवेंट हैं जहां इवेंट [i] =[startDayi, endDayi] हैं। यहाँ हर कार्यक्रम मैं startDayi से शुरू होता हूँ और endDayi पर समाप्त होता हूँ। हम किसी भी दिन d जहां d रेंज startTimei और endTimei (दोनों सम्मिलित) में किसी ईवेंट I में भाग ले सकते हैं। हमें यह ध्यान रखना होगा कि हम किसी भी समय केवल एक ही कार्यक्रम में शामिल हो सकते हैं। इसलिए हम जितने कार्यक्रमों में भाग ले सकते हैं, उसकी अधिकतम संख्या ज्ञात कीजिए। उदाहरण के लिए, यदि इनपुट [[1,4], [4,4], [2,2], [3,4], [1,1]] जैसा है, तो आउटपुट 1 होगा, जैसा कि हम अधिकतम चार कार्यक्रमों में भाग ले सकते हैं, ये हैं [1, 1], [2, 2], [3, 4] और [4, 4]।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=ईवेंट की संख्या, फिर प्रारंभ तिथि के आधार पर ईवेंट सूची को सॉर्ट करें, ret सेट करें:=0 और itr:=0

  • pq नामक मैक्स-हीप के आधार पर एक प्राथमिकता कतार बनाएं

  • I के लिए 1 से 10000 की सीमा में

    • जबकि itr

      • ईवेंट सम्मिलित करें[itr, 1]

      • आईटीआर को 1 से बढ़ाएं

    • जबकि pq खाली नहीं है और pq के ऊपर . है

      • pq से तत्व हटाएं

    • यदि pq खाली नहीं है, तो pq से हटाएँ और ret को 1 से बढ़ाएँ

  • वापसी रिट

उदाहरण (C++)

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   static bool cmp(vector <int>& a, vector <int>& b){
      return a[0] < b[0];
   }
   int maxEvents(vector<vector<int>>& events) {
      int n = events.size();
      sort(events.begin(), events.end(), cmp);
      int ret = 0;
      int itr = 0;
      priority_queue <int, vector <int>, greater <int>> pq;
      for(int i = 1; i <= 1e5; i++){
         while(itr < n && events[itr][0] == i){
            pq.push(events[itr][1]);
            itr++;
         }
         while(!pq.empty() && pq.top() < i) pq.pop();
         if(!pq.empty()){
            pq.pop();
            ret++;
         }
      }
      return ret;
   }
};
main(){
   vector<vector<int>> v = {{1,4},{4,4},{2,2},{3,4},{1,1}};
   Solution ob;
   cout << (ob.maxEvents(v));
}

इनपुट

[[1,4],[4,4],[2,2],[3,4],[1,1]]

आउटपुट

4

  1. अधिकतम संख्या जिसे C++ में N सेगमेंट का उपयोग करके सेवन सेगमेंट डिस्प्ले पर प्रदर्शित किया जा सकता है

    यह देखते हुए कि कार्य सात खंड प्रदर्शन की चींटी संख्या पर N खंड का उपयोग करके प्रदर्शित की जा सकने वाली अधिकतम संख्या ज्ञात करना है। आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है - इनपुट -एन=5 आउटपुट - 71 स्पष्टीकरण − सबसे बड़ी संख्या सात खंडों के प्रदर्शन पर निम्नानुसार प्रदर्शि

  1. अधिकतम तत्व जिन्हें C++ में k अपडेट के बराबर बनाया जा सकता है

    कार्य को देखते हुए तत्वों की अधिकतम संख्या को खोजने के लिए है जो किसी दिए गए सरणी में अपने तत्वों को अधिकतम k बार बढ़ाने के बाद बराबर बनाया जा सकता है। आइए अब समझते हैं कि हमें एक उदाहरण का उपयोग करके क्या करना है - इनपुट a[] = {1, 3, 8}, k = 4 आउटपुट 2 स्पष्टीकरण यहाँ हम 1 तीन बार वृद्धि करके और

  1. C++ . में समकोण समद्विबाहु त्रिभुज में फिट होने वाले वर्गों की अधिकतम संख्या

    कार्य को देखते हुए ए वाले वर्गों की अधिकतम संख्या ज्ञात करना है जो एस के आधार के साथ एक समकोण समद्विबाहु त्रिभुज के अंदर फिट हो सकते हैं (एक समद्विबाहु त्रिभुज में कम से कम 2 बराबर पक्ष होते हैं)। आइए अब एक उदाहरण का उपयोग करके समझते हैं कि हमें क्या करना है: इनपुट s=5, a=1 आउटपुट 10 स्पष्टीकरण -