zoukankan      html  css  js  c++  java
  • 数列分段`Section II`(二分

    https://www.luogu.org/problemnew/show/P1182

    洛谷上的题目。

    以后如果遇到1e5什么的   用二分试试!

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<string>
     7 #include<cmath>
     8 #include<set>
     9 #include<vector>
    10 #include<stack>
    11 #include<queue>
    12 #include<map>
    13 using namespace std;
    14 #define ll long long
    15 #define se second
    16 #define fi first
    17 const int INF= 0x3f3f3f3f;
    18 const int N=1e5+5;
    19 
    20 int n,m;
    21 int a[N];
    22 
    23 bool check(int x)
    24 {
    25     int s=0,cnt=1;
    26     for(int i=1;i<=n;i++)
    27     {
    28         if(s+a[i]<=x){
    29             s+=a[i];
    30         }
    31         else{
    32             s=a[i];
    33             cnt++;
    34         }
    35     }
    36     return cnt<=m;// 如果区间数比要求的多,就返回0
    37 }
    38 
    39 int main()
    40 {
    41     cin>>n>>m;
    42     int l=0,r=0,mid,ans=0;
    43     for(int i=1;i<=n;i++) scanf("%d",&a[i]),r+=a[i],l=max(l,a[i]);
    44     
    45     //必须 l>=a[i]; 这是一个WA点
    46     while(l<=r)
    47     {
    48         mid=(l+r)>>1;
    49         if( check(mid) ){
    50             r=mid-1;
    51             ans=mid;
    52         }
    53         else l=mid+1;
    54     }
    55     cout<<ans;
    56 }
  • 相关阅读:
    JS中的constructor与prototype
    HTTP状态码
    CSS HACK 及常见问题
    js常见怪异
    js深拷贝和浅拷贝
    浏览器渲染
    google全球地址大全
    从function前面的!想到的
    2048
    js判定IE
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9305580.html
Copyright © 2011-2022 走看看