【每日一题】4月17日 二分

华华给月月准备礼物

https://ac.nowcoder.com/acm/problem/23049

华华给月月准备礼物

Solution

根据题目大意,很快可以发现,如果我们枚举一个图片说明 ,可以在这个图片说明 情况下求到图片说明 根木棍,我们就希望能不能再求更大的图片说明
否则,可行解一定比当前ans更小。符合单调特性,采取二分的思路。

再说说我对二分的心得
二分大致可以分为两种思路,范围缩小让图片说明 逼近答案

while (l < r) {
        ll mid = r + l >> 1;
        if (a[mid]>=x)    r = mid;
        else     l = mid + 1;
    }

范围缩小让图片说明 逼近答案

while (l < r) {
        ll mid = r + l + 1 >> 1;
        if (a[mid]<=x)    l = mid;
        else     r = mid - 1;
    }

这两种区别在于求图片说明 的时候,第一种图片说明 不会取到图片说明 这个值;
第二种图片说明 不会取到图片说明这个值。
根据不同题目选择合适的方法,去处理无解的情况。
总而言之, 正确写出这种二分的流程是:

  1. 通过分析具体问题,确定左右半段哪一个是可行区间, 以及mid 归属哪一半段。
  2. 根据分析结果,选择"r= mid, l = mid + 1, mid = (l + r)>>1" 和"l= mid, r = mid -1, mid= (l + r+ 1)>>1" 两个配套形式之一。
  3. 二分终止条件是l== r, 该值就是答案所在位置。

时间复杂度O(图片说明 )

Code

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int N = 2e5 + 7;
ll a[N];
int n,k;

bool judge(ll x){
    ll cnt=0;
    for(int i=1;i<=n;++i)    cnt+=a[i]/x;
    return cnt>=k;
}

int main (){
    scanf("%d %d",&n,&k);
    for(int i = 1; i <= n; ++i)
        scanf("%lld",&a[i]);

    //二分求解,因为取不到0,并且我们让合法的答案保持在l中,选择第一种二分方法
    ll l=0,r=1e9+7;
    while(l<r){
        ll mid=r+l+1>>1; //ll可以吧位运算写简单点,不然只有用r-(r-l)/2了
        if(judge(mid))    l=mid;
        else     r=mid-1;
    }
    printf("%lld\n",l);
    return 0;
}
每日一题 文章被收录于专栏

每日一题

全部评论
前排瓷砖
1 回复 分享
发布于 2020-04-17 13:34

相关推荐

关于“实习生工资多少才算正常”,其实并没有一个放之四海而皆准的标准,但如果结合一线城市的生活成本、工作强度以及实习本身创造的价值来看,我个人认为6000&nbsp;元左右应当是一个基本及格线,也就是每天&nbsp;200&nbsp;多元。如果能达到&nbsp;300、400&nbsp;元一天,甚至更高,那无疑是更理想的状态。首先,从现实成本看,房租、通勤、餐饮几乎都是刚性支出。低于这个水平的实习,往往意味着实习生需要用家庭或存款“倒贴”工作,这在长期来看并不合理。实习本质上是学习,但并不等于“廉价劳动力”,更不应该是经济压力的来源。其次,愿意给实习生更高薪资的公司,通常不会是差公司。这至少说明两点:一是公司资金相对充足,不是靠压缩人力成本勉强维持;二是公司认可实习生的价值,希望你真正参与业务、创造产出,而不是只做边角料工作。很多高薪实习往往伴随着更规范的培养体系、更高的信息密度和更真实的项目经验。当然,高工资并不等于一切,但它往往是一个重要信号。能给到&nbsp;300、400&nbsp;元一天甚至更多的公司,往往对效率、能力和长期发展更有追求,也更可能处在一个有前景的赛道中。总结来说,实习工资不仅是钱的问题,更是公司态度、实力和发展前景的体现。在条件允许的情况下,争取一份“付得起你时间”的实习,本身就是一种理性选择。
北国牛马:你是不是忘了你一周只能上五天班,月薪6000那你日薪就得300了,日薪200一个月也就4000,也就刚好覆盖生活成本了
实习生工资多少才算正常?
点赞 评论 收藏
分享
评论
7
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务