LA2678 Subsequence 时间优化
2016-08-26 19:52
316 查看
这道题目博主不想多说什么了,大家可以明白这是递推关系的,重要的剪枝就只有
其他的都应该可以看懂吧,博主找了很久的错误,后来才发现是
的while循环里面的sum[i]打成了sum[i - 1],不要像博主一样犯低级错误哦!
废话不多说,直接上代码。
if(sum[i - 1] > sum[j] - m) continue;
其他的都应该可以看懂吧,博主找了很久的错误,后来才发现是
if(sum[i - 1] > sum[j] - m) continue;
while(sum[i] <= sum[j] - m)
++i;
的while循环里面的sum[i]打成了sum[i - 1],不要像博主一样犯低级错误哦!
废话不多说,直接上代码。
/*************************************************************************
> File Name: LA\LA_2678.cpp
> Author: ljf_cnyali
> Mail: 2724424647@qq.com
> Last modifiedz: 2016-08-26 19:36
> Description: This is a large group of God's program information.
************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<ctime>
#include<algorithm>
#include<queue>
#include<map>
#include<set>
#include<ctime>
using namespace std;
#define REP(i, a, b) for(int i = (a), _end_ = (b);i <= _end_; ++i)
const int maxn = 101000;
int sum[maxn];
int main() {
int n, m;
while(scanf("%d%d", &n, &m) != EOF) {
int k;
memset(sum, 0, sizeof(sum));
REP(i, 1, n) {
scanf("%d", &k);
sum[i] = sum[i - 1] + k;
}
int ans = n + 1;
int i = 1;
REP(j, 1, n) {
if(sum[i - 1] > sum[j] - m) continue;
while(sum[i] <= sum[j] - m)
++i;
ans = min(ans, j - i + 1);
}
printf("%d\n", ans == n + 1 ? 0 : ans);
}
return 0;
}
相关文章推荐
- LA2678 Subsequence 时间优化
- 优化Oracle停机时间及数据库恢复
- 优化Oracle停机时间及数据库恢复
- 又是一个熬夜~今晚将大部分时间花在了优化tomcat启动速度上~~
- ASP.NET常用的26个优化性能方法开发者在线 Builder.com.cn 更新时间:2008-07-22
- 继续优化,使用AC算法,时间控制在1秒内
- 重写PageStatePersister属性 自定义压缩方法来减小ViewState大小来优化页面加载时间
- 优化开机过程中的内核空闲时间
- 如何优化你的时间管理
- 数据库优化---空间换时间优化
- 优化时间效率的方法
- Linux启动时间的极限优化
- 优化 DLL 加载时间性能
- 数据库优化---空间换时间优化
- 大整数相乘时间优化
- abap运行时间的优化
- 优化页面加载时间(转贴)
- 优化 DLL 加载时间性能
- Linux启动时间的极限优化
- Linux启动时间的极限优化