時間限制:2000 ms | 記憶體限制:65535 kb
難度:2
描述問題很簡單,在一條直線上,座標從0開始到1000000;現在有n個石子在這條直線上(同乙個位置可能有多個石子)
那麼用乙個定長為m的桿子去覆蓋,請問最多能覆蓋多少個石子?
輸入輸入有多組資料
第一行有2個整數,n 和 m(n <= 50000,m <= 1000)
第二行有n個整數代表每個石子的位置(所有的數小於50000)
輸出每種情況輸出乙個整數(最多能覆蓋的石子數)
樣例輸入
3 2樣例輸出0 0 1
5 20 1 2 4 5
33首先求0--m的和值,然後進行加後減前,就是把後面乙個的加上,把最前面的那個刪除
a[1--m+1] = a[0--m] + a[m+1]- a[0];
1 #include 2 #include3 #include 45using
namespace
std;67
int a[1000005];8
9int
main()
1025
if(max <=m)
2630
31int
j;32
int sum = 0;33
for(i = 0; i <= m;i++)
34 sum +=a[i];
35int max_sum =sum;
36for(; i <= max; i++)
3743 printf("
%d\n\n
",max_sum);44}
45return0;
46 }
NYOJ 題目610 定長覆蓋(水)
時間限制 2000 ms 記憶體限制 65535 kb 難度 2 描述 問題很簡單,在一條直線上,座標從0開始到1000000 現在有n個石子在這條直線上 同乙個位置可能有多個石子 那麼用乙個定長為m的桿子去覆蓋,請問最多能覆蓋多少個石子?輸入 輸入有多組資料 第一行有2個整數,n 和 m n 50...
定長繩子最多覆蓋點
題目描述 數軸上從左到右有n個點,a 0 a 1 a n 1 給定一根長度為l繩子,求繩子最多覆蓋其中幾個點?以下面的陣列為例子,如果繩子長度為4,那麼最多覆蓋的點數應該是568這三個點 int a 5 把繩子想成一條蛇。如果長度小於4,那麼就頭一直增長,增長到4的話,就把尾部收短一些,之後就是頭伸...
定長線段最多覆蓋點的個數
給定一系列x軸的點座標,例如 1,3,7,8,9,11這些座標公升序放在陣列中,現在給一根繩子,長度為4,問繩子最多能覆蓋的點數有多少,例如繩子放前面只能覆蓋兩個點,1,3,如果放後面能覆蓋4個點。題目不難,但也不是太容易想出來,兩個指標前後跑的思路 兩個指標往前走,前面的負責加,後面的負責減,前面...