T1:P1182T1:P1182T1:P1182 数列分段SectionIISectionIISection II

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P1182


大意

有n个数,要求分成m段使每段的和之中的最大值最小。


解题思路

二分最大值,然后枚举过去看至少分成几段。然后利用答案二分。


code

#include<cstdio>
using namespace std;
int n,m,a[100001],l,r,mid;
bool check(int x)//判断答案
{int sum=0,k=0;for(int i=1;i<=n;i++)if (a[i]>x) return false;else if (sum+a[i]>x) k++,sum=a[i];else sum+=a[i];return k<m;
}
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++)scanf("%d",&a[i]),r+=a[i];l=1;while (l<=r)//二分答案{mid=(l+r)>>1;if(check(mid)) r=mid-1;else l=mid+1;}printf("%d",l);
}

T2:P1873T2:P1873T2:P1873 砍树

评测记录:https://www.luogu.org/problemnew/show/P1873


正题

有n棵,需要m个木材,每个木头有不同的高度,选择一个高度,可以获得m个木材时高度最高。


解题思路

直接二分高度。


code

#include<cstdio>
#include<iostream>
using namespace std;
int n,m,lef,righ,mid,a[1000001];
long long countt;
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++) {scanf("%d",&a[i]); righ=max(a[i],righ);}lef=0;while (lef<righ){countt=0;mid=(lef+righ+1)/2;//二分答案for (int i=1;i<=n;i++) countt+=max(a[i]-mid,0);//统计答案if (countt<m) righ=mid-1;else lef=mid;}printf("%d",lef);
}

二分答案二题-P1182数列分段II,P1873砍树相关推荐

  1. 洛谷P1182 数列分段Section II 二分答案

    洛谷P1182 数列分段Section II 二分答案 题意:将 n 个 数 分为 m段 求一种方案,使这m段中最大的和 最小 额..可能有点拗口,其实就是说每一种方案,都有对应的 每段和的最大值, ...

  2. 洛谷 P1873 砍树 (二分答案)

    P1873 砍树 题意 给定n个树木,指定一个伐木高度h,h高度以上的部分皆可得到,求想要得到总共数量为m的木头,h最高是多少. 1<=N<=1000000,1<=M<=200 ...

  3. P1873 砍树(简单二分)

    P1873 砍树 题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机 ...

  4. 洛谷P1873 砍树(二分)

    P1873 砍树 题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机 ...

  5. P1873 砍树(二分答案)

    题目 链接 题目描述 伐木工人米尔科需要砍倒M米长的木材.这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林.不过,米尔科只被允许砍倒单行树木. 米尔科的伐木机工作过 ...

  6. 洛谷P1182 数列分段 Section II(二分+贪心)

    题目描述 对于给定的一个长度为N的正整数数列 A1∼NA _{1∼N}A1∼N​,现要将其分成 M(M≤N)M(M≤N)M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一 ...

  7. 洛谷P1182 数列分段`Section II`

    . . . . . 分析 首先,分析题目,求最大值的最小化,直接联想到二分 然而关键是要怎么去高效的check 我们考虑一个贪心的思路,能加的就加上,不能则新开一段,所以对于二分的值x,我们从数列a从 ...

  8. 数列分段II(信息学奥赛一本通-T1436)

    [题目描述] 对于给定的一个长度为N的正整数数列A[i],现要将其分成M(M≤N)段,并要求每段连续,且每段和的最大值最小. 关于最大值最小: 例如一数列4 2 4 5 1要分成3段 将其如下分段: ...

  9. Megacity(二分答案简单题之杨氏代码)

    题目描述: The administration of the Tomsk Region firmly believes that it's time to become a megacity (th ...

最新文章

  1. array,arraylist,string的总结
  2. 【算法竞赛学习】二手车交易价格预测-Task5模型融合
  3. 给div拼接html 拼接字符串
  4. “高仿版拼多多”宣告破产!曾一年收割1.3亿用户,如今自救失败负债16亿
  5. 折线 没有显示_动画折线图,你还可以试试这个图表
  6. 13章 购买服务器和域名绑定
  7. Redis之jedis连接池
  8. Swagger2 最全注解说明(转载)
  9. 《CCNA学习指南:数据中心(640-911)》——1.6 考试要点
  10. Java 中初始化 List 集合的 7 种方式
  11. symbian获取中文的拼音
  12. python循环遍历文件夹_如何用Python实现目录遍历
  13. 阿里云宽带是怎么按流量进行计费的?
  14. vscode顶部菜单栏不见了,怎么办?
  15. 打开计算机文档左边,打开.chm的文件后,看不到左边的目录,该怎样解决?
  16. 【绘图】python 配色表
  17. Android实现可编辑下拉菜单
  18. 杂牌机搞机之旅(一)——获得root权限(刷入magisk)
  19. php sha1摘要算法,js 加密和摘要算法(base64、md5、sha1、rsa)
  20. 【SVG.js】简介

热门文章

  1. php分目录存放session,phpsession实现多级目录存放实现代码,phpsession_PHP教程
  2. 如何查询服务器是否安装系统时间,如何查看系统当前的NTP配置?
  3. C语言 time函数 开销,C语言: 函数调用的开销
  4. redis 公网ip访问_Redis很重要,怎么只允许指定IP访问?
  5. http referer 验证防御方法_渗透测试 跨站攻击防御与安全检测手法剖析
  6. python删除符合条件的行_这十道经典Python笔试题,全做对算我输
  7. acwing——每日一题——总结
  8. 7-37 模拟EXCEL排序 (25 分)(思路+详解+超时解决 兄弟们冲呀呀呀呀呀呀)
  9. [EDA] 第1章 EDA技术概述-潘松版
  10. 高等数学下-赵立军-北京大学出版社-题解-练习8.1