• 洛谷 CF402A Nuts 题解


    本蒟蒻又来发题解啦!

    这题是个紫题?

    好吧,恶意评分可海星?

    回到正题

    这题很明显是贪心啊;

    有a个坚果,b个隔板,x个隔板,最多分成v个区间。

    那么我们的贪心策略是:

    如果一共使用的挡板小于x,且当前的箱子个数不足k。

    那么,就继续往这个箱子内加,直到大于为止,很水是吧。

    直接看代码(附详解:

    #include<bits/stdc++.h>
    using namespace std;
    
    int a, b, k, v, sum, ans;
    //a, b, k, v如题,sum是当前箱子的区间数,ans 是箱子的个数 
    int main()
    {
    scanf("%d%d%d%d", &k, &a, &b, &v);//输入k, a, b, v; 
    while(true)//有点皮,不过就是这么写的 
    {
    if(a <= 0)//如果坚果装够了,那就跳出。 
    break;
    sum = 1;//最开始的每个箱子中都有一个区间 
    while(b > 0)//如果还有隔板 
    if(sum < k)//且这个箱子中区间的个数小于k 
    {
    ++ sum;//区间个数加加 
    -- b;//隔板数目减减 
    }
    else
    break;//如果没隔板了就退出 
    a -= sum * v;//坚果的个数要减去这个箱子中的区间的个数 乘上 最大坚果量的个数
    //莫非你一个区间内可以装v个,你却只装1个,还是v - 1个? 
    ++ ans;//统计箱子个数; 
    }
    printf("%d", ans);//输出啦 
    return 0;
    }
    

    本蒟蒻又双叒叕被爆踩了

  • 相关阅读:
    常见优化函数
    排序算法
    小米编程题
    leetcode 刷题
    beam_search 和 viterbi算法的区别
    快速排序
    vitrebi算法进行分词的案例
    python 进行视频剪辑
    keras实现MobileNet
    HMM、CTC、RNN-T训练时所有alignment的寻找方法
  • 原文地址:https://www.cnblogs.com/Flash-plus/p/12028329.html
Copyright © 2020-2023  润新知