這道題目是比賽的第一題,不算難但是要注意細節。
題目描述
夏天又到了,奶牛貝里斯開始變得非常懶惰。他想要站在乙個地方,然後只走很少的一段路,就能吃到盡可能多的美味的青草。有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。奶牛貝里斯想要在直線上選擇乙個點作為他的初始點 初始點有可能和草坪的位置重合 這樣他就能吃到以這個...