link
description
博覽館正在展出由世上最佳的 m 位畫家所畫的圖畫。wangjy想到博覽館去看這幾位大師的作品。
可是,那裡的博覽館有乙個很奇怪的規定,就是在購買門票時必須說明兩個數字,a和b,代表他要看展覽中的第 a 幅至第 b 幅畫(包含 a 和 b)之間的所有圖畫,而門票的價錢就是一張圖畫一元。
為了看到更多名師的畫,wangjy希望入場後可以看到所有名師的圖畫(至少各一張)。可是他又想節省金錢。。。作為wangjy的朋友,他請你寫乙個程式決定他購買門票時的 a 值和 b 值。
給定乙個含k
kk種數字的序列,求出同時含這k
kk種數字的最小區間,若有長度相同的幾個最小區間,輸出左端點最小的那個區間。
solution
使用兩個指標,維護區間,考慮維護乙個含有k
kk種數字的區間,不斷向右移動右指標,向右移動左指標,並保證k
kk種數字,同時更新所需要查詢的最小區間。
about
尺取法一般用來解決具有單調性問題的區間問題,有些題目也可以用二分解決。往往可以把不單調區間轉化為單調區間,然後使用尺取法。
code
// luogu-judger-enable-o2
#include
#include
#include
#include
#include
#include
//#include
using
namespace std;
#define maxn 1000900
#define inf 0x3f3f3f3f
typedef
long
long ll;
struct edgee[2]
;int head[1]
,cnt;
void
add(
int x,
int y,
int w)
intread()
while
(c>=
'0'&&c<=
'9')
return x*f;
}int n,m,a[maxn]
,cot[
2005];
intmain()
elseif(
++cot[a[
++r]]==
1)num++;if
(num==m)
} cout<" "<}
我們堅持一件事情,並不是因為這樣做了會有效果,而是堅信,這樣做是對的。
——哈維爾
P1638 逛畫展 (尺取法)
傳送門 思路 顯然區間具有單調性,所以可以通過列舉區間左端點,讓區間右端點不斷增加,至於區間畫的種類數,用乙個陣列記錄區間的 l r 的畫的種類數,不斷更新即可。時間複雜度 o n o n o n ac include include include include include include ...
P1638 逛畫展 左右指標移動
這道題不是莫隊,只是有莫隊的影子 題意 給出n個數字,給出m個畫家 表示這n個數字為1 m 讓我們找到乙個最小的範圍涵蓋這1 m個數,如果多解,則輸出左區間最小的解 思路 我們用左右指標移動來做此題,類似於莫隊 那麼如何做呢?我們一開始從第乙個端點開始,把第乙個端點納進來,然後開始分情況討論 假如已...
雙指標法典中典 逛畫展(洛谷P1638)
題目描述 博覽館正在展出由世上最佳的 m 位畫家所畫的圖畫。wangjy想到博覽館去看這幾位大師的作品。可是,那裡的博覽館有乙個很奇怪的規定,就是在購買門票時必須說明兩個數字,a和b,代表他要看展覽中的第 a 幅至第 b 幅畫 包含 a 和 b 之間的所有圖畫,而門票 的價錢就是一張圖畫一元。為了看...