![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PapaMelon 算法社区
金三小胖
这个作者很懒,什么都没留下…
展开
-
PapaMelon #11计算排列的编号 [组合数学]
题目链接 计算排列的编号 题解 这是 #10 计算第 K 个排列 的 题解,本题和第 10 题揭解法相同 从最高位开始考虑,根据每一位填的数字是什么,确定跳过了多少个排列 #include <iostream> #include <vector> using namespace std; using ll = long long; vector<ll> f(21); void init() { f[0] = 1; for (int i = 1; i &l原创 2021-07-16 22:51:04 · 137 阅读 · 0 评论 -
PapaMelon #10 计算第 K 个排列 [组合数学,排列]
题目链接 计算第 K 个排列 题解 由于 nnn 比较大,无法用暴力来做(从小到大枚举所有排列,直到找到第 KKK 个) 我们可以按位来确定,当确定第 111 位应该填什么数字的时候,后面 n−1n-1n−1 位将可以产生 (n−1)!(n-1)!(n−1)! 种不同的排列,因此我们不是逐一枚举,而是每次跳过 (n−1)!(n-1)!(n−1)! 个 #include <cstdio> #include <cstring> #include <iostream>原创 2021-07-12 21:52:34 · 130 阅读 · 0 评论 -
PapaMelon #4 长度为 K 的回文子串 [字符串哈希]
题目链接 长度为 K 的回文子串 题解 腾讯面试真题 可以用回文串算法解决,也可以用字符串哈希来解决 长度为 K 的子串一共有 n-K+1 个,n 是字符串长度。我们枚举所有这样的子串,然后从中间分割开,判断一下左右两边是否相等。判断两个字符串是否相等,用字符串哈希能做到 O(1)O(1)O(1) #include <iostream> #include <vector> using namespace std; const int INF = 0x3f3f3f3f; v原创 2021-07-12 16:57:44 · 340 阅读 · 0 评论