纪念品分组

纪念品分组

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

先排序,用双指针扫描
定义 L 为左指针,R 为右指针,总组数sum=0,每次相加左右指针指向的元素,若大于价格上限则R--,sum++;
否则两指针同时往中间移一位即L++,R--;
如果L==R,说明只剩下一个数了,总组数sum++,如果L>R,就结束了。
代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int w,n,sum=0;
    cin>>w>>n;
    int a[n];
    for(int i=0;i<n;i++) cin>>a[i];
    sort(a,a+n);
    int l=0,r=n-1;
    while(l<=r)
    {
        while(a[l]+a[r]>w&&l<r) sum++,r--;//如果大于就右指针向左移
        l++;
        r--;
        sum++;//小于等于的话就让l++,r--,总组数+1
    }
    cout<<sum;
    return 0;
}
全部评论

相关推荐

12-18 18:50
已编辑
门头沟学院 golang
牛客33637108...:重点是要事已密成,在没有进入这家公司之前,不要有任何的泄露信息,我之前跟你一样,面了一家光伏设备厂,底薪7500加上出差补贴大概有13,000左右,已经给了口头offer了,甚至要了我的在校成绩的所有信息,还向我要了三方的网签二维码,到后面还是毁约了,我干过最愚蠢的事情就是向同学透露要签三方的事,之后的失败只会让他们幸灾乐祸,这是即将结束的大学生活给我的最后一课,不要相信任何的口头三方,该面的就去面,甚至签了三方也有毁约的可能,就像我现在签了三方还在外面实习呢,春招还是要继续参加的,不能停止面试,不然到后面毁三方的时候,重新捡起的面试很麻烦的,这是我一点点小小的见解。
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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