F - Ilya Muromets-
2015-07-25 21:14
204 查看
一开始算法就错了
错误地认为是 先找到一个max连续k区间 再找一个即可。。。。(这也太简单了吧)
实际是 要找到两个连续k区间的和最大。。两者是不同的。。。。让我发现区别的样例是这个
10 4
38 11 48 90 87 4 90 82 9 85
答案应该是 除去38 和4 之外的数只和
错误地认为是 先找到一个max连续k区间 再找一个即可。。。。(这也太简单了吧)
实际是 要找到两个连续k区间的和最大。。两者是不同的。。。。让我发现区别的样例是这个
10 4
38 11 48 90 87 4 90 82 9 85
答案应该是 除去38 和4 之外的数只和
#include <cstdio> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <iostream> #include <queue> #include <map> #include <list> #include <fstream> #include <vector> using namespace std; __int64 tm[2*100000+5]; __int64 big(__int64 a,__int64 b) { if (a<b) return b; return a; } int main() { __int64 n,k; scanf("%I64d %I64d",&n,&k); __int64 tmp; tm[0]=0; __int64 i; for (i=1;i<=n;i++) { scanf("%I64d",&tmp); tm[i]+=tm[i-1]+tmp; } if (n<=2*k) { printf("%I64d\n",tm ); return 0; } __int64 ans=tm[2*k]; __int64 max=tm[k]; for (i=k+1;i<=n-k;i++) { max=big(max,tm[i]-tm[i-k]); ans=big(ans,tm[i+k]-tm[i]+max); } printf("%I64d\n",ans); return 0; }
相关文章推荐
- Web前端从入门到精通-8 css简介——清除浮动
- css图片实现水平、垂直居中
- 数字图像处理入门
- 字符编码的总体认识及若干问题
- (面试题)删除在另一个字符串中出现的字符
- Hive desc
- JVM类加载器(双亲委托模型)
- URL中的保留和不安全字符
- 做一个优雅的程序员
- redmine和svn server的部署
- N!
- JAVA笔记之环境配置
- Delphi7学习第二天
- view的触摸事件OnTouch与监听
- LeetCode_1 TwoSum
- ADT、SDK、eclipse、集成开发工具
- setObject设置boolean的类型为啥不行?
- 【MySQL案件】ERROR 1418
- 二叉树的非递归遍历
- 2015 Multi-University Training Contest 2 hdu 5308 I Wanna Become A 24-Point Master