zoukankan      html  css  js  c++  java
  • 【NOIP模拟】买礼物的艰辛

    题面

    小 X 同学给小 C 同学选了 N 件礼物,决定顺序购买并赠送,但作为一个没有工资没有零花钱的可怜小朋友,有 M 位好心的同学伸出了援助之手,然而为了减少最高的借款量,小 X 同学希望 OI 竞赛的你为他合理规划,使得他能轻松快乐地送出礼物。

    30%的数据满足:n≤10;
    60%的数据满足:n≤1000;
    100%的数据满足:n≤100000

    分析

    很明显的二分裸题

    然而为何机房大佬们惨挂60,连我这等弱鸡也不放过?

    有的人是因为排了序,有的是因为细节写挂。我就是上次写一道尺取法(双指针)的题的时候,怎么调都是死循,自闭了

    于是这次在死循前多++了一下。然而真的是脑子不清醒,指针已经后移了,根本不需要++。。

    大样例太水的锅

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define N 100010
    int n,m,l,r,ans,mid,te;
    int a[N];
    template<class T>
    inline void read(T &x)
    {
        x=0;int f=1;static char ch=getchar();
        while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        x*=f;
    }
    
    inline int check(int x)
    {
        int i=1,rem=m,now;
        while(i<=n)
        {
            now=0;
            while(now+a[i]<=x)now+=a[i],i++;
            if(rem==0)return 0;
            rem--;//i++;
        }
        return 1;
    }
    int main()
    {
        read(n),read(m);
        for(int i=1;i<=n;i++)read(a[i]),l=max(l,a[i]);
        r=1000000000;
        while(l<=r)
        {
            mid=l+r>>1;
            if(check(mid))
            {
                r=mid-1;
                ans=mid;
            }
            else l=mid+1;
        }
        printf("%d",ans);
        return 0;
    }
  • 相关阅读:
    自适应网页设计?
    布局设置加版心?
    bootstrap框架使用?
    Electron框架下,如何使用jquery?
    轮播插件swiper.js?
    表格出现滚动条设置?
    overflow问题--滚动设置?
    移动端页面适配ipad?
    移动端页面构建需注意?
    复杂的Sql分组
  • 原文地址:https://www.cnblogs.com/NSD-email0820/p/9909183.html
Copyright © 2011-2022 走看看