FZU 2168 防守阵地 I
来源:互联网 发布:js如何获取input的值 编辑:程序博客网 时间:2024/05/20 04:30
部队中共有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 3
2 1 3 1 4
Sample Output
17
设依次为
abcde五人
取
c+2d+3e=3(a+b+c+d)-2(a+b+c)-(a+b)
#include <stdio.h>#include <algorithm>using namespace std;int a[1000005];__int64 b[1000005],c[1000005];int main(){ int n,m,i,j,temp; __int64 sum,maxx; while(~scanf("%d %d",&n,&m)) { b[0]=c[0]=0; for(i=1;i<=n;i++) { scanf("%d",&a[i]); b[i]=b[i-1]+a[i]; c[i]=c[i-1]+b[i]; // printf("%I64d %I64d\n",b[i],c[i]); } sum=maxx=0; for(i=m;i<=n;i++) { sum=m*b[i]-(c[i-1]-c[i-1-m]); // printf("%I64d\n",sum); maxx=max(maxx,sum); } printf("%I64d\n",maxx); } return 0;}
0 0
- FZU 2168 防守阵地 I
- FZU 2168 防守阵地 I
- 防守阵地 I FZU - 2168
- FZU Problem 2168 防守阵地 I
- FZU Problem 2168 防守阵地 I
- FZU 2168 防守阵地 I(公式推导)(经典)(中等)
- FZU 2168 防守阵地I (模拟 简单规律)
- FZU_Problem 2168 防守阵地 I
- fzu 防守阵地 1
- 福州大学 Problem 2168 防守阵地 I
- 2168 防守阵地 I(简单数学题)
- FZU2169:防守阵地 I
- 防守阵地 I
- FZU2168 防守阵地 I
- FZU2168 防守阵地 I
- FZU_2168_防守阵地I
- FZU2168:防守阵地 I
- 防守阵地 I
- Linux sed命令简介
- 黑马程序员_Java基础:网络编程总结
- oracle恢复某个时间点的数据快照
- NFC天线设计____百度文章
- 公钥和私钥
- FZU 2168 防守阵地 I
- RTEMS-BBB(二):工具链安装
- Codeforces Round #302 (Div. 2) C. Writing Code dp
- 异步信号安全(可重入性)与线程安全
- 通过openURL启动第三方app并传参数
- Calendar Game(找规律+博弈)
- Android编程权威指南-第十七章挑战练习
- 论程序员的社会地位
- poj3150--Cellular Automaton(矩阵优化)