- 博客(3)
- 收藏
- 关注
原创 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
187
原创 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
172
原创 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
448
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅