FZU Problem 2168 防守阵地 I
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相关推荐
- FZU Problem 2238 Daxia Wzc's problem(Lucas定理求组合数)
此文章可以使用目录功能哟↑(点击上方[+]) FZU Problem 2238 Daxia & Wzc's problem Accept: 0 Submit: 0 Time Limit ...
- FZU Problem 2221 RunningMan(思维考查)——第六届福建省大学生程序设计竞赛-重现赛
此文章可以使用目录功能哟↑(点击上方[+]) FZU Problem 2221 RunningMan Accept: 0 Submit: 0 Time Limit: 1000 mSec ...
- 翻翻棋(找规律问题)(FZU Problem 2230)
题目是这样的: FZU Problem 2230 象棋翻翻棋(暗棋)中双方在4*8的格子中交战,有时候最后会只剩下帅和将.根据暗棋的规则,棋子只能上下左右移动,且相同的级别下,主动移动到地方棋子方将吃 ...
- FZU Problem 2240 Daxia Suneast's problem(博弈+[单点更新,区间查询]线段树)
此文章可以使用目录功能哟↑(点击上方[+]) FZU Problem 2240 Daxia & Suneast's problem Accept: 0 Submit: 0 Time L ...
- FZU Problem 2243 Daxia like uber(最短路)
此文章可以使用目录功能哟↑(点击上方[+]) FZU Problem 2243 Daxia like uber Accept: 0 Submit: 0 Time Limit: 1000 mSe ...
- 【计算几何】FZU Problem 2270 Two Triangles
http://acm.fzu.edu.cn/problem.php?pid=2270 [题意] 给定6到10个点,从中选出6个不同的点组成两个三角形,使其中一个三角形可以通过另一个三角形平移和旋转得到 ...
- FZU Problem 2030 括号问题
Problem Description 给出一个字符串,其中包括3种字符: '(', ')', '?'.其中?表示这个字符可以是'('也可以是')'. 现在给出字符串S,你可以在'?'处填写'(' 或 ...
- FZU Problem 2227 邮票
Problem 2227 邮票 Accept: 30 Submit: 68 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem ...
- FZU Problem 1019 猫捉老鼠
Problem 1019 猫捉老鼠 Accept: 1108 Submit: 3613 Time Limit: 1000 mSec Memory Limit : 32768 KB Problem De ...
最新文章
- Linux C编程--string h函数解析
- WPF:仿WIN7窗体打开关闭效果
- 网易云信助春招上“云” ,疫情过后线上招聘或成常态
- 网络的划分及其Linux下关于网络的命令
- HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点
- 如何命令行结束react程序_想要成为前端Star 吗?一首歌时间将React / Vue 应用Docker 化...
- vue 全家桶 - 前端工程化
- 开发小程序遇协同、平台兼容难题,该如何破局?
- 中国城市竞争力历年数据(2005-2009年)
- Jspx.net Framework 6.38发布
- 〖全域运营实战白宝书 - 高转化文案速成篇④〗- 如何撰写摘要型文案?
- 公认最好的鸿蒙系统,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可
!【手机吧】_百度贴吧...
- CAD教程:如何批量生成CAD填充边界?
- Linux用户与权限系统
- arcgis 提取值到点 如果该点的栅格值缺失怎么办?怎么把最近点的值赋给它?
- 论文解读:SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation
- 华为荣耀手机复制卡号,开启NFV功能。说白了就是将原本的卡的信息复制到手机上,以后不用带卡,带手机就行了。
- python opencv报drawContours '(-215) npoints 0'
- Windows10任务栏的声音、网络图标左键无反应,右键可正常打开
- 首款MeeGo系统上网本 华硕Eee PcX101H独家首测(2-3)