FZU2168——防守阵地 I——————【找规律或前缀和】
Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
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
Sample Output
17
解题思路:方法1>通过求解两次前缀和,然后遍历求出最大值
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=;
#define ll long long
ll x[maxn];
ll a[maxn];
ll sum[maxn];
int main(){ int n,m;
while(scanf("%d%d",&n,&m)!=EOF){ for(int i=;i<=n;i++){ scanf("%d",&x[i]);
}
for(int i=n;i>=;i--){ a[n-i+]=x[i]+a[n-i];
}
for(int i=;i<=n;i++){ sum[i]=a[i]+sum[i-];
}
ll ans=;
for(int i=m;i<=n;i++){ ans=max(sum[i]-sum[i-m]-m*a[i-m],ans);
}
printf("%lld\n",ans);
} }
方法2>求一次前缀和,然后求出m个元素的和,找规律发现,a+2b+3c..mx-(a+b+c...+x)+my=b+2c+3d...my。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxn=1000100;
int a[maxn],sum[maxn],sam[maxn];
int main(){ int n,m;
while(scanf("%d%d",&n,&m)!=EOF){ for(int i=1;i<=n;i++){ scanf("%d",&a[i]);
}
for(int i=1;i<=n;i++)
sam[i]=sam[i-1]+a[i];
for(int i=1;i<=n-m+1;i++){ sum[i]=sam[i+m-1]-sam[i-1];
} int ans=0,tmp=0;
for(int i=1;i<=m;i++)
tmp+=a[i]*i; for(int i=2;i<=n-m+1;i++){ ans=max(ans,tmp-sum[i-1]+m*a[i+m-1]);
tmp=tmp-sum[i-1]+m*a[i+m-1];
}
printf("%d\n",ans);
}
return 0;
}
FZU2168——防守阵地 I——————【找规律或前缀和】的更多相关文章
- 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)
题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...
- 【poj 2478】Farey Sequence(数论--欧拉函数 找规律求前缀和)
题意:定义 Fn 序列表示一串 <1 的分数,分数为最简分数,且分母 ≤n .问该序列的个数.(2≤N≤10^6) 解法:先暴力找规律(代码见屏蔽处),发现 Fn 序列的个数就是 Φ(1)~Φ( ...
- 杭电第四场 hdu6336 Problem E. Matrix from Arrays 打表找规律 矩阵前缀和(模板)
Problem E. Matrix from Arrays Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 ...
- Nowcoder 练习赛 17 C 操作数 ( k次前缀和、矩阵快速幂打表找规律、组合数 )
题目链接 题意 : 给定长度为n的数组a,定义一次操作为: 1. 算出长度为n的数组s,使得si= (a[1] + a[2] + ... + a[i]) mod 1,000,000,007: 2. ...
- 随机序列[SHOI2016](找规律+线段树)
传送门 这道题的题意就是给你n个数让你在每个数之间插入+.-.*三种运算符中的一种,然后算出一个答案,再把答案加起来. 这题肯定是不能暴力的(题目都告诉你了由3n-1种结果).我们先从小的情况枚举找一 ...
- CF R 633 div 1 1338 C. Perfect Triples 打表找规律
LINK:Perfect Triples 初看这道题 一脸懵逼.. 完全没有思路 最多就只是发现一点小规律 即. a<b<c. 且b的最大的二进制位一定严格大于a b的最大二进制位一定等于 ...
- hdu 3951 - Coin Game(找规律)
这道题是有规律的博弈题目,,, 所以我们只需要找出规律来就ok了 牛人用sg函数暴力找规律,菜鸟手工模拟以求规律...[牢骚] if(m>=2) { if(n<=m) {first第一口就 ...
- HDU 5703 Desert 水题 找规律
已知有n个单位的水,问有几种方式把这些水喝完,每天至少喝1个单位的水,而且每天喝的水的单位为整数.看上去挺复杂要跑循环,但其实上,列举几种情况之后就会发现是找规律的题了= =都是2的n-1次方,而且这 ...
- hdu4952 Number Transformation (找规律)
2014多校 第八题 1008 2014 Multi-University Training Contest 8 4952 Number Transformation Number Transform ...
随机推荐
- Mac安装Tomcat
1. 到Tomcat官网下载,如下找tar格式文件: http://ftp.twaren.net/Unix/Web/apache/tomcat/tomcat-8/v8.0.41/bin/apache- ...
- jsonp的使用记录
最近前端的同事说要写一个手机查看的html5页面,需要我提供数据. 这个很ok啊,立马写了个服务返回数据.但是对方调用不了,因为跨域了. 返回错误如下: Failed to load xxxxxx: ...
- Inno Setup卸载时注销bho
Inno setup是一个制作安装包的免费工具,比如你用Qt开发完成一款软件,拿Inno setup打个安装包甩给客户安装就好了. 但是bho插件在注册后,万一用户卸载软件时,bho插件还是躺在管理加 ...
- owin Oauth
原文:http://www.cnblogs.com/richieyang/p/4918819.html 一.什么是OAuth OAuth是一个关于授权(Authorization)的开放网络标准,目前 ...
- 小修改,让mvc的验证锦上添点花(1)
首先,mvc的客户端验证用的是jquery.validate.js, jquery.validate本身已经提供了很好的扩展功能,通过简单点配置就可以做得更好看些. 而Microsoft通过jquer ...
- vector妙用轻松水过平衡树???
极短代码预警 今天听身边的神仙说,可以用vector来写平衡树,代码极短. 然后去网上搜了一下,看到了attack dalao的这篇文章. 蒟蒻表示ssfd 赶紧膜拜了一波,并发表了一篇博客表示纪念. ...
- AutoCAD.Net圆弧半径标注延长线
#region 注册RegApp public static void CheckRegApp(string regapptablename) { Database db = HostApplicat ...
- [Objective-C语言教程]数据类型(5)
在Objective-C编程语言中,数据类型是指用于声明不同类型的变量或函数的扩展系统. 变量的类型决定了它在存储中占用的空间大小以及如何解释存储的位模式. Objective-C中的类型可分为以下几 ...
- 1.Java Spring MVC入门 安装
Spring 下载地址: 4.3.6.RELEASE/ 25-Jan-2017 14:05 - http://repo.spring.io/release/org/springframework/sp ...
- java处理excel-xlsx格式大文件的解决方案
1.第一次读取7M左右的ecxel文件,使用poi 库实现,参考了下面的博文. http://www.cnblogs.com/chenfool/p/3632642.html 使用上面的方法在 下面Wo ...