LA 2678(p48)----Subsequence
来源:互联网 发布:淘宝售后工作怎么样 编辑:程序博客网 时间:2024/05/18 10:51
#include<bits/stdc++.h>#define debuusing namespace std;const int INF=9999999;const int maxn=1e5+50;int n,s;int a[maxn],sum[maxn];void solve(){ int ans=INF; for(int j=0; j<n; j++) { int i=lower_bound(sum,sum+j,sum[j]-s)-sum; if(i>0) ans=min(ans,j-i+1); } if(ans!=INF) printf("%d\n",ans); else printf("0\n");}int main(){#ifdef debug freopen("in.in","r",stdin);#endif // debug while(scanf("%d%d",&n,&s)!=EOF) { for(int i=0; i<n; i++) scanf("%d",&a[i]); sum[0]=a[0]; for(int i=1; i<n; i++) sum[i]=sum[i-1]+a[i]; solve(); } return 0;}
题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=679
题解:
(1)预处理前缀和sum[i],答案即为min{j-i+1}(sum[j]-sum[i-1]>=s)。由于sum[]递增且i应尽量大(使得长度最小)所以找一个让sum[i-1]<=sum[j]-s最大的i,即sum[i]>=sum[j]-s,不断更新答案即可。
(2)尺取法:右端点不断向右扩展,当sum大于等于s时,左端点向右扩展直到sum<s,然后继续扩展右端点,重复直到读完整个序列,期间更新答案即可。
#include<bits/stdc++.h>#define debuusing namespace std;const int INF=9999999;const int maxn=1e5+50;int n,s;int a[maxn];int main(){#ifdef debug freopen("in.in","r",stdin);#endif // debug while(scanf("%d%d",&n,&s)!=EOF) { for(int i=0; i<n; i++) scanf("%d",&a[i]); int i=0,ans=INF,sum=0; for(int j=0; j<n; j++) { sum+=a[j]; while(sum>=s) { sum-=a[i]; i++; ans=min(ans,j-i+2); } // cout<<i<<endl; } if(ans!=INF) printf("%d\n",ans); else printf("0\n"); // cout<<"*************"<<endl; } return 0;}
0 0
- LA 2678(p48)----Subsequence
- LA 2678 Subsequence
- LA 2678 – Subsequence
- LA 2678 Subsequence
- LA 2678 Subsequence .
- LA 2678 UVA 1121 - Subsequence
- LA 2678 Subsequence(尺取法)
- SEERC 2006 Subsequence, 高效算法设计 ,LA 2678
- UVaLive 2678(LA)Subsequence SEERC 2006 题解
- UVA 401(p48)----Palindromes
- 2678 - Subsequence
- 2678 - Subsequence
- 紫书 p48 例题 回文词
- la la la, la la la
- LA 2678 Meteor (区间覆盖)
- LA --- 2678 子序列 【思维】
- UVA live 2678 - Subsequence
- icpcarchive 2678 - Subsequence
- 几种可以实现在不同设备动态正常显示表格数据的方式
- const int *a and int *const a and const int * const a
- 获取屏幕截图--笔记
- (译)Python关键字yield的解释(stackoverflow)
- Android 自定义View制作方法
- LA 2678(p48)----Subsequence
- 欢迎使用CSDN-markdown编辑器
- hdoj 1058 Humble Numbers 【思维】
- iOS生成pem证书(简易版)
- 用magent 为memcached集群
- 删除字符串中的子串 PAT
- gulp 疑似缓存的问题,watch更新不及时
- CSRF常见攻防姿势总结
- history