UvaLive LA2678 Subsequence
2014-02-16 10:54
411 查看
寻找一个序列中和不小于S的最短子序列,n的时间预处理出前缀和,然后枚举末位置二分初始位置nlogn搞定
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 100001; int A[maxn],B[maxn]; int main() { int n,S; while(~scanf("%d%d",&n,&S)) { int ans = 0; for(int i = 1;i <= n;i++) { scanf("%d",&A[i]); B[i] = B[i - 1] + A[i]; int str = 1,end = i; while(str < end) { int mid = str + (end - str + 1) / 2; if(B[i] - B[mid - 1] < S) { end = mid - 1; } else { str = mid; } } if(B[i] - B[str - 1] >= S) { if(ans == 0) ans = i - str + 1; else ans = min(ans,i - str + 1); } } printf("%d\n",ans); } return 0; }
相关文章推荐
- UvaLive LA2678 Subsequence
- Codeforces 346B - Lucky Common Subsequence kmpDP
- Longest Continuous Increasing Subsequence
- The Heaviest Non-decreasing Subsequence Problem
- 计蒜客 2017icpc南宁赛区 The Heaviest Non-decreasing Subsequence Problem 最长不递减子序列
- [LeetCode] Longest Continuous Increasing Subsequence 最长连续递增序列
- pat a 1007 Maximum Subsequence Sum
- POJ 3061 Subsequence
- 算法第八周Number of Longest Increasing Subsequence[medium]
- N - Longest Ordered Subsequence 【LCS】
- poj2533 Longest Ordered Subsequence(最长上升子序列个数)
- 2-4子序列的和(subsequence)
- 1007. Maximum Subsequence Sum (25)(java版)
- 674. Longest Continuous Increasing Subsequence
- leetcode 521. Longest Uncommon Subsequence I 最初非公共子序列 + 直接比较即可
- 300. Longest Increasing Subsequence
- [DP] Leetcode 300 Longest Increasing Subsequence
- 376. Wiggle Subsequence(贪心)
- LCS(Longest Common Subsequence)--最长公共子序列
- leetcode_376. Wiggle Subsequence