POJ-3061Subsequence(尺取法)
来源:互联网 发布:ubuntu和linux的区别 编辑:程序博客网 时间:2024/06/05 23:39
题意:给你一个长度为n的序列,然后求连续序列中sum不小于s的最短长度。
觉得不精练。
第一种方法。前缀和。然后二分枚举求得长度复杂度为nlogn
const int maxn=100100;int a[maxn];ll sum[maxn];int main(){ int T; cin>>T; while(T--) { int N,S; cin>>N>>S; clr(sum); for(int i=1;i<=N;i++) { cin>>a[i]; sum[i]=sum[i-1]+a[i]; } if(sum[N]<S) cout<<0<<endl; else { int len=maxn; for(int i=0;sum[i]+S<=sum[N];i++) { int res=lower_bound(sum+i,sum+N,sum[i]+S)-sum; len=min(len,res-i); } cout<<len<<endl; } } return 0;}
第二种方法,尺取法。
自己先用队列模拟写了一个const int maxn=100100;long long sum[maxn];long long num[maxn];int main(){ int T; scanf("%d",&T); while(T--) { clr(sum); int N,S; scanf("%d%d",&N,&S); for(int i=1;i<=N;i++) scanf("%lld",&num[i]); int cnt=1; ll sum=0; int len=INF; queue<ll> q; while(cnt<=N) { while(sum<S) { q.push(num[cnt]); sum+=num[cnt]; cnt++; //cout<<sum<<endl; if(cnt>N) break; } if(sum<S) break; int L=q.size(); len=min(len,L); while(sum>=S&&!q.empty()) { sum-=q.front(); q.pop(); if(sum>=S) { int L=q.size(); len=min(len,L); } } } cout<<(len==1e9?0:len)<<endl; } return 0;}
觉得不精练。
const int maxn=100100;int a[maxn];int main(){ int T,N,S; cin>>T; while(T--) { cin>>N>>S; for(int i=1;i<=N;i++) cin>>a[i]; int res=N+1; int s=1,t=1,sum=0; for(;;) { while(s<=N&&sum<S) sum+=a[s++]; if(sum<S) break; res=min(res,s-t); sum-=a[t++]; } cout<<(res==N+1?0:res)<<endl; } return 0;}
0 0
- POJ 3061 Subsequence (尺取法)
- [ACM] POJ 3061 Subsequence (尺取法)
- poj 3061 Subsequence(尺取法)
- POJ 3061 Subsequence(二分/尺取法)
- POJ-3061Subsequence(尺取法)
- POJ 3061 Subsequence(尺取法)
- POJ 3061 Subsequence(尺取法)
- POJ 3061 Subsequence(尺取法)
- POJ:3061 Subsequence(尺取法)
- POJ 3061 Subsequence(尺取法)
- POJ 3061 Subsequence (尺取法)
- POJ 3061 Subsequence(尺取法)
- Subsequence(POJ No.3061)(尺取法)
- poj 3061--Subsequence(尺取法)
- poj 3061 Subsequence(尺取法)
- POJ 3061 Subsequence ( 尺取法 )
- POJ 3061 Subsequence(尺取法)
- Poj 3061 Subsequence【尺取法】
- POJ-3320Jessica's Reading Problem(尺取法)
- Tomcat整合配置Solr4.x
- 面向对象<1>__笔记(11)
- (java并发)CAS操作原理以及Atomic的原理
- Android学习:Android Service实例以及生命周期分析
- POJ-3061Subsequence(尺取法)
- eclipse project explorer中的工程都不显示的解决办法
- windows下远程桌面设置
- UIView属性
- 安装Linux后(用做开发环境)的配置(Lnmp和Android)
- C# 的泛型详解
- POJ-2100Graveyard Design(尺取法)
- zzulioj--1790-- 弹珠游戏(数学水题!)
- 【MySQL入门篇】1.MySQL安装与配置--慕课网【学习总结】