社区讨论
20pts 为什么逻辑不对
P1181数列分段 Section I参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mez98wr3
- 此快照首次捕获于
- 2025/08/31 13:33 6 个月前
- 此快照最后确认于
- 2025/11/03 23:39 4 个月前
CPP
//原题 : 洛谷 P1181 数列分段
#include <iostream>
#include <cstring>
using namespace std;
const int MaxSize = 100000;
int main()
{
int n,m,a[100000];
bool visited[100000];
memset(visited,0,sizeof(visited));
cin >> n >> m;
for (int i=0;i<n;i++)
cin >> a[i];
unsigned long long ans = 0;
for (int i=0;i<n;i++)
{
if (!visited[i]) //若这个下标没有被加过
{
visited[i] = 1; //标记已经被加过了
int sum = a[i];//初始化本段的数字之和为第一个数(a[i])
int j = i; //因为后面是 ++j 所以初始化为i本身
while(sum < m) //若本段和不大于 m
{
visited[++j] = true; //扩展本段 并且标记
sum += a[j]; //和累加
}
ans++; //执行到这里 说明上面的while循环已经不满足条件,分段数要加一组
}
}
cout << ans;
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...