组合数学
幽殇默
他时若遂凌云志,敢笑黄巢不丈夫。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1290. 越狱
https://www.acwing.com/problem/content/1292/#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int mod=100003;LL quick_mi(LL a,LL b,LL p){ LL sum=1; while(b) { if(b&1) sum=sum*a%p; b>&.原创 2021-10-15 08:33:15 · 201 阅读 · 0 评论 -
10. 计算第 K 个排列【组合数学】
https://www.papamelon.com/problem/10#include<bits/stdc++.h>using namespace std;typedef long long int LL;LL f[25];void init(){ f[0]=1; for(int i=1;i<=20;i++) f[i]=f[i-1]*i;}void solve(){ LL n,k; cin>>n>>k; vector<int>.原创 2021-09-27 15:34:43 · 151 阅读 · 0 评论 -
11. 计算排列的编号【组合数学】
https://www.papamelon.com/problem/11首先想一下如何获得编号呢? 暴力一定是不可以,所以我们一定要思考一下一个时间复杂度小的算法。这个排列的编号==它前面的所有的排列数+1例: 3 2 1先看第一位是3,比它小的,且目前还没用的数字的有2个分别是 1 2.那么以 1开头的 2开头的都是它前面的排列 后面还剩余俩数随便的排。 即 22!接着 3 2 比2小的,且目前还没用的数字的有1个是1.故 前面的排列是 11! 。。。。。以此类推.原创 2021-09-27 15:03:21 · 668 阅读 · 0 评论 -
131. 合并两个序列 III【组合数学】
https://www.papamelon.com/problem/131多重集排列组合。#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int mod=1e9+7;const int N=1e5*2+10;LL f[N],inf[N];LL quick_mi(LL a,LL b,LL p) { LL sum=1; while(b) { if(b&1) sum.原创 2021-09-26 22:38:08 · 129 阅读 · 0 评论 -
130. 合并两个序列 II【组合数学】
https://www.papamelon.com/problem/130多重集排列组合,数据范围很大故先预处理。#include<bits/stdc++.h>using namespace std;typedef long long int LL;const int mod=1e9+7;const int N=1e3*2+10;LL f[N],inf[N];LL quick_mi(LL a,LL b,LL p) { LL sum=1; while(b) { if(.原创 2021-09-26 22:33:55 · 152 阅读 · 0 评论 -
129. 合并两个序列【组合数学 / 经典板子题】
https://www.papamelon.com/problem/129我们把序列A看成红球,把B看成蓝球。合并后的球的总数就是A+B例: A:1 2 3 其实就是三个一模一样的红球。因为如果不是一模一样的,那么 [1,2,3],[3,2,1]…都是不同的排列。但是题目给的是相对顺序不能变。故只有一种。故它们是一模一样的。故问题就转化成了多重集的排列组合。#include<bits/stdc++.h>using namespace std;int main(void).原创 2021-09-26 22:30:02 · 310 阅读 · 0 评论
分享