数列分段Section II(二分)
2024-10-19 03:38:51
输入时处理出最小的答案和最大的答案,然后二分答案即可。
其余细节看代码
#include <iostream>
#include <cstdio> using namespace std; int n, m, a[], x, y, ans = ; bool pd(int mid)
{
int i, sum = , tot = ;
for(i = ; i <= n; i++)
{
sum += a[i];
if(sum > mid)//分段数+1
{
sum = a[i];
tot++;
}
}
if(tot > m) return ;
return ;//如果是小于m的话也还可以再分
} int main()
{
int i, j, mid;
scanf("%d %d", &n, &m);
for(i = ; i <= n; i++)
{
scanf("%d", &a[i]);
x = max(x, a[i]);//答案最小
y += a[i];//答案最大
}
while(x <= y)
{
mid = (x + y) >> ;
if(pd(mid)) y = mid - ;
else x = mid + ;
}
printf("%d", x);
return ;
}
最新文章
- IOS自定义表格UITableViewCell
- WPF Datagrid multiple selecteditems in MVVM
- C# 刷新页面浏览次数(点击量)+1
- (实用篇)PHP不用递归遍历目录下所有文件的代码
- [Tex学习]给汉字注音
- java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.MetadataProvider
- anglarjs概述
- MAC 下虚拟主机的配置
- 最全最详细:ubuntu16.04下内核编译以及设备驱动程序的编写(针对新手而写)
- CameraLink通信接口的一般定义
- Lesson 1-2
- BindingResult 作用原理
- 通过Application配置全局的Context
- IDEA快捷键整理
- hdu 1025 上面n个点与下面n个点对应连线 求最多能连有多少条不相交的线 (LIS)
- Codeforces 510 E. Fox And Dinner
- .NET零基础入门之02:源码控制管理器的使用
- day08(异常处理,创建异常,finally,throws和throw的区别)
- 在window 8 或windows2012 上用命令行安装framework3.5 方法
- 20155313 2016-2017-2 《Java程序设计》第十周学习总结