解題報告 數學

2022-06-04 02:36:06 字數 1530 閱讀 5789

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澆完水之後就精疲力竭了,所以請你幫助他計算每棵樹都被澆了幾次水。輸入檔案 第一行乙個整...