poj 3061
来源:互联网 发布:新网域名管理密码 编辑:程序博客网 时间:2024/06/06 03:32
二分搜索
//956k, 79ms#include <iostream>#include <algorithm>#include <cmath>using namespace std;const int MAX_N = 100005;int t, n, s;int arr[MAX_N], sum[MAX_N];void solve() { for(int i=0; i<n; i++) sum[i+1] = sum[i] + arr[i]; if(sum[n] < s) { printf("0\n"); return; } int res = n; for(int i=0; sum[i] + s <= sum[n]; i++) { int t = lower_bound(sum+i, sum+n, sum[i]+s) - sum; res = min(res, t-i); } printf("%d\n", res);}int main() { freopen("in.txt", "r", stdin); scanf("%d", &t); while(t--) { scanf("%d%d", &n, &s); for(int i=0; i<n; i++) scanf("%d", &arr[i]) ; solve(); } fclose(stdin); return 0;}
尺选法
//556k, 79ms#include <iostream>using namespace std;const int MAX_N = 100005;int n, s, t;int a[MAX_N];void solve() { int res = n + 1; int i=0, j=0, sum=0; for(;;) { while(j<n && sum<s) sum += a[j++]; if(sum < s) break; res = min(res, j-i); sum -= a[i++]; } if(res > n) res = 0; printf("%d\n", res);}int main() { scanf("%d", &t); while(t--) { scanf("%d%d", &n, &s); for(int i=0; i<n; i++) scanf("%d", &a[i]); solve(); } return 0;}
0 0
- poj 3061
- poj 3061
- poj 3061
- poj-3061
- POJ 3061
- poj 3061
- poj 3061
- POJ----3061
- poj 3061
- 【POJ】3061
- poj 3061
- POJ 3061
- 【poj】 3061
- 尺取法专题 POJ 3061 POJ 3320 POJ 2566
- poj 3061 Subsequence
- poj 3061(高效枚举)
- POJ-3061-Subsequence
- POJ - 3061 Subsequence
- centos6.7源码搭建lamp(mysql)
- Android studio design界面的布局文件无法预览
- 个人学习传智博客新巴巴运动网系列---ssm框架
- 50. Pow(x, n)
- Backbone入门指南(五):Collection (数据模型集合)
- poj 3061
- C#反射操作常用方法
- Android - ScrollView 监听滑动停止,顶部还是底部?
- 常见130个java
- CPU内中断和外中断
- 华山游记
- 微信小程序网络请求的封装与填坑之路
- 洛谷 P1439 排列LCS问题
- 1613-3-傅溥衍 总结《2016年11月15日》【连续四十六天总结】