1、函式 又是函式
問題描述
話說leve最最最討厭數學,每次考試都因為數學悲劇…….
大頭頭還極其可惡的冒天下之大不韙的讓同學們把那本16開500頁的2012高考數學核按鈕做完(為什麼要叫核按鈕呢?你懂得)…….
現在,leve被一道函式題難住了,為了省出更多的時間學oi,她把這道題交給了你。
給定乙個函式f(x),它的定義域為1~n,值域為1~m,為了簡化題目,現在將每個x對應的f(x)都告訴你。現在,你的任務就是求出一段最小的連續的區間,使得這段區間內x對應的f(x)可以取遍1~m之間的數,輸出這段區間的長度。
輸入檔案
共兩行,第一行兩個數n,m。
第二行n個數 第i個數是i對應的函式值。每兩個數中間有乙個空格隔開,結尾無空格。
輸出檔案
乙個數,要求的區間長度。資料保證有解。
樣例輸入
7 66 1 2 4 4 5 3
樣例輸出
7資料範圍
n<=1000000 m<=n
liukeke 的學科試題之一·數學。
維護乙個佇列,每一次進隊乙個元素,如果這個元素所對應的值是第一次出現的話,給標記 +1
,等標記
>= m
時,試圖用佇列長度更新
ans
。所需要注意的是,每進隊乙個元素都要試圖出隊一次,將隊首能出隊的都出隊了,用 while
控制。就是這樣,沒什麼難的。
** (suemiller
)program acrush;
var n,m:longint;
a:array[0..1000010]of longint;
v:array[0..1000010]of longint;
i,j,k,l,r,ans:longint;
begin
assign(input,'math.in');reset(input);
assign(output,'math.out');rewrite(output);
fillchar(a,sizeof(a),0);
fillchar(v,sizeof(v),0);
readln(n,m);
for i:=1 to n do
begin
read(a[i]);
end;
readln;
l:=1;r:=0;
ans:=maxlongint;
for i:=1 to n do
begin
if v[a[i]]=0 then inc(r);
inc(v[a[i]]);
while v[a[l]]>1 do
begin
dec(v[a[l]]);
inc(l);
end;
if r>=m then
if i-l+1end;
writeln(ans);
// writeln(l,' ',r);
close(input);close(output);
end.
解題報告 數學2
2 數學,又是數學 mathagain 其實吧,大家也發現了,這六道題本來是一科一道的,但是呢,由於某某人比較 就不顧某某人的反對拋棄了我們可愛的english,又出了一道math 題目描述 liukeke同學 我們敬愛滴親愛滴可愛滴班長大人 最近又在忙著開班會 真是個工作狂 於是乎,數學學案就被拋...
HDOJ2512解題報告 數學
題目概述 給定n張卡,求將這n張卡分為1 n堆的所有分法之和。大致思路 顯然應該是數學題。首先應該確定所有的分組情況,比如n 2時可以分為兩組每組一張卡或一組兩張卡,對於確定分組情況,我們可以用求和的方式表示,如 4 1 1 1 1 4 2 1 1 4 2 2 4 3 1 4 4可以表示n 4時的所...
數學題 澆水解題報告
澆水 water.c cpp pas 題目描述 lazychild在青島二中科技樓裡種了一排n棵樹,每棵樹都有乙個高度。他會列舉所有的區間,然後從區間中找出乙個高度最矮的樹進行澆水 照顧弱者 由於lazychild澆完水之後就精疲力竭了,所以請你幫助他計算每棵樹都被澆了幾次水。輸入檔案 第一行乙個整...