首页 > 其他分享 >从CF1934B学习硬币问题的非DP做法

从CF1934B学习硬币问题的非DP做法

时间:2024-03-02 11:45:01浏览次数:30  
标签:六块钱 15 硬币 int res 代替 CF1934B DP

Problem - B - Codeforces

被DP给限制思路了

思路

其实可以枚举前四个硬币的数量,然后通过倍数关系和更优的方案来限制每个硬币的枚举区间,最后再对剩余的值是否是最后一个硬币的倍数做检查,是就根据最小更新答案。

  • 一块钱最多两个,因为三个就可以直接用三块钱代替
  • 三块钱最多一个,因为两个可以被六块钱代替
  • 六块钱最多四个,因为五个可以被两个十五代替
  • 十块钱最多两个,三个可以用两个十五块代替

代码

void solve()
{
    int n;
    std::cin >> n;

    int ans = n;
    for (int a = 0; a < 3; a++)//一块钱最多两个,因为三个就可以直接用三块钱代替
    {
        for (int b = 0; b < 2; b++)//三块钱最多一个,因为两个可以被六块钱代替
        {
            for (int c = 0; c < 5; c++)//六块钱最多四个,因为五个可以被两个十五代替
            {
                for (int d = 0; d < 3; d++)//十块钱最多两个,三个可以用两个十五块代替
                {
                    int res = n - a - 3 * b - 6 * c - 10 * d;//减完剩下的就是15块
                    if (res >= 0 && res % 15 == 0)//如果是15的倍数,说明答案合法,计算答案
                    {
                        ans = std::min(ans, res / 15 + a + b + c + d);
                    }
                }
            }
        }
    }
    std::cout << ans << "\n";
}

标签:六块钱,15,硬币,int,res,代替,CF1934B,DP
From: https://www.cnblogs.com/kdlyh/p/18048442

相关文章

  • DP Pack
    之前没想着要放上来的,但是为了方便查看还是放上来吧。现在时间是省选Day0。P7154需要按照大小匹配的问题不妨转化成括号序列。对于所有的奶牛和牛棚排序,位置相同奶牛在前。把所有牛棚看作是右括号,奶牛看作左括号,然后进行括号匹配。最后对于所有“失配”的括号必须满足失配的......
  • 1-1 硬币兑换
    本题是一个完全背包问题,需要对三重循环进行优化。容易想到用(i,j)表示从前i个硬币中选取总价值为j的方案中,使用硬币数目的集合。f(i,j)表示其最小值。则有f(i,j)=min(f(i-1,j-k*w[i])+k),其中k={0,1,...,j/w[i]},w[i]是第i个硬币的价值。于是本题在对i,j......
  • RTE 开源|小红书 REDPlayer 正式发布!快来 get 同款播放器~
    本项目由RTE开发者社区x小红书联合运营 播放器最初出现在19世纪,当时主要用于播放音频,例如通过留声机播放唱片。 随着技术的进步,音频播放器不断改进,品质越来越好,体积也越来越小。到了今天,通过手机或网络,人们可以随时随地播放音频和视频。 优秀的播放器有几个特性:需......
  • GNS3打开工程报错 --Dynamips error xxx:unable to create UDP NIO 解决方法
    GNS3打开工程报错--Dynamipserrorwhenrunningcommandxxx:unabletocreateUDPNIO报错原因:GNS3(v2.2)serverUDP连接端口号使用了10000-20000,NvidiaGeForceExperience也使用了相同的UDP端口号,发生冲突。解决方法:方法一:卸载NvidiaGeForceExperience,此过程不会......
  • C# NamedPipe传输测试
    CancellationTokenSourcects=newCancellationTokenSource();CancellationTokentoken=cts.Token;Tasktserver=Task.Run(()=>{ NamedPipeServerserver=newNamedPipeServer(); server.dowork(token); });Tasktclient=Task.Run(()=>{ Named......
  • 简单dp 学习笔记
    1.背包1.1背包模型的概述有\(n\)种物品,每种物品有若干个。拿一件物品付出\(w_i\)代价获得\(v_i\)价值,问最多花费\(V\)的代价能获得的最大价值。1.20/1背包考虑每种物品只有一个的情况。我们设\(f_{i,j}\)表示前\(i\)个物品,花费了\(j\)的最大价值。于是得出......
  • 国产低成本DP7344 192K 双通道 24 位 DA数模转换芯片 兼容替换CS4344
    数模转换芯片是一种将模拟信号转换为数字信号的电子元器件。它能够将来自传感器、麦克风等模拟信号输入,转换为数字信号输出,以便于处理、存储和传输。其基本工作原理是利用采样器对模拟信号进行连续采样,并且将每个采样值转化为对应的数字代码。这些数字代码经过编码器进行编码,输出......
  • LWIP RAW接口TCP与UDP部分函数解析
    RAWTCP接口tcp_input()函数voidtcp_input(structpbuf*p,structnetif*inp) --->staticerr_ttcp_process(structtcp_pcb*pcb) --->staticvoidtcp_receive(structtcp_pcb*pcb) --->>TCP_EVENT_RECV(pcb,recv_data,ERR_OK,err);//调用用户注册......
  • 状压DP
    状压$DP$学习笔记状压,状态压缩,好像很nb的样子实际上,它就是利用二进制将只有$0$和$1$两种状态的一个序列压缩成一个数来存储。还是不好理解?举个例子,如果在一行棋盘上摆棋子,棋子只有摆与不摆两种状态,则\((1011)_2\)即\((11)_{10}\)就表示,棋盘的第$1,3,4$......
  • 2024-02-29-Linux高级网络编程(3-UDP编程-TFTP、广播、多播)
    3.UDP编程-TFTP、广播、多播3.1TFTP简介、通信过程3.1.1TFTP概述TFTP:简单文件传送协议(TrivialFileTransferProtocol),最初用于引导无盘系统,被设计用来传输小文件特点:基于UDP实现,不进行用户有效性认证数据传输模式:octet:二进制模式netascii:文本模式mail:已经不再支持3......