FZU 2168 防守陣地 I (遞推)

2022-09-16 22:24:20 字數 1159 閱讀 8432

description

部隊中共有n個士兵,每個士兵有各自的能力指數xi,

在一次演練中,指揮部確定了m個需要防守的地點,按重要程度從低到高排序,

依次以數字1到m標註每個地點的重要程度,

指揮部將選擇m個士兵依次進入指定地點進行防守任務,

能力指數為x的士兵防守重要程度為y的地點將得到x*y的參考指數。

現在士兵們排成一排,請你選擇出連續的m個士兵依次參加防守,使得總的參考指數值最大。

input

輸入包含多組資料。

輸入第一行有兩個整數n,m(1<=n<=1000000,1<=m<=1000),

第二行n個整數表示每個士兵對應的能力指數xi(1<=xi<=1000)。

對於30%的資料1<=m<=n<=1000。

output

輸出乙個整數,為最大的參考指數總和。

sample input

5 32 1 3 1 4

sample output

17思路:

直接暴力必然超時

但是每m個數字的序列和 可以通過遞推公式

s=s-m*a[i+1]+sum[i];
得到  

然後求出最大值

#include#include#include#include#include#include#include#define mem(a,b) memset(a,b,sizeof(a))

#define ll __int64

#define maxn 1000

#define inf 0x7ffffff

#define lson l,m,rt<<1

#define rson m+1,r,rt<<1|1

using namespace std;

int a[1000000+10];

int sum[1000000+10];//儲存每 m 個數值的和

int main()

maxx=0;

cnt=m;

for(i=n;i>=n-m+1;i--)//最末尾的情況

int s=maxx;

for(i=n-1;i>=m;i--)//從末尾往前推

}printf("%d\n",maxx);

}return 0;

}

(紀中)2168 朋友 friend

file io input friend.in output friend.out 時間限制 1000 ms 空間限制 262144 kb 具體限制 goto problemset 題目描述 經過六年的努力,小明終於被一所知名中學錄取。優秀的小明總是對一些奇奇怪怪的事情感興趣,這次他想知道誰在這所新...

FZU Problem 2168 防守陣地 I

題目大意 給定n個數和m,要求從n個數中選擇連續的m個,使得a i 1 a i 1 2 a i m m最大 思路 常規思路是以每乙個數開始。列舉m個,可是這樣會tle。能夠有o n 的演算法。比如例子的 n 5 m 3 五個數分別為 2 1 3 1 4 有三種連續的三個數 2 1 1 2 3 3 1...

Luogu P2168 NOI2015 荷馬史詩

給定一棵含 n 個葉子節點的 k 叉樹,其中第 i 的葉子有點權 a i 要求最小化 sum w i times l i 其中 l i 表示到根節點的距離 並求出在權值和最小的情況下樹的最小深度 huffman樹 先將 k 叉樹用權值為0的點補滿,然後每次選出權值最小的 k 個點合併 可以用堆實現,...