组合数学
ACkingdom
这个人很懒,什么都没有留下
展开
-
洛谷-P2181 对角线(思维,数学)
题目链接 思路: 在经过一些排列组合的技巧,就可以得出 代码: #include<bits/stdc++.h> #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int N=2e6+7; const int M=2e4+5; const double eps=1e-8; const int mod=998244353; const int inf=0x7fffff原创 2020-08-13 01:49:46 · 329 阅读 · 0 评论 -
Codeforces Round #663 (Div. 2) C. Cyclic Permutations(组合数学)
题目链接 思路: 减后再增必成环,列出所有情况,然后再减去只先增一次再减一次的情况和只递增和只递减的情况即可。 代码: #include<bits/stdc++.h> #define int long long #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0); const int mod=1e9+7; const int N=1e6+5; using namespace std; int quick(int a,int原创 2020-08-10 01:06:24 · 300 阅读 · 0 评论 -
西南科技大学第十六届ACM程序设计竞赛暨绵阳市邀请赛-B-签到题(注:这不是个形容词,题目名字就叫签到题)(组合数学)
题目链接 题目: 在1-n之间随机生成长度为n的整数序列,请问正好含有n-1个不同的整数的方案数,答案mod 1e9+7。 思路: 首先从n个数中拿n-1个会有n种情况,再从n-1个中选出一个添加会有n-1种情况,再将这n个仅有一个重复的数字排列一遍就会有n!/2种情况,所以答案就是n!/2*(n-1)*n,过程中取模。 代码: #include<bits/stdc++.h> using namespace std; #define int long long #define IOS ios::原创 2020-06-21 20:19:36 · 557 阅读 · 0 评论 -
SCPC-续写神犇的传说(组合数学,逆元)
题目链接 题意: 给你一个数组,从中任意拿出一部分数字,求和为偶数的情况有多少种。 思路: 首先求出有多少个奇数多少个偶数,如果想让和为偶数,那么奇数一定要有偶数个,而偶数则没有要求,这里就用到了组合数学,偶数个是挂件,我们只需要求出每个偶数个的奇数有多少种再乘上偶数的所有排列即可,最后的结果对1e9+7取模。 知识点: 因为要用到组合数学,数据很大,要在中间取模,而中间取模后再乘就有可能导致出现小数从而影响结果,所以要用到逆元思想。除以一个数对mod取模就相当于乘上这个数的mod-2次方再对mod取模。原创 2020-06-14 19:57:14 · 271 阅读 · 0 评论