懶惰的奶牛(b)

2021-10-07 17:22:52 字數 1039 閱讀 5238

這道題目是比賽的第一題,不算難但是要注意細節。

題目描述

夏天又到了,奶牛貝里斯開始變得非常懶惰。他想要站在乙個地方,然後只走很少的一段路,就能吃到盡可能多的美味的青草。有n塊草坪排列在一條直線上,第i個草坪擁有g_i數量的青草,第i個草坪所在的位置是x_i。奶牛貝里斯想要在直線上選擇乙個點作為他的初始點(初始點有可能和草坪的位置重合),這樣他就能吃到以這個點為中點距離不超過k的位置上的所有青草。如果初始點可以自由選擇的話,請幫助貝里斯計算他最多能吃到的青草的數量。

輸入第一行是兩個正整數,表示n和k。

第2行到第n+1行,每行兩個整數,第i行的兩個整數表示第i個草坪的g_i和x_i。

輸出輸出貝里斯最多能吃到的青草數量。

樣例輸入

4 34 7

10 15

2 25 1

樣例輸出

11資料範圍限制

1<=n<=100000,1<=g_i<=10000,0<=x_i<=1000000,1<=k<=2000000。

提示如果貝里斯將初始點選擇在x=4的位置,那麼他可以吃到x=1,x=2和x=7這三個地方的青草,總共是11。

解題思路:我們可以用字首和優化來解決這道好似暴力的題目。我們可以迴圈列舉出每乙個點為中心的值,最後求出期望值max。這裡可以注意一下,首先我們迴圈是列舉中間那個店,所以說可以用k–n-k的迴圈。而字首和求和要注意的是,1–n這個區間的數,是f[n]-f[1-1]得來的。

這裡給出核心**:

for

(long

long i=

1;i<=m;

++i)

pre[i]

=pre[i-1]

+f[i]

;for

(long

long i=m;i>=k*2+

1;--i)

ans=

max(ans,pre[i]

-pre[i-k*2-

1]);

感謝大家的**,留個贊再走吧,謝謝!

懶惰的奶牛

題目描述 夏天又到了,奶牛貝里斯開始變得非常懶惰。他想要站在乙個地方,然後只走很少的一段路,就能吃到盡可能多的美味的青草。有n塊草坪排列在一條直線上,第i個草坪擁有g i數量的青草,第i個草坪所在的位置是x i。奶牛貝里斯想要在直線上選擇乙個點作為他的初始點 初始點有可能和草坪的位置重合 這樣他就能...

SSL ZYC 懶惰的奶牛

題目大意 在乙個平面內,一頭奶牛只能吃距離它k步的地點上的草。請問這只奶牛最多能吃到多少草?思路 一開始看到這道題時一頭霧水,以為要像懶惰的奶牛 一樣,把平面轉換成直線。但是想了一下,發現對於不確定的點f i j 我們無法確定每個點距離它多少公尺,列舉的話必然超時。在草稿紙上畫了幾下之後,我發現了這...

usaco2013 mar 懶惰的奶牛

夏天又到了,奶牛貝里斯開始變得非常懶惰。他想要站在乙個地方,然後只走很少的一段路,就能吃到盡可能多的美味的青草。有n塊草坪排列在一條直線上,第i個草坪擁有g i數量的青草,第i個草坪所在的位置是x i。奶牛貝里斯想要在直線上選擇乙個點作為他的初始點 初始點有可能和草坪的位置重合 這樣他就能吃到以這個...