1 //第一个答案2(5+10) 第二个 3(3+4+5)
2 //令 sum[i]=a0+a1+...+ai, as+...+a(t-1)>=S
3 //有 as+a(s+1)+...+a(t-1)=sum[t]-sum[s]
4 //则 ai+...+an=sum[n]-sum[i]>=S
5 //所以问题转化成S+sum[i]在sum找
6 #include<cstdio>
7 #include<iostream>
8 #include<algorithm>
9 #include<queue>
10 #include<map>
11 #include<vector>
12 #include<set>
13 #include<string>
14 #include<cmath>
15 #include<cstring>
16 using namespace std;
17 int a[100010];
18 int s;
19 int main()
20 {
21 int sum[100010];
22 int cnt;
23 scanf("%d",&cnt);
24 while(cnt--)
25 {
26 int n;
27 scanf("%d%d",&n,&s);
28 for(int i=0;i<n;i++)
29 {
30 scanf("%d",&a[i]);
31 }
32 for(int i=0;i<n;i++)
33 {
34 sum[i+1]=sum[i]+a[i];//0-下标到i的和
35 }
36
37 if(sum[n]<s)
38 {
39 printf("0\n");
40 }
41 else
42 {
43 int res=n;
44 for(int i=0;sum[i]+s<=sum[n];i++)
45 {
46 int t=lower_bound(sum+i,sum+n,sum[i]+s)-sum;//因为从sum里找所以是sum[i]+s
47 //sum+i可以不加, as+...+at序列就是答案,所以下面是t-i
48 res=min(res,t-i);
49 }
50 printf("%d\n",res);
51 }
52 }
53 return 0;
54 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2019-01-21 UVA 11809 Floating-Point Number