2168 防守阵地 I(简单数学题)
来源:互联网 发布:访客网络应该限速多少 编辑:程序博客网 时间:2024/06/10 03:59
Problem 2168 防守阵地 I
Accept: 441 Submit: 1546
Time Limit: 3000 mSec Memory Limit : 32768 KB
Problem 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 3
2 1 3 1 4
Sample Output
17
这题就是在1-n里选1-m个连续的数,因为是连续的,所以从一开始与从二开始只是将a1+a2+a3剪去,这样就还剩下a2*1+a3*2了,之后再加a3+a4*3就OK了。
AC代码:
#include<cstdio>#define T 1000005int a[T];int main(){ /*freopen("input.txt","r",stdin);*/int n,m,ma,ans,i,v;while(~scanf("%d%d",&n,&m)){ans = 0;v = 0;for(i=0;i<n;++i){ scanf("%d",&a[i]); if(i<m){ ans+=a[i]*(i+1); v+=a[i]; }}ma = ans;for(i=1;i<=n-m;++i){ans = ans - v + a[m+i-1]*m;v = v - a[i-1] + a[m+i-1]; if(ma<ans){ma = ans;}}printf("%d\n",ma);} return 0;}
0 0
- 2168 防守阵地 I(简单数学题)
- FZU 2168 防守阵地 I
- FZU_Problem 2168 防守阵地 I
- FZU 2168 防守阵地 I
- 防守阵地 I FZU - 2168
- FZU 2168 防守阵地I (模拟 简单规律)
- 福州大学 Problem 2168 防守阵地 I
- FZU Problem 2168 防守阵地 I
- FZU Problem 2168 防守阵地 I
- FZU2169:防守阵地 I
- 防守阵地 I
- FZU2168 防守阵地 I
- FZU2168 防守阵地 I
- FZU_2168_防守阵地I
- FZU2168:防守阵地 I
- 防守阵地 I
- 防守阵地 I 加强版
- FZU 2168 防守阵地 I(公式推导)(经典)(中等)
- 【HttpClient4.5中文教程】【第一章 :基础】1.1执行请求(二)
- LeetCode----Binary Search Tree Iterator
- 正则表达式语法详解
- 58同城推荐系统架构设计与实现
- Quartz2D:图形上下文栈
- 2168 防守阵地 I(简单数学题)
- 【HttpClient4.5实训】一.HttpClient4.5模拟浏览器GET请求访问新浪网(非原文教程)
- java-Collections类中shuffle的用法
- LINUX1——Linux 查找指定名称的进程并显示进程详细信息
- 【HttpClient4.5中文教程】【第一章 :基础】1.1执行请求(三)
- Java 异常处理
- iOS开发见闻-第4期
- FZU 2168
- 从头认识java-6.2 继承(Generalization)(2)