雙指標法典中典 逛畫展(洛谷P1638)

2021-09-26 20:41:54 字數 1096 閱讀 2564

題目描述

博覽館正在展出由世上最佳的 m 位畫家所畫的圖畫。

wangjy想到博覽館去看這幾位大師的作品。

可是,那裡的博覽館有乙個很奇怪的規定,就是在購買門票時必須說明兩個數字,

a和b,代表他要看展覽中的第 a 幅至第 b 幅畫(包含 a 和 b)之間的所有圖畫,而門票

的價錢就是一張圖畫一元。

為了看到更多名師的畫,wangjy希望入場後可以看到所有名師的圖畫(至少各一張)。

可是他又想節省金錢。。。

作為wangjy的朋友,他請你寫乙個程式決定他購買門票時的 a 值和 b 值。

輸入格式

第一行是 n 和 m,分別代表博覽館內的圖畫總數及這些圖畫是由多少位名師的畫

所繪畫的。

其後的一行包含 n 個數字,它們都介於 1 和 m 之間,代表該位名師的編號。

輸出格式

a和 b(a<=b) 由乙個空格符所隔開。

保證有解,如果多解,輸出a最小的。

雙指標法求最小區間包含m個不同元素;

sum記錄區間的不同元素個數,當sum==m時,l 往右移(如果 l 位置上的元素個數大於等於2),更新最小區間就行,sum值都可以不變了;

**:

#include

#define ll long long

#define pa pair

#define ls k<<1

#define rs k<<1|1

#define inf 0x3f3f3f3f

using

namespace std;

const

int n=

1000100

;const

int m=

2000000

;const ll mod=

1e9+7;

int n,m,a[n]

,vis[

2100];

intmain()

if(ans>r-l+1)

}}cout<" "

}

雙指標法LeetCode總結

遍歷物件的過程中,使用兩個指標進行操作,實現相應的目的 經典環形鍊錶 leetcode142 待補充適用於有序陣列,設定陣列左索引與陣列右索引 基本流程是 publicf int nums leetcode11 盛水最多的容器 class solution return max leetcode15...

演算法思維 雙指標法

雙指標可分為三類 其中,滑動視窗 已單獨寫了一篇隨筆,可跳轉檢視。在快慢指標中,又有一類典型演算法,叫 floyd s cycle finding algorithm,其又名floyd s hare and tortoise algorithm。在這裡,我們主要談論左右指標和快慢指標。左右指標 主要...

雙指標法的常見應用

標籤 演算法 pivot null面試 2012 08 10 10 09 3247人閱讀收藏 舉報 資料結構 演算法 20 所謂雙指標,指的是在遍歷物件的過程中,不是普通的使用單個指標進行訪問,而是使用兩個相同方向或者相反方向的指標進行掃瞄,從而達到相應的目的。換言之,雙指標法充分使用了陣列有序這一...