首页 > 其他分享 >CF1934B Yet Another Coin Problem 题解

CF1934B Yet Another Coin Problem 题解

时间:2024-04-06 17:45:48浏览次数:25  
标签:10 15 硬币 题解 Another ans 面值 Yet

CF1934B Yet Another Coin Problem 题解

题意

目前有 \(5\) 种硬币,面值分别为 \(1,3,6,10,15\)。给你一个数字 \(n\),求出可以凑出 \(n\) 的最少的硬币的数量。

思路

这道题,大多数的人大概会想到动态规划的方法。

但是,我们应该有敢于创新的精神。于是我就想到了一个简单的数学方法。

首先我们先不讨论面值等于 \(15\) 元的硬币。

考虑硬币的面值为 \(1\) 元、\(3\) 元、\(6\) 元、\(10\) 元、\(15\) 元的情况。

1:面值为 \(1\) 元的硬币的数量范围小于 \(3\)。

当使用大于等于 \(3\) 个 \(1\) 元硬币。

则可以用面值为 \(3\) 的硬币代替。

2:面值为 \(3\) 元的硬币的数量范围小于 \(2\)。

当使用大于等于 \(2\) 个 \(3\) 元硬币。

则可以用面值为 \(6\) 的硬币代替。

3:面值为 \(6\) 元的硬币的数量范围小于 \(4\)。

当使用大于等于 \(4\) 个 \(6\) 元硬币。

则可以用 \(2\) 个面值为 \(10\) 加 \(1\) 个面值为 \(3\) 加 \(1\) 个面值为 \(1\) 的硬币代替。

4:面值为 \(10\) 元的硬币的数量范围小于 \(3\)。

当使用大于等于 \(3\) 个 \(10\) 元硬币。

则可以用 \(2\) 个面值为 \(15\) 的硬币代替。

5:面值为 \(15\) 的硬币。

剩下的数目都有面值为 \(15\) 的硬币承担就好了。

时间复杂度

因为前面的数值都很少,所以时间复杂度也十分小。

代码

#include <bits/stdc++.h>
using namespace std;
int n,t,ans;
int main() {
	cin>>t;
	while(t--){
		cin>>n;
		ans=1000000000;
		for(int i=0;i<3;i++)
			for(int j=0;j<2;j++)
				for(int k=0;k<5;k++)
					for(int m=0;m<3;m++){
						int y=i*1+j*3+k*6+m*10;
						if(y>n)continue;
						if((n-y)%15==0){
							ans=min(ans,i+j+k+m+(n-y)/15);
						}
					}
		cout<<ans<<endl;
	}
}

标签:10,15,硬币,题解,Another,ans,面值,Yet
From: https://www.cnblogs.com/AUBSwords/p/18117668

相关文章

  • CF1950B Upscaling题解
    CF1950BUpscaling题解题意给予你一个正整数\(n\),构造一个如图的字符矩阵。思路注意数据\(1\len\le20\),可以发现数据很小,于是我们可以暴力模拟。我们可以将两列看为一列,两行看为一行。然而我们可以发现缩成的一行的\(i\)等于被缩的两行的\({i\div2}\)的向上取整。......
  • P4551 最长异或路径 题解
    题目链接:最长异或路径看到树上路径问题,且是异或和这种,先思考树上前缀和转化为前缀和问题。如果我们预处理出\(pre[curr]\)表示\(curr\)这个点到根的前缀异或值,那么很显然我们路径的两个点\(u\)与\(v\)的\(pre[u]\opluspre[v]\)和传统的加法的树上前缀和并不一样,因为异......
  • 24.4.6 题解
    4.6模拟赛T1困难的图论题意:找出所有在且仅在1个简单环中的边,输出编号的异或和。一个错误的想法:找边双连通分量,看边数是否等于点数反例:正解是点双所以我在想,为什么是点双,不是边双呢?什么时候找点双,什么时候找边双呢?T2中等的字符串已知\(m\)个关键词\(s_i\),每出现......
  • 【2021.6.26 NOI模拟】Problem B. 简单题 another solution
    ProblemDescriptionInput从文件b.in中读入数据。一个正整数n。Output输出到文件b.out中。一个整数表示答案。SampleDataInput#1Copy5Output#1Copy31Input#2Copy50Output#2Copy2885DataConstraint首先,我们从小到大枚举\(n\),假设当前枚举......
  • CF1200E Compress Words 题解
    题目链接:CF或者洛谷注意到总字符串长度不超过\(1e6\),对于两个串之间找前后缀匹配,只要能暴力枚举长度,\(check\为\O(1)\),那么最后显然线性复杂度。可以考虑\(kmp\),也可以考虑字符串哈希,最好上双哈希,然后拼串显然是在尾部继续添加新的前缀哈希,这个需要添加的串可以单独由匹配......
  • 牛客小白月赛90题解
    A.小A的文化节#include<bits/stdc++.h>#defineintlonglong#defineendl"\n"usingnamespacestd;constintN=1e5+10,mod=1e9+7;intn,m,a[N];voidsolve(){ cin>>n>>m;for(inti=1;i<=n;i++)cin>>a[i];intres=0......
  • BNDS 2024/4/6模拟赛题解
    T1方程描述给出非负整数\(N\),统计不定方程\(X+Y^2+Z^3=N\)的非负整数解\((X,Y,Z)\)的数量。输入输入数据,包含一个非负整数\(N\)。输出输出数据,包含一个非负整数表示解的数量。数据范围40%的数据,\(N<=10000\)60%的数据,\(N<=10^8\)100%的数据,\(N<=10^{16}\)分析......
  • LG_B3951 [GESP样题 五级] 小杨的队列 题解
    比较简单的一道逆序对的题,甚至不用\(\Omicron(n\logn)\)的归并,只需要\(\Omicron(n^2)\)的优化冒泡。就是一个在队列里每次push一个元素,然后查找逆序对的问题。值得一提的是,这道题身高不重复,所以才能优化冒泡拿满分,不然的话就得老实用归并了。直接看代码吧。#include<b......
  • AT_xmascon21_b Bad Mood 题解
    这是一道比较简单的结论题。不难发现,最小得分为\((n+1)(m+1)-nm\),化简得到:\[\begin{aligned}&(n+1)(m+1)-nm\\=&nm+n+m+1-nm\\=&n+m+1\end{aligned}\]继续不难发现,最大得分应该是最小得分加上\(\lfloor\frac{(n-2)(m-2)+nm}{4}\rfloor\)的结果,化简,得到(忽略向下取整......
  • LG_P10183 [YDOI R1] Running 题解
    首先感谢@jjh20100730dalao提供的思路。这是一道一道简单的数学题。首先不难发现,起始时间为\(0\),那么到达每一个超市时的时间必须要能被\(v\)整除,注意到题目要求最大,所以是要求\(a_i\)的最大公因数。注意到到达每个超市的时间必须要是偶数,这样的话不满足\(v\)是最大......