2 條題解
-
1
虽然这道题标签是贪心,但我觉得和贪心没有任何关系我用的是一个模拟的思想,从第一个一直算到最后一个,数和超过了就分段。
反正求的也是段数,别的啥啥都不用考虑( •̀ ω •́ )y附上AC代码:
#include <bits/stdc++.h> using namespace std; queue<int> q;//这是数列的存储容器 int m,n; int main() { cin >> n >> m;//数列个数和和最大值 int k; for(int i = 1;i <= n;i++) { cin >> k;//队列输入不能直接用cin或者scanf q.push(k); } int cnt = 0,sum = 0;//分别是划分段数,和每段的和(主要用来判断是否需要分段) while(q.size() > 0)//开始模拟 { if((m - sum) < q.front())//如果加完之后超过M { sum = 0;//下一段的和归零 cnt++;//段数+1 } else//加上一个数 { sum += q.front(); q.pop(); } } cout << cnt + 1 << endl;//段数 = 分段数 + 1 return 0; }
- 1
資訊
- ID
- 7
- 時間
- 1000ms
- 記憶體
- 512MiB
- 難度
- 7
- 标签
- 遞交數
- 189
- 已通過
- 38
- 上傳者