给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。 你可以认为每种硬币的数量是无限的。 示例 1: 输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 ...
分类:
其他好文 时间:
2021-06-28 18:57:50
阅读次数:
0
给定不同面额的硬币和一个总金额。写出函数来计算可以凑成总金额的硬币组合数。假设每一种面额的硬币有无限个。 示例 1: 输入: amount = 5, coins = [1, 2, 5] 输出: 4 解释: 有四种方式可以凑成总金额: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1 ...
分类:
其他好文 时间:
2021-06-10 18:16:07
阅读次数:
0
题目链接 #题目大意 求n个数的子序列的最大异或和。 #解题思路 求出n个数的线性基并排序,然后将k二进制异或上线性基中对应的代表元素即可。 #代码 const int maxn = 2e5+10; ll arr[maxn]; vector<ll> b; //b中存的每个二进制位的代表元素 void ...
分类:
其他好文 时间:
2021-06-02 13:29:58
阅读次数:
0
题目: http://acm.hdu.edu.cn/showproblem.php?pid=5241 题面: Sample Input 2 0 2 Ouput Case #1: 1 Case #2: 1024 题意: M会使用n种语言,M的九个朋友会的语言都是M的子集,并且给出九个朋友会的语言的关系 ...
分类:
其他好文 时间:
2021-05-24 03:13:28
阅读次数:
0
原题链接 考察:floyd 思路: 很明显的传递闭包,但是我们直接敲板子上去会TLE.神级剪枝在floyd的第三重循环,如果g[i][k] = 0那么第三重循环没必要进行. 1 #include <iostream> 2 #include <cstring> 3 using namespace st ...
分类:
其他好文 时间:
2021-05-23 23:11:48
阅读次数:
0
1.状态定义 dp[i]表示组成面额 i,有多少种方案。 2.状态转移方程 int[] coins = new int[]{1,5,10,25}; for(int coin: coins) { dp[k] += dp[k - coin]; } 比如dp[36] = dp[36-1] + dp[36 ...
分类:
其他好文 时间:
2021-04-23 12:06:20
阅读次数:
0
原题链接 考察:搜索 思路: 预处理有子弹和城堡的坐标,这部分除了暴力没有更好的办法.因为还有一个时间限制,所以需要三维数组.剩下就是BFS. 剪枝: 1.相同时间的拜访点不必再访问. 2.当离终点的曼哈顿距离>能量 不必再走下去. 注意:城堡处一定要预处理再判断子弹. 1 #include <io ...
分类:
其他好文 时间:
2021-04-22 16:32:51
阅读次数:
0
我对模拟退火的初步理解,还没深入了解过。这里只是用模拟退火求函数极值。 题目:https://vjudge.net/problem/HDU-2899 #include<bits/stdc++.h> using namespace std; #define IOS ios::sync_with_std ...
分类:
编程语言 时间:
2021-04-20 15:29:36
阅读次数:
0
1.状态定义 dp[i]代表凑齐总价值 i 需要的最少硬币个数; 2.状态转移方程 for(int coin : coins) dp[i] = Math.min(dp[i], dp[i - coin] + 1); 322. 零钱兑换 class Solution { public int coinC ...
分类:
其他好文 时间:
2021-04-16 11:58:54
阅读次数:
0
题目链接 题目大意 有一个数组 \(a\),它是一个长度为$n(n\le1e5)$的全排列。 现在他想执行多次下列两种操做: $0;l;r$表示对$a[l..r]$进行升序排序 $1; l; r$表示对 \(a[l..r]\) 进行降序排序 问经过 $m(m\le1e5)$次操作后$a[k]$为多少 ...
分类:
其他好文 时间:
2021-04-14 12:37:08
阅读次数:
0