http://acm.fzu.edu.cn/problem.php?pid=2168

题目大意:

给定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 = 13

1 * 1 + 3 * 2 + 1 * 3= 10

3 * 1 + 1 * 2 + 4 * 3 = 17

设sum[i]为到i的m个数的和,dp[i]为以i结束的m个数的乘积值。

则相邻两组间有关系,dp[i] =dp[i-1]-sum[i-1] + m*a[i] ;

例如   第第二组的那个 dp[4 ]= dp[3]- sum[3] + 3 * 1 = 13-6+3*1=10

#include<cstdio>
const int MAXN=1000000+10;
int sum[MAXN],dp[MAXN],a[MAXN];
int main()
{int n,m;while(~scanf("%d%d",&n,&m)){sum[0]=0;dp[m]=0;for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=m;i++){sum[i]=sum[i-1]+a[i];dp[m]+=a[i]*i;} int ans=dp[m];for(int i=m+1;i<=n;i++){ dp[i]=dp[i-1]-sum[i-1];            dp[i]=dp[i]+m*a[i];       sum[i]=sum[i-1]+a[i]-a[i-m];  if(ans<dp[i])ans=dp[i];}printf("%d\n",ans);}return 0;
}

转载于:https://www.cnblogs.com/murmured/p/5004033.html

FZU Problem 2168 防守阵地 I相关推荐

  1. FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2238 Daxia & Wzc's problem Accept: 0    Submit: 0 Time Limit ...

  2. FZU Problem 2221 RunningMan(思维考查)——第六届福建省大学生程序设计竞赛-重现赛

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2221 RunningMan Accept: 0    Submit: 0 Time Limit: 1000 mSec     ...

  3. 翻翻棋(找规律问题)(FZU Problem 2230)

    题目是这样的: FZU Problem 2230 象棋翻翻棋(暗棋)中双方在4*8的格子中交战,有时候最后会只剩下帅和将.根据暗棋的规则,棋子只能上下左右移动,且相同的级别下,主动移动到地方棋子方将吃 ...

  4. FZU Problem 2240 Daxia Suneast's problem(博弈+[单点更新,区间查询]线段树)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2240 Daxia & Suneast's problem Accept: 0    Submit: 0 Time L ...

  5. FZU Problem 2243 Daxia like uber(最短路)

    此文章可以使用目录功能哟↑(点击上方[+])  FZU Problem 2243 Daxia like uber Accept: 0    Submit: 0 Time Limit: 1000 mSe ...

  6. 【计算几何】FZU Problem 2270 Two Triangles

    http://acm.fzu.edu.cn/problem.php?pid=2270 [题意] 给定6到10个点,从中选出6个不同的点组成两个三角形,使其中一个三角形可以通过另一个三角形平移和旋转得到 ...

  7. FZU Problem 2030 括号问题

    Problem Description 给出一个字符串,其中包括3种字符: '(', ')', '?'.其中?表示这个字符可以是'('也可以是')'. 现在给出字符串S,你可以在'?'处填写'(' 或 ...

  8. FZU Problem 2227 邮票

     Problem 2227 邮票 Accept: 30    Submit: 68 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem ...

  9. FZU Problem 1019 猫捉老鼠

    Problem 1019 猫捉老鼠 Accept: 1108 Submit: 3613 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem De ...

最新文章

  1. Linux C编程--string h函数解析
  2. WPF:仿WIN7窗体打开关闭效果
  3. 网易云信助春招上“云” ,疫情过后线上招聘或成常态
  4. 网络的划分及其Linux下关于网络的命令
  5. HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点
  6. 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
  7. vue 全家桶 - 前端工程化
  8. 开发小程序遇协同、平台兼容难题,该如何破局?
  9. 中国城市竞争力历年数据(2005-2009年)
  10. Jspx.net Framework 6.38发布
  11. 〖全域运营实战白宝书 - 高转化文案速成篇④〗- 如何撰写摘要型文案?
  12. 公认最好的鸿蒙系统,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  13. CAD教程:如何批量生成CAD填充边界?
  14. Linux用户与权限系统
  15. arcgis 提取值到点 如果该点的栅格值缺失怎么办?怎么把最近点的值赋给它?
  16. 论文解读:SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation
  17. 华为荣耀手机复制卡号,开启NFV功能。说白了就是将原本的卡的信息复制到手机上,以后不用带卡,带手机就行了。
  18. python opencv报drawContours '(-215) npoints 0'
  19. Windows10任务栏的声音、网络图标左键无反应,右键可正常打开
  20. 首款MeeGo系统上网本 华硕Eee PcX101H独家首测(2-3)

热门文章

  1. SQL注入如何进行攻击
  2. 前端 获取当前页面服务器ip_fiddler获取响应时间以及服务器IP
  3. Apache Dubbo集群容错
  4. Oracle学习笔记:手工注册oracle的oledb驱动
  5. spring live上有个入门的整合SSH的例子
  6. 《高级着色语言HLSL入门》系列文章
  7. Qtcreator配置Ros环境
  8. SpringBoot-JPA删除不成功,只执行了查询语句
  9. Python 之 函数基础
  10. hive表列字段显示