一直在40分和60分徘徊,,求大佬帮

P1181 数列分段 Section I

``` 您#include<iostream>前加\干嘛.. ```
by Custlo0793 @ 2020-03-27 16:47:42


@[乔奈](/user/325959) 不要 ``` int a[n+1]; ``` 这样定义数组
by tangrunxi @ 2020-03-27 16:48:27


@[Knuth_Morris_Pratt](/user/307535) 这是后来加的 要不然include会变好大
by 乔奈 @ 2020-03-27 17:16:53


@[tangrunxi](/user/231147) 请问是应该定义一个比题目要求范围大的数组吗?
by 乔奈 @ 2020-03-27 17:17:53


我这个程序跟你的很像,但是AC了 ```cpp #include<cstdio> using namespace std; int a[100001]; int main() { int n,m,ans=0; scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i-1]+a[i]>m) ans++; else a[i]+=a[i-1]; if(i==n) ans++; } printf("%d",ans); return 0; } ```
by CCCloud @ 2020-03-27 17:17:59


@[乔奈](/user/325959) 定义一个全局数组,范围要比数据范围大,比如数据范围是0<=n<=10000,你就在main函数外定义一个a[10001]
by CCCloud @ 2020-03-27 17:22:24


@[乔奈](/user/325959) 定义了全局数组就可以过了 ```cpp #include<stdio.h> int a[1000001]; int main() { int n,m,i,ans=1; scanf("%d%d",&n,&m); for(i=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i]+a[i-1]>m) ans++; else a[i]+=a[i-1]; } printf("%d",ans); } ```
by CCCloud @ 2020-03-27 17:24:19


@[宿宇·弦歌](/user/249683) 这样定义就过了吖,谢谢谢谢!
by 乔奈 @ 2020-03-27 17:26:56


|