当前位置: 首页 > wzjs >正文

手工制作小钱包郑州网站seo外包

手工制作小钱包,郑州网站seo外包,图书馆建设网站,粉色视频看到最大值最小,我们第一个想到就是二分答案 我们也分析出来了二段性,既然已知用二分答案,我们就让每段和的最大值不断变小不断变小,用的段数也不断增多,刚好用完所有段数的时候就是我们的答案了 我们不断的check看符…

看到最大值最小,我们第一个想到就是二分答案

我们也分析出来了二段性,既然已知用二分答案,我们就让每段和的最大值不断变小不断变小,用的段数也不断增多,刚好用完所有段数的时候就是我们的答案了

我们不断的check看符不符合要求,符合要求就不断接近答案,不符合要求就排除

check函数怎么写呢?

我们已经枚举出了最大值,我们只要让每段和最大不超过最大值,然后判断段数是大于m还是小于还是等于m就行了

现在唯一的问题就在于我们的check函数怎么写了,也就是我们怎么分段,我们根据枚举的答案,也就是每段和的大小,我们用小贪心的思想,不断的加,如果大于sum的时候,把前面的格子分成一段,再往后加,最后再把最后那段加上,就是我们的格子总数了

我们判断格子总数是小于m还是大于等于m,也就是我们把段数尽可能分的最少,总段数是有限的

来进行我们的二分操作,我们判断一下二分的两个端点,每段和的最大值最大就是sum(a[i),最小值就是max(a[i]) 

#include <iostream>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
ll a[N];
ll n,m;
bool check(ll x)
{ll sum = 0;ll cnt = 0;for(int i =1;i<=n;i++){sum+=a[i];if(sum>x){cnt++;sum=a[i];}}return cnt+1<=m;
}
int main()
{cin >> n >> m;ll l = 0,r = 0;for(int i = 1;i<=n;i++){cin >> a[i];l = max(l,a[i]);	r+=a[i];}while(l<r){ll mid = (l+r)/2;if(check(mid)) r=mid;else l = mid+1;}cout << l << endl;return 0;} 

http://www.dtcms.com/wzjs/402417.html

相关文章:

  • 如何向google提交网站最好的免费建站网站
  • 网站开发 改进京津冀协同发展
  • 建设企业网站方案引擎搜索器
  • 论文旅游网站建设seo网站推广批发
  • 中江门户网站最新舆情信息网
  • 在电脑新建网站站点职业培训网络平台
  • 腾讯快速建站平台桂林网页
  • 白云网站开发南宁网站建设
  • 莞城网页设计系统优化大师
  • 网站运营专员具体每天怎么做手机网站建设公司
  • 做网站怎么用国处服务器怎么做互联网推广
  • 小白学做网站买什么书百度平台官网
  • 网站空间 群集今日刚刚发生的军事新闻
  • 前端和做网站百度推广登陆平台登录
  • 中国做b2b最快是哪个网站360提交入口网址
  • dedecms网站乱码百度识图官网
  • 给我推荐一个网站网站关键词优化应该怎么做
  • 做新闻网站犯法吗百度推广入口登录
  • 个人博客主页seozou是什么意思
  • 我想在阿里巴巴上给别人做网站网络优化有前途吗
  • 南宁市哪里有帮搞网页设计的seo实战优化
  • 品牌宣传网站建设近一周热点新闻
  • 如何写一个微信小程序seo是什么意思 为什么要做seo
  • 网站建设的未来推广策划方案怎么写
  • 常宁网页设计西安百度关键词优化排名
  • 济源做网站的公司百度推广客户端手机版下载
  • 做服装批发哪个网站比较好郑州seo优化外包公司
  • 购物网站模块自己的产品怎么推广
  • 上海建设银行官方网站全网优化哪家好
  • 淘宝客网站里面catid=16天门seo