洛谷 P1181 数列分段Section I【贪心/最少分成多少合法的连续若干段】
题目描述
对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求。
输入输出格式
输入格式:
输入文件divide_a.in的第1行包含两个正整数N,M,表示了数列A[i]的长度与每段和的最大值,第2行包含N个空格隔开的非负整数A[i],如题目所述。
输出格式:
输出文件divide_a.out仅包含一个正整数,输出最少划分的段数。
输入输出样例
说明
对于20%的数据,有N≤10;
对于40%的数据,有N≤1000;
对于100%的数据,有N≤100000,M≤10^9,M大于所有数的最小值,A[i]之和不超过109。
将数列如下划分:
[4][2 4][5 1]
第一段和为4,第2段和为6,第3段和为6均满足和不超过M=6,并可以证明3是最少划分的段数。
【代码】:
#include<iostream>
#include<vector>
#include<queue>
using namespace std; #define LL long long
using namespace std;
const int N = +;
int n,m,now,tmp=;
int ans=;// 就是全是0也至少有一段
int main()
{
ios::sync_with_stdio(false); cin>>n>>m;
for(int i=;i<n;i++)
{
cin>>now;//其实一边读一边看(在线)要省空间点,因为题目要求的是连续
if((tmp+=now)>m) //不合法
{
tmp=; //重新开始
ans++; //段数+1
tmp+=now;//从0开始算temp的值
}
}
cout<<ans<<endl;
return ;
}
分析在代码
#include<iostream>
using namespace std;
int a,n,m,sum,ans=;//因为一开始就是第一个序列,所以ans要赋值为1
int main()
{
cin>>n>>m;
for(int i=;i<=n;i++)
{
cin>>a;//输入
if(sum+a>m)
{
ans++;
sum=a;//如果容不下了,序列数加一,累加器从下一个序列的第一个数开始
}
else
sum+=a;//容得下累加器的值就加上a
//上面用的if else就是贪心
}
cout<<ans;
return ;
}
分析在代码2
洛谷 P1181 数列分段Section I【贪心/最少分成多少合法的连续若干段】的更多相关文章
- 洛谷 P1181 数列分段Section I(水题日常)
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 输入文件divide_ ...
- 洛谷 P1181数列分段SectionI 【贪心】
题目描述 对于给定的一个长度为NN的正整数数列A_iAi,现要将其分成连续的若干段,并且每段和不超过MM(可以等于MM),问最少能将其分成多少段使得满足要求. 输入输出格式 输入格式: 第1行包含两 ...
- 洛谷p1181 数列分段section I
#include<iostream> #include<vector> #include<algorithm> using namespace std; int M ...
- 洛谷 P1181数列分段Section I
星爆气流(弃疗)斩! ——<刀剑神域> 题目:https://www.luogu.org/proble ...
- 洛谷 P1182 数列分段 Section II
洛谷 P1182 数列分段 Section II 洛谷传送门 题目描述 对于给定的一个长度为N的正整数数列A-iA−i,现要将其分成M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. ...
- 洛谷 P1182 数列分段Section II Label:贪心
题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列4 2 4 5 1要分成3段 将其如下分段: [4 ...
- 洛谷 P1182 数列分段`Section II`【二分答案】
[代码]: #include<bits/stdc++.h> const double eps = 1e-8; const int maxn = 1e6+5; #define inf 0x3 ...
- 洛谷 1182 数列分段Section II
[题解] 最大值最小化,那么一般要联想到二分.二分一个最大值,然后check一下能否分成小于等于m段即可. #include<cstdio> #include<algorithm&g ...
- luogu P1181 数列分段Section I x
P1181 数列分段Section I 题目描述 对于给定的一个长度为N的正整数数列A[i],现要将其分成连续的若干段,并且每段和不超过M(可以等于M),问最少能将其分成多少段使得满足要求. 输入输出 ...
随机推荐
- DOS程序员手册(一)
当今MS-Windows横扫大江南北,让我们这就来研究一下它的祖宗——MS-DOS! 这本书很难得,希望读者好好学习! DOS程序员手册(一) DOS教程 (以下内容全部为原作者的阐述,照样保留) 这 ...
- 【Noise and Probabilistic Target】林轩田机器学习基石
http://beader.me/mlnotebook/section2/noise-and-error.html 上面这个日志总结的已经很好了.这一章的内容,在后面具体的算法中cost functi ...
- jQuery easyuI datagrid 多行编辑
在easyUI 动态绑定部分数据后,需要有部分列可以修改,研究了一天终于搞定.这是小弟的做法,望各位有好招的大侠指点. 1.添加jQuery 和jQuery easyuI的引用. 2.添加id为tt的 ...
- github+git提交 基础用法
git版本管理基本用法: 安装就不用说了 随便一搜 安装完 妥妥的.下边说的是在github从新建一个项目开始: 1.首先打开自己的github地址,如下图所示 点加号 选 New repositor ...
- Python全栈工程师(异常(基础))
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想为了信仰 Python人工智能从入门到精通 补充:包的相对导入 只对后两种导入方式有用 ...
- fragment中的WebView返回上一页
public final class Text1Fm extends Fragment { static WebView mWeb; private View mContentView; privat ...
- [bzoj] 1085 骑士精神 || ID-DFS
原题 找到最少的步数成为目标状态. IDDFS(限制层数的dfs)即可 #include<cstdio> #include<algorithm> using namespace ...
- java实现短连接
现在比较流行短连接,例如新浪微博,腾讯等等公司都开始使用短连接. ① 将长网址用md5算法生成32位签名串,分为4段,,每段8个字符: ② 对这4段循环处理,取每段的8个字符, 将他看成16进制字符串 ...
- Topcoder SRM 602 div1题解
打卡- Easy(250pts): 题目大意:rating2200及以上和2200以下的颜色是不一样的(我就是属于那个颜色比较菜的),有个人初始rating为X,然后每一场比赛他的rating如果增加 ...
- Gradle for Android(一)
Gradle是一种基于Groovy的动态DSL,而Groovy语言是一种基于jvm的动态语言.这里只分享实际开发中会用到的场景,您不需要去学习Groovy语言,知道Java的您是很容易阅读Groovy ...