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 個點合併 可以用堆實現,...