प्रौद्योगिकी साझेदारी

[प्रश्नानां सारांशः - दीर्घतमः पलिण्ड्रोम उपतारः, स्टॉक् क्रयणविक्रययोः सर्वोत्तमः समयः (1), [NOIP2002 लोकप्रियीकरणसमूहः] प्यादा नदी पारः

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

अद्यतनप्रश्नानां सारांशः-दिवस०१०

1. दीर्घतमः पालिन्ड्रोम उपतारः

1.1 प्रश्नः

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

1.2.विचाराः

प्रश्नं पठित्वा भवन्तः जानन्ति यत् n दीर्घतायाः तारस्य दीर्घतमस्य palindrome उपतारस्य दीर्घतां ज्ञातव्यम् । पलिण्ड्रोम उपतारं सममिततार इति अवगन्तुं शक्यते । समरूपतायाः कारणात् मूलविचारः "केन्द्रविस्तारविधिः" अस्ति, अर्थात् तारः क्रमेण भ्रमति, ततः वर्णस्य उभयतः विस्तारितः भवति यदि उभयतः वर्णाः समानाः सन्ति recorded in the retlen variable traversing इत्यस्य अनन्तरं वयं अन्ततः Just return the maximum length प्राप्नुमः । अवगमनस्य सुविधायै चित्रं रचयन्तु : १.
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
तदतिरिक्तं उदाहरणस्य विश्लेषणं कुर्वन् भवद्भिः विषम-समसङ्ख्यायोः भेदस्य विषये अपि ध्यानं दातव्यम्, अतः अग्रिमः सोपानः कार्यक्रमस्य कार्यान्वयनम् अस्ति ।

1.3 कार्यक्रमस्य कार्यान्वयनम्

प्रथमं विचारविश्लेषणस्य "केन्द्रविस्तारविधि" इत्यस्य अनुसारं i इत्यत्र केन्द्रीयस्थानकात् तारं पारं कृत्वा विस्तारितं भवति numbers and even numbers, क्रमशः अधिकतमं मूल्यं ज्ञात्वा, अन्ते च अन्तिमं अधिकतमं retlen प्राप्तुं तस्य तुलनां कुर्वन्तु, तत् च प्रत्यागच्छन्तु ।

class Solution
{
public:
    int getLongestPalindrome(string A)
    {
        size_t len = A.size();
        int left = 0;
        int right = 0;
        int retlen = 0;
        //偶数
        for(int i = 0;i < len; i++)
        {
            left = i;
            right = i + 1;
            while(left >= 0 && right < len && A[left] == A[right])
            {
                left--;
                right++;
            }
            retlen = max(retlen ,right - left - 1);
        }
        //奇数
        for(int j = 0;j < len;j++)
        {
            left = j;
            right = j;
            while(left >= 0 && right < len && A[left] == A[right])
            {
                left--;
                right++;
            }
            retlen = max(retlen ,right - left - 1);
        }
        return retlen ;
    }
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

2. स्टॉक् क्रयणविक्रययोः उत्तमः समयः (1) .

२.१ प्रश्नः

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

२.२.विचाराः

प्रश्नं पठित्वा भवन्तः जानन्ति यत् स्टॉकसमूहस्य क्रयविक्रयतन्त्रस्य कृते भवन्तः केवलं एकवारमेव क्रयणविक्रयणं कर्तुं शक्नुवन्ति यदि भवन्तः कदा क्रयणं विक्रयणं वा कुर्वन्ति चेत् धनस्य हानिः भवति much you lose, अर्थात् लाभः नास्ति, ततः output 0 That’s it. ततः, मूलभूतः विचारः अस्ति यत्, प्रत्येकस्य समूहस्य लाभान्तरं ज्ञात्वा, अधिकतमं मूल्यं प्रत्यागन्तुं च, एतत् ज्ञायते यत् for will time out, and this problem limited to १ms समाधानार्थम् । अतः क्रूरबलपद्धत्या आधारेण अनुकूलनं आवश्यकं भवति, अतः क्रूरबलविधिः अपि लिखिता भवति ततः क्रूरबलपद्धत्या आधारेण पश्चात्तापः बहुवारं पुनरावृत्तिः अभवत्, अनुकूलनं, चिन्तनं, आविष्कारः च, यदि वयं चिन्तयामः reverse, first consider selling ततः, भवन्तः केवलं विक्रयबिन्दुतः पूर्वं न्यूनतमं मूल्यं अन्वेष्टुम् अर्हन्ति, तथा च प्राप्तः अन्तरः अधिकतमः अन्तरः भवति, यस्य अर्थः अस्ति यत् भवन्तः केवलं एकवारं एव तत् पारं कर्तुं प्रवृत्ताः सन्ति अग्रिमः सोपानः कार्यक्रमस्य कार्यान्वयनम् अस्ति ।

2.3 कार्यक्रमस्य कार्यान्वयनम्

प्रथमं ब्रूट फोर्स विधिविश्लेषणस्य अनुसारं अधिकतमं भेदनिर्गमं ज्ञातुं सर्वाणि परिस्थितयः गण्यन्ते । अतः तस्य अनुकूलनं कर्तव्यम् अस्ति।

#include <iostream>
using namespace std;

const int N = 1e5 +10;

int arr[N];

int main()
{
    int n;
    cin >> n;
    for(int i = 0;i < n;i++)
        cin >> arr[i];

    int maxval = 0;
    for(int i = 0;i < n; i++)
    {
        for(int j = i;j < n;j++)
        {
            maxval = max(maxval , arr[j]- arr[i]);
        }
    }

    cout << maxval << endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

2.4.कार्यक्रमस्य कार्यान्वयनम् – अनुकूलनम्

उपर्युक्तस्य क्रूरबलपद्धतेः आधारेण अनुकूलनं क्रियते तत् पूर्णतया अवगन्तुं विचारविश्लेषणस्य आधारेण प्रदर्शनचित्रं आकृष्यते ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
ततः प्रोग्रामं कार्यान्वितुं, आवश्यकतानुसारं निवेशं लिखन्तु, ततः arr[0] इत्यस्य आरम्भार्थं minval परिभाषयन्तु यत् traversal comparison and update कृते कल्पितं न्यूनतमं मूल्यं भवति, ततः i स्थानं प्रति traversing करणसमये minval तः अधिकतमं अन्तरं प्रतिनिधितुं maxSub परिभाषयन्तु , which is worth ध्यानं कुर्वन्तु यत् traversing इत्यत्र minval तथा maxSub इत्यस्य क्रमं प्रति ध्यानं दत्तव्यं प्रथमं minval इत्यस्य न्यूनतमं मूल्यं ज्ञात्वा ततः maxSub इति ज्ञातव्यम् ।

#include <iostream>
#include <vector>
using namespace std;

int main() 
{
    int n = 0;
    cin >> n;
    vector<int> arr(n);
    int m = 0;
    while(n--)
    {
        cin >> arr[m];
        m++;
    }
    int minval = arr[0];
    int submax = 0;
    for(int i = 0;i<arr.size();i++)
    {
        minval = min(arr[i],minval);
        submax = max(submax, arr[i] - minval);
    }
    cout << submax << endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

3. [NOIP2002 लोकप्रियीकरणसमूहः] प्यादानदीं पारं कुर्वन्

३.१ प्रश्नः

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

3.2.विचाराः

प्रश्नं पठित्वा भवन्तः ज्ञास्यन्ति यत् कतिपयनियमानुसारं क-बिन्दुतः ख-बिन्दुपर्यन्तं गन्तुं अधिकतया कति मार्गाः सन्ति । प्रश्नस्य विश्लेषणं कुर्वन् भवद्भिः ज्ञातव्यं यत् कतिपयनियमानुसारं भवन्तः दक्षिणतः अधः वा गन्तुं शक्नुवन्ति, येन dynamic programming dp इत्यस्य विचारः आगच्छति यत् प्रश्ने भवद्भिः अपि ध्यानं दातव्यम् इति अश्वस्य न चालयितुं (भ्रष्टः), अर्थात् शतरंजस्य शूरवीरः अश्वस्य आरम्भबिन्दुसहितं निर्देशांकयोः तिर्यक् "सूर्येन" परिकल्पिताः बिन्दवः नियन्त्रणबिन्दवः इति उच्यन्ते तेषु अश्वः आरम्भे दत्तः नियतबिन्दुः (x, y) अस्ति, प्रश्नः अश्वस्य कूर्दनबिन्दुस्य अश्वस्य आरम्भबिन्दुस्य च सम्बन्धमपि ददाति । तदतिरिक्तं ज्ञातव्यं यत् उदाहरणेन शतरंजफलकेन च शतरंजफलकस्य परिमाणं (n+1) भवति ।(म+१)。
अतः उपर्युक्तविश्लेषणस्य आधारेण वयं निष्कर्षं कर्तुं शक्नुमः यत् -
(1) समस्यानां समाधानार्थं गतिशीलप्रोग्रामिंग dp विचाराणां उपयोगं कर्तुं शक्नुवन्ति;
(२) अश्वस्य नियन्त्रणबिन्दुः तिर्यक् "सूर्य" इत्यस्य अतिरिक्तं स्वकीयं प्रारम्भस्थानं अपि अन्तर्भवति;
(३) शतरंजफलकस्य आकारः (n+1) भवति ।
(म+१) ।
अतः ध्यानबिन्दुविश्लेषणानन्तरं वयं गतिशीलप्रोग्रामिंगस्य dp अवस्थाप्रतिपादनं तथा अवस्थासंक्रमणसमीकरणं प्रति आगच्छामः;
विषयस्य चलननियमानाम् आधारेण dp[i][j] अवस्था प्रतिनिधितुं परिभाषिता अस्ति: अस्य स्थानस्य अधिकतमं अनेकाः मार्गाः सन्ति;
अवस्था संक्रमण समीकरण व्युत्पन्न करें : dp[i][j] = d[i][j-1] + d[i-1][j];
तदतिरिक्तं ज्ञातव्यं यत् यदि B बिन्दुस्य आरम्भस्थानं अश्वस्य अथवा नियन्त्रणबिन्दुस्य आरम्भस्थानेन सह सङ्गच्छते, तथा च B बिन्दुस्य उपरि वामभागे च सर्वे अवरुद्धाः सन्ति अर्थात् नियन्त्रणबिन्दुः, तर्हि उपर्युक्ते चरमप्रसङ्गे , अस्मिन् समये dp[i] [j] = 0 ततः अग्रिमः सोपानः कार्यक्रमस्य कार्यान्वयनम् अस्ति ।

3.3.कार्यक्रमस्य कार्यान्वयनम् – dp

प्रथमं विचारस्य विश्लेषणस्य अनुसारं निवेशं लिखन्तु, dp सरणीं परिभाषयन्तु, उद्घाटयन्तु च (पश्चात् द्वौ जालौ चर्चा भविष्यति), तथा च शतरंजफलकस्य आकारानुसारं, निर्देशांकानाम् एकरूपरूपेण वर्णनं कर्तुं शक्नुवन् अतिरिक्तं पङ्क्तिः स्तम्भः च अत्र उद्घाटिताः भविष्यन्ति, ततः x तथा y इत्येतयोः नक्शाङ्कनं करणीयम् केवलं निर्देशांकं +=1 सेट् कुर्वन्तु, ततः dp इत्यस्य आरम्भसमस्यां अन्वेष्टुम्, तथा च स्पष्टतरं कर्तुं चित्रं आकर्षयन्तु:
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
ततः, वास्तविकं द्विमात्रिकं सरणीं [1, n+1] तथा [1, m+1] तः पारितं भवति, चरमस्थितीनां संसाधनस्य निरन्तरं न्यायः भवति, अन्ते च dp[n+1][m+1] निर्गच्छति अस्मिन् क्षणे विचारेण कोऽपि समस्या नास्ति ।
(1), x तथा y इत्येतयोः निर्देशांकयोः मानचित्रणं;
(2) सरणी परिभाषानुसारं dp[0][1] = 1 अथवा dp[1][0] = 1 प्रारम्भं कुर्वन्तु (एकं अधिकं स्तरं उद्घाटयन्तु);
(3) [1, n+1] तथा [1, m+1] तः सीमानियन्त्रणपरिभ्रमणं प्रति ध्यानं दत्त्वा द्वि-अङ्कीय-सरणीं पारं कुर्वन्तु;
क. चरमपरिस्थितयः निर्धारयन्तु : 1. अश्वस्य नियन्त्रणबिन्दुः मार्गं अवरुद्धं करोति 2. संयोगसमस्या;
ख. सामान्य निष्पादन अवस्था संक्रमण समीकरण: dp [i] [j] = d [i] [j-1] + d [i-1] [j];
(4), अन्ततः आउटपुट dp[n+1][m+1]।
तदतिरिक्तं उपरि उल्लिखितौ जालौ स्तः यत् मया लेखनं समाप्तं कृत्वा प्रस्तुतीकरणं विफलम् अभवत् तथा च मया ज्ञातं यत् दत्तांशः परिधितः बहिः आसीत्, अतः सरणीं उद्घाटयितुं दीर्घदीर्घस्य उपयोगः सर्वोत्तमः अन्यः जालः अस्ति यत् आकारपरिधिः उद्घाटनं अतिविशालं भवति, अतः न्यूनातिन्यूनं २२ तः अधिकं वा समं वा भवितुमर्हति । पूर्वं dp[21][21] इत्यस्य उपयोगेन सर्वाणि उपयोगप्रकरणाः पारयितुं न शक्यन्ते स्म ।

#include <iostream>
using namespace std;

long long dp[22][22];

int main()
{
    int n,m,x,y;
    cin >> n >> m >> x >> y;
    //映射坐标
    x += 1;
    y += 1;
    //初始化
    dp[0][1] = 1;
    //遍历
    for(int i = 1;i <= n+1; i++)
    {
        for(int j = 1;j <= m+1; j++)
        {
            //极端情况的处理:  1.马控制点 2.自身重合
            if((i != x && j != y && abs(i - x) + abs(j - y) == 3) || (i == x && j == y))
            {
                dp[i][j] = 0;
            }
            else
            {
                dp[i][j] = dp[i][j-1] + dp[i-1][j];
            }
        }
    }
    cout << dp[n+1][m+1] << endl;
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

4. प्रश्नलिङ्कः

दीर्घतमः पालिन्ड्रोम उपतारः
स्टॉक् क्रयणविक्रययोः उत्तमः समयः (१)
[NOIP2002 लोकप्रियीकरणसमूहः] नदी प्यादा पारं कुर्वन्