#include <iostream>   //nlogn复杂度的写法
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long  ll;
const int INF = 0x3f3f3f3f;
const int moder = 1e9 + 7;
const int maxn = 100005;int a[maxn];int main()
{int t;cin >> t;while(t--){int n,s;scanf("%d%d",&n,&s);for(int i=1;i <= n;i++)scanf("%d",&a[i]);for(int i=2;i <= n;i++){a[i] = a[i] + a[i-1];}if(a[n] < s) printf("0\n");else{int res = n;for(int i=1;a[n]-a[i] >= s;i++){int t = lower_bound(a+1,a+n+1,s+a[i]) - a; // - a 非 - a - 1res = min(res,t-i);}printf("%d\n",res);}}return 0;
}
/*2
10 15
5 1 3 5 10 7 4 9 2 8
5 11
1 2 3 4 5 */

O(n)复杂度的写法

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long  ll;
const int INF = 0x3f3f3f3f;
const int moder = 1e9 + 7;
const int maxn = 100005;int a[maxn];int main()
{int t;cin >> t;while(t--){int n,s;scanf("%d%d",&n,&s);for(int i=1;i <= n;i++)scanf("%d",&a[i]);int i=1,j=1;int sum=0;int res = n+1;for(;;){while(i <= n && sum < s){sum += a[i];i++;}if(sum < s) break;res = min(res,i-j);sum = sum - a[j];j++;}if(res > n) res = 0;printf("%d\n",res);}return 0;
}
/*2
10 15
5 1 3 5 10 7 4 9 2 8
5 11
1 2 3 4 5 */

——

转载于:https://www.cnblogs.com/cunyusup/p/8446801.html

尺取法——POJ3061相关推荐

  1. ACM常用技巧之尺取法--POJ3061/3320/2739/2100

    尺取法:反复推进区间的开头和结尾,来求取满足条件的最小区间的方法  .    <挑战程序设计>P146 POJ3061 Subsequence Time Limit: 1000MS   M ...

  2. poj3061尺取法/前缀和 二分(java)

    今天遇到这题因为以前没见到过,当时就是想着应该有着一个很简单的方法可以过但是奈何就是没思路.后来看了别人思路写了下来.学习了尺取法 poj3061 题目介绍: Description A sequen ...

  3. POJ-2566,HDU-1058,POJ-3320,POJ-3061(尺取法)

    题目链接: Bound Found 思路 用前缀和先统计每个数到第一个数的总和.因为尺取法需要数组有序,所以对前缀和得到的数组排序.设立两个类似指针了l,r,使得l,r不断前进,并记录这之间产生的最小 ...

  4. poj3061 尺取法 挑战程序设计竞赛

    2018-1-6 直接使用尺取法求解即可,需要注意的是:如果说所有数的和都不能满足条件的话,那么就直接输出0即可. 尺取法的头部每次增加1,尾巴每次增加到满足条件即可. #include<ios ...

  5. poj3320 尺取法 挑战程序设计竞赛

    2018-2-7 与poj3061类似,直接使用尺取法即可,这里使用STL里面的map求解更为方便,可以直接得到每个知识点出现的次数,继而便于进行加一减一操作. #include<iostrea ...

  6. NUC1742 Subsequence【前缀和+二分搜索+尺取法】

    Subsequence 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 A sequence of N positive integers (10 &l ...

  7. 尺取法 — 详解 + 例题模板(全)

    尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案.尺取法比直接暴力枚举区间效率高很多 ...

  8. ACM常用的解题技巧:尺取法

    常用的解题技巧:尺取法 尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案.之所以需要 ...

  9. ACM常用的解题技巧:尺取法及相关例题

    常用的解题技巧:尺取法 尺取法:顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案.之所以需要 ...

最新文章

  1. utf8 txt文本转ansi vbs_数据分析之路-文本分析
  2. 在python中如何比较两个float类型的数据是否相等
  3. 女生国庆和程序员相亲,就因为对方一个问题!女生:还要继续吗?
  4. python axis 0_Python之NumPy(axis=0/1/2...)的透彻理解
  5. 自定义控件复选框和单选框的实现
  6. android sdk是灰的,Android Studio 2.3 sdk管理器标签灰显
  7. 图解TCPIP-MIME
  8. mysql 索引失效的情况
  9. samba服务器常用指令
  10. hdu2108 判断是凸多边形还是凹多边形
  11. java实现k线图自动化_Python秒绘交互式股票K线图!这就是Python的优势!
  12. XPS笔记本及各类超薄笔记本的白果网卡安装教程
  13. 工具:dlf 强制删除文件或文件夹
  14. 【SonarQube】安装、配置与使用 01
  15. .nh文件转化为pdf,word
  16. mysql 高并发扣除库存_【并发】mysql处理高并发,防止库存超卖
  17. 电脑软件打开出现闪退的问题
  18. python实现链表(一)
  19. 【平面设计基础】12:ACR调色
  20. Edge无法翻译、插件无法下载(已解决)

热门文章

  1. linux svn 启动两个库,linux – 在一个存储库上运行两个svnserve实例是安全的,还是只有一个?...
  2. JS操作DOM元素属性和方法
  3. 主流报表制作工具之王者争夺战:功能大PK系列之“删除当前行”按钮制作
  4. Android应用底部导航栏(选项卡)实例
  5. BP人工神经网络的介绍与实现
  6. 学习笔记2——对象初始化和面向对象特性
  7. kill无法杀死某个进程
  8. .NET Core微服务之基于Ocelot实现API网关服务(续)
  9. 施耐德电气:2016年数据中心的三大关注领域
  10. 第七章、Linux 文件与目录管理