尺取 C語言

2021-10-02 06:43:01 字數 752 閱讀 3779

相比於普通的直接暴力列舉,尺取效率就高的多了。

用乙個題目來比較一下

如果用通常的方法來解決這個問題就是這樣的:

#includelong long int a[2000010];

int main()

if(flag>ans)//ans就是所要求的最大值,每次拿加好後的flag和ans比較,得到最大的那個

ans=flag;

i++;

}printf("%lld",ans);

}

不出所料,提交時間超限,所以現在就要換一種更好的思路,就是用尺取。

尺取呢,大致可以分為兩類:

1.固定區間長度的(比如本次的例子)

2.區間長度是不固定的;

這兩類都有以下兩個方式:

1:一端不動,另一端動;

2:兩端同時動(本次例子);

不多說,康康**:

#includelong long int a[2000010];

int main()

long long int i=2,ans=0,l=n;//因為後面出現a[i-1],要減去第乙個,所以i從2 開始

while(l--)

printf("%lld",ans);

}

以上就是我對尺取的理解。

c語言尺取演算法

尺取法 尺取法通常是對陣列儲存一對下標,即所選取的區間的左右端點,然後根據實際情況不斷地推進區間左右端點以得出答案。它就跟毛毛蟲一樣一步步往前取,但每次都會把兩端點變小,之所以需要掌握這個技巧,是因為尺取法比直接暴力列舉區間效率高很多,尤其是資料量大的 時候,所以尺取法是一種高效的列舉區間的方法,一...

學習記錄 尺取

尺取法通常試用於選取區間有一定規律,或所選取的區間有一定的變化趨勢的情況。poj3061 題意 給定乙個序列,找出最短的子串行長度,使得其和大於或等於s 輸入 包含兩個數,乙個為序列長度n,乙個為s 樣例輸入 10 15 5 1 3 5 10 7 4 9 2 8 樣例輸出 2思路 當乙個區間的和大於...

Bound Found(尺取 字首和)

題目大意 就是給n個有正有負的整數,然後給k個t,在n數列中找到連續的乙個序列使得這個序列的和的絕對值最接近t,然後輸出這個序列的和的絕對值和它的區間左右端點。思路 這是個尺取的問題,首先這是我第一道尺取題,不知道為什麼第一道就不容易找單調出序列,不知道掛題的學長怎麼想的,雖然當時講了一小下這種問題...