1 solutions
-
1
说明
这题因为服务器原因,我也没过(Fetched)。但我在洛谷AC立
题意
数列分段使每段和不超过给定值。
死路
不要以为这题放在分治与二分就用二分做。这样想过的乐子举手!
思路
我没有这种惯性
施维,所以就没有这样想过。我一看这题,纯乐子,我数组都没用,直接一个个读入,加入总和去求好了。歹马
我AC后写题解,才写的人机数组代码,代码不那么简洁,但是更好想,不宜错。(注释看正解)
/*#include<iostream> using namespace std; int main(){ int n,m; cin>>n>>m; int sum=0; int now=0; for(int i=0;i<n;i++){ int a; cin>>a; if(now+a>m) now=0,sum++; now+=a; } cout<<sum+1; } */ #include<iostream> using namespace std; int main(){ int n,m; cin>>n>>m; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; int sum=0,now=0; for(int i=0;i<n;i++){ if(now+a[i]>m) sum++,now=0; now+=a[i]; } cout<<sum+1; }
代码
#include<iostream> using namespace std; int main(){ int n,m; cin>>n>>m; int sum=0;//段数和 int now=0;//现阶段和 for(int i=0;i<n;i++){ int a; cin>>a; if(now+a>m)//如果溢出 now=0,sum++;//分段,阶段和重置 now+=a; } cout<<sum+1; }
提示
因为计算时最后一段不会被分段,所以结果要加一(因为最后一段结束不会因为if语句sum++,很好想)。
- 1
Information
- ID
- 78
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 6
- Tags
- # Submissions
- 21
- Accepted
- 11
- Uploaded By