首页 > TAG信息列表 > 凑出
P4587 神秘数 Sol
主席树好题。 本质上是对于前缀的理解与转化。 同题见牛牛的凑数游戏。 实际上那场比赛 T2 和 T3 都是前缀相关的题目。 这题是 T3,看到很容易想到二进制拆分。 稍微推广一下可以发现,对于从小到大的一系列数 \(a_1,a_2,...,a_n\),处理前缀和 \(pre_1,pre_2,...,pre_n\);如果存在一个2021.01.25包子凑数
2021.01.25包子凑数 题目描述 有n种蒸笼,每种有无限个,且每种可以蒸Ai个包子,问有多少种包子个数是蒸不出来的。如果有无限多个,输出INF。 输入格式 第一行包含一个整数N。(1 <= N <= 100) 以下N行每行包含一个整数Ai。(1 <= Ai <= 100) 输出格式 一个整数代表答案。如果凑不出的UVA12455 Bars 题解
此题洛谷题面没有翻译(以后可能会有,以博主发布时间为准),我就简述一下大意吧: 有 \(T\) 组数据,对于每组数据,给定 \(p\) 个数,问 \(p\) 个数中选出一些数,使得和为 \(n\)。 入门题嘛,显然是一个 \(dp\) 题,有点像 \(01\) 背包的模板题。 设 \(l_i\) 为 \(n\) 个数中的第 \(i\) 个,\(j\) 从2022牛客寒假算法基础集训营2
A - 小沙的炉石 题目描述 输入描述 输出描述 样例输入 2 1 3 1 4 6 样例输出 YES YES NO 样例说明 思路 按道理来说, 所有斩杀线以下的都应该可以, 但是出现了两个特例绝对不是打表出来的 m == 1, 此时无法凑出3 m == 2, 此时无法凑出8 最大斩杀线, 先把所有的法术回复牌SP13388 题解
有 \(T\) 组询问,每组通过三种方式凑出 \(z\) 升水,若可以则输出 YES,不能则输出 NO。 根据样例的模拟可以发现:若 \(z\) 是 \(x\) 和 \(y\) 的最大公约数的倍数且 \(x\) 和 \(y\) 中间有一个 \(\ge z\),就可以凑出 \(z\) 升水(扩展欧几里得算法)。 #include<bits/stdc++.h> using namespDP算法(动态规划算法)
前几天做leetcode的算法题很多题都提到了动态规划算法,那么什么是动态规划算法,它是什么样的思想,适用于什么场景,就是我们今天的主题。 首先我们提出所有与动态规划有关的算法文章中都会提出的观点: 将一个问题拆成几个子问题,分别求解这些子问题,即可推断出大问题的解。 什么都不了解gym 102263 D 思维+gcd
https://codeforces.com/group/uVAsoW2Jkj/contest/336856/problem/D 给你一个数组A 让你随便加减数组B任一数 问能否把A全相等 首先 一整个数组可以凑出一个数x=k1*b1+.... 即 x=k*gcd(b1....) 那么如何让A全相等呢, 只需要让A数组的所有差值都可以被x表示 所有插值代表为nCF1096C题解
题意: 给定一个角度值,问最少在正几边形中可以找到三个点 \(A\) ,\(B\) ,\(C\) ,使 \(∠ABC\) 为这个角度值,如果不存在这个正 \(n\) 边形,则输出 \(-1\) ,有多组数据。 思路: 首先可以发现不可能数据使得程序输出 \(-1\) ,因为任意 \(1^{\circ}\leq\theta<180^{\circ}\) 都可以由一个正 \(14.经典动态规划:完全背包问题
零钱兑换②(LeetCode 518题 难度:中等) 我们可以把这个问题转化为背包问题的描述形式: 有一个背包,最大容量为amount,有一系列物品coins,每个物品的重量为coins[i],每个物品的数量无限。请问有多少种方法,能够把背包恰好装满? 这个问题和我们前面讲过的两个背包问题,有一个最大的区别就是,每前边硬凑,烂摊子交给后边
凑出重要极限,剩下的用 等价无穷小 硬凑出重要极限 = e , 然后用三角函数 和差化积,倍角公式,2021-ICPC昆明站M-Stone Games(思维+主席树)
题目链接 题意:给定了n堆石子每堆的数量是[1,1e9]的整数,q次询问,每次给出区间[l,r],可以选择[l,r]区间的石子堆加起来凑出一个数x,问最小的无法被凑出的数是多少? (每次询问中,每堆石子最多选择1次,此题强制在线) 分析: 对于[l,r]区间,我们把石子数放进一个桶里。 首先0肯定可以被凑到,因【CCF Online3普及组】买表
【CCF Online3普及组】买表 (File IO): input:watch.in output:watch.out 题目描述 Jimmy 到 Symbol 的手表店买手表,Jimmy 只带了 n 种钱币,第 i种钱币的面额为 k_i元,张数为 a_i张。Symbol 的店里一共有 m块手表,第 i块手表的价格为 t_i 元。 Symbol 的手表店不能找零,所以 Jimm给不同面值硬币,计算N发分有几种表示形式
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 (结果可能会很大,你需要将结果模上1000000007) 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11零钱问题的动态规划解法——用 n 种不同币值的硬币凑出 m 元,最少需要多少硬币。
输入格式:第一行输入需要凑的钱数 m 和硬币的种类 n (0<m<100,0<n<10),第二行输入 n 种硬币的具体币值,假设硬币供应量无限多。 输出格式:输出最少需要的硬币个数 输入样例:在这里给出一组输入。例如: 6 31 3 4输出样例:在这里给出相应的输出。例如: 2 代码实现: package work5; impo[Luogu] CF888E Maximum Subsequence
\(Link\) Description 给一个长度为\(n\)的数列和\(m\),在数列任选若干个数,使得他们的和对\(m\)取模后最大。 \(n ≤ 35, 1 ≤ m ≤ 10^9\) Solution \(n\)这么小,一看就知道要爆搜。但纯搜索是\(O(2^n)\)的,跑不过去。这时可以考虑\(Meet\ in\ the\ Middle\)。 对\(Meet\ in\ Middle动态规划_硬币问题
假设有 1 元, 3 元, 5 元的硬币若干(无限) , 现在需要凑出 11 元,问如何组合才能使硬币的数量最少? d(i) = d(j) + 1, j < i。通俗地讲,如果我们需要凑出 i 元,就在凑出 j 的结果上再加上某一个硬币就行了。 那这里我们加上的是哪个硬币呢。嗯,其实很简单,把每个硬币试一下就行了: 假设最【思维】dp+字符串+转化条件——cf1363F
感觉这题真好! /* 首先可以将操作换一种理解方式:取s[i]然后插到其左边任一位置 可以发现从s->t是一个凑后缀的过程 那么我们将s,t翻转,将操作变成取s[i]然后插到右边任一位置,于是s->t变成了凑前缀的过程 dp[i][j]表示s[1..i]凑出t[1..j]的代价 如果s[1..i]能凑出t[1..j],那么进买表(【CCF】NOI Online能力测试3 入门组)
题目描述 Jimmy 到 Symbol 的手表店买手表,Jimmy 只带了 nn 种钱币,第 ii 种钱币的面额为 ki 元,张数为 ai 张。Symbol 的店里一共有 m 块手表,第 i 块手表的价格为 ti 元。 Symbol 的手表店不能找零,所以 Jimmy 只能在凑出恰好的钱数时才能购买一块手表。现在对于leetcode322.零钱兑换
题目大意 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1 示例 1: 输入: coins = [1, 2, 5], amount = 11 输出: 3 解释: 11 = 5 + 5 + 1 示例 2: 输入: coins = [2【POJ - 2229】Sumsets(完全背包)
Sumsets 直接翻译了 Descriptions Farmer John 让奶牛们找一些数加起来等于一个给出的数N。但是奶牛们只会用2的整数幂。下面是凑出7的方式 1) 1+1+1+1+1+1+1 2) 1+1+1+1+1+2 3) 1+1+1+2+2 4) 1+1+1+4 5) 1+2+2+2 6) 1+2+4 帮助FJ找到 N的分配数 (1 <= N <= 1,000,000).#C++初学记录(动态规划(dynamic programming))
浅入动态规划 最近进行动态规划的学习,看到了一个很好的例子,现在把它记录下来仅供自我知识梳理 dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems. 1. 从一个生活问题谈起 作者:阮行止 先来看看生活动态规划 1 讲评
T1 顺手牵羊 题意:最少多少个正整数的平方和等于一个给定的数. 做法一 拉格朗日四平方定理: 任何一个正整数都可以表示成不超过四个整数的平方之和. 所以我们只需要做一个三维的枚举(四维压成三维),时间复杂度 O(n log n). 做法二 这题很容易看出是背包问题. 我们可以把每一块地看成一个bzoj 1192: [HNOI2006]鬼谷子的钱袋 思维_二进制
十分巧妙的一道题. 考虑当前凑出$[1,i/2)$,那么再有一个 $i/2$,就可以凑出 [i/2+1,i). 注意,这里的 $i$ 都是 2 的 $k$ 次幂. 于是,我们只要找到 $i$ 使得 2 的 $i$ 次幂刚好大于 $m$ 即可. Code: #include<bits/stdc++.h>using namespace std;int main(){ long long n,k=2; ci03-14考试总结
Test0314 嘲讽垃圾选手的毒瘤出题人 你怎么不去吃\(**\)呢 T1 得分情况 预计分数 : 30pts 实际得分 : 80pts 考虑DP , 得到\(O(n^3)\)做法 优化 , 得到\(O(n*(k-n)^2)\)做法 得到毒瘤出题人的馈赠 , 获得额外50pts 正解 多项式优化DP , 我不会 所以不改了 T2 得分情况 预计分数线性基
线性基 定义 线性基 一个由若干数组成的集合\(S\),定义它的线性基为最小的一个集合\(T\)使得\(S\)和\(T\)能够异或出的值域(集合)相同 张成 一个集合\(S\),随意取若干个数异或,能够凑出的数的集合称为集合\(S\)的张成,表示为\(span(S)\) 线性相关 如果一个集合内有某个数满足:去除这个