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

C++ में एक अंतराल हटाने के बाद अधिकतम कवर किए गए बिंदु


N अंतराल और अधिकतम रेंज मान Q दिया गया है। एक अंतराल हटाएं ताकि 1 से Q तक कवर किए गए पूर्णांकों की संख्या अधिकतम हो।

प्रत्येक बिंदु की कवरेज गिनें। फिर प्रत्येक अंतराल के लिए, उसके द्वारा विशिष्ट रूप से कवर किए गए बिंदु घटाकर शेष कवरेज देखें।

उदाहरण: अंतराल {{1,4},{4,5},{5,6},{6,7},{3,5}}, Q=7 → अंतराल इंडेक्स 4 हटाने पर अधिकतम कवरेज 7।

C++ कार्यान्वयन

#include <bits/stdc++.h>
#define ll long long int
using namespace std;

void solve(int interval[][2], int N, int Q) {
    int Mark[Q] = {0};
    for (int i = 0; i < N; i++) {
        int l = interval[i][0] - 1;
        int r = interval[i][1] - 1;
        for (int j = l; j <= r; j++) Mark[j]++;
    }
    int count = 0;
    for (int i = 0; i < Q; i++) if (Mark[i]) count++;
    int count1[Q] = {0};
    if (Mark[0] == 1) count1[0] = 1;
    for (int i = 1; i < Q; i++) {
        if (Mark[i] == 1) count1[i] = count1[i-1] + 1;
        else count1[i] = count1[i-1];
    }
    int maxindex, maxcoverage = 0;
    for (int i = 0; i < N; i++) {
        int l = interval[i][0] - 1, r = interval[i][1] - 1;
        int elem1 = (l != 0) ? count1[r] - count1[l-1] : count1[r];
        if (count - elem1 >= maxcoverage) {
            maxcoverage = count - elem1;
            maxindex = i;
        }
    }
    cout << "Maximum Coverage is " << maxcoverage << " after removing interval at index " << maxindex;
}

int main() {
    int interval[][2] = {{1,4}, {4,5}, {5,6}, {6,7}, {3,5}};
    int N = sizeof(interval) / sizeof(interval[0]);
    int Q = 7;
    solve(interval, N, Q);
    return 0;
}

आउटपुट

Maximum Coverage is 7 after removing interval at index 4
  1. C++ में जॉब शेड्यूलिंग में अधिकतम लाभ (Maximum Profit in Job Scheduling) C++ में जॉब शेड्यूलिंग में अधिकतम लाभ (Maximum Profit in Job Scheduling)

    समस्या विवरण n अलग-अलग कार्य दिए गए हैं। प्रत्येक कार्य startTime[i] से endTime[i] तक चलता है और profit[i] लाभ देता है। हमें ऐसे कार्यों का सबसेट चुनना है जिनके समय ओवरलैप न हों, ताकि कुल लाभ अधिकतम हो। यदि एक कार्य समय X पर समाप्त होता है, तो दूसरा कार्य समय X पर शुरू हो सकता है। उदाहरण इनपुट sta

  1. C++ में एक रेखा पर अधिकतम बिंदु C++ में एक रेखा पर अधिकतम बिंदु

    मान लीजिए हमारे पास एक 2D तल है। हमें उन अधिकतम बिंदुओं की संख्या ढूंढनी है जो एक ही सीधी रेखा पर स्थित हैं। तो यदि बिंदु इस तरह हैं -तो 4 बिंदु हैंइसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे -n := बिंदुओं की संख्या, यदि n < 3, तो n लौटाएंans := 2i को 1 से n - 1 तक की रेंज मेंcount := 0इं

  1. - C++ में अधिकतम एक तत्व हटाकर अधिकतम सबएरे योग को अधिकतम करना

    समस्या कथन N पूर्णांकों का एक ऐरे arr[] दिया गया है। कार्य पहले अधिकतम सब-एरे योग ढूंढना है और फिर सब-एरे से अधिकतम एक तत्व हटाना है। अधिकतम एक तत्व हटाएं ताकि हटाने के बाद अधिकतम योग अधिकतम हो। यदि दिया गया इनपुट ऐरे है {1, 2, 3, -2, 3} तो अधिकतम सब-एरे योग {2, 3, -2, 3} है। फिर हम -2 हटा सकते है