
数学---组合数学
#
夕林山寸
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AtCoder Beginner Contest 172 A-E
A:模拟#include <bits/stdc++.h>using namespace std;typedef long long ll;const int M = 1e5+7;int main(){ ios::sync_with_stdio(false); cin.tie(0); ll n; cin>>n; cout<<(n+n*n+n*n*n)<<endl; return 0;}B:直接比较。#i原创 2020-06-27 22:46:19 · 347 阅读 · 2 评论 -
AtCoder Beginner Contest 167 E:Colorful Blocks 组合数/DP分析
我们先DP分析dp[i][j]表示,按从左往右的顺序填到i时,有j对相邻数字不同,的方案数显然:dp[i][j]=dp[i-1][j]*(m-1)+dp[i-1][j-1];我们把DP在纸上推演如下:发现:每个i所在行的d[pi][j]其实就是二次项展开的一项求和dp[n][0]到dp[n][k]即可。第二种思路是用组合数直接进行分析:考虑:n个数,k个相邻位置数相同,我们在n-1个空位中选择k个位置,使得k左右数相同。然后固定最左边的数,有m种选法,依次往.原创 2020-05-11 11:49:14 · 599 阅读 · 0 评论 -
卡特兰数 —— 一次分析过瘾!
0:给定n个0和n个1,他们按照某种顺序排成长度为2n得序列,满足任意前缀中0得个数都不少于1得个数的序列的个数为:证明:我们假设不满足条件的序列个数为S。那么一定存在一个位置:1 <= 2p+1 <= n.使得前2p+1个数中有p个0,p+1个1.则后面的数中有n-p个0,n-p-1个1我们让后面的数取反(即0变1,1变0)则现在序列总共有:p+n-p-1 = n-1 个 0p+1+n-p = n+1 个 1那么对于n-1个0,n+1个1的任意排..原创 2020-05-10 19:26:23 · 1026 阅读 · 0 评论 -
“科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛 E:弦 -- 卡特兰数+组合数
我们可以用合法方案除以总方案数。我们从任意一个点X连出边,必须把圆分成两个点数均为相同的部分。所得的方案为这两部分的方案数乘积。枚举点X连出的所有可以把圆分成2个点数相同部分的边。求和,结果即为方案数。由于X连出的边不同,其他边不能连X,且两部分的方案相互独立,所以结果一定是不重不漏的。设f[i]为点数为i时,合法方案数显然:这就是卡特兰数的通项。所以有:证明很难。。https://blog.youkuaiyun.com/dlyme/article/details/253..原创 2020-05-10 18:26:05 · 340 阅读 · 0 评论 -
Educational Codeforces Round 86 (Rated for Div. 2) E. Placing Rooks 第二类卡特林数&容斥
比赛时先溜了。。感觉剩1h应该能搞一搞 ,至少不至于挂机。首先只有n个棋子。要满足所有空行可被攻击。必须每行一个棋子,或者每列一个棋子。除了k==0的情况。其他情况每行一个棋子与每列一个棋子不重复。即只需要算每行一个棋子的情况最后乘2即可。我们观察发现:每行一个棋子时,k没多一,列数就会减一。即:一定是n-k列。(因为每一个列消失,会且仅会多一条边)所以问题就转...原创 2020-04-27 19:38:24 · 340 阅读 · 0 评论 -
第二类斯特林数 (递推式+通式)
原创 2020-04-27 18:42:14 · 3847 阅读 · 0 评论 -
【vijos】1629 八 容斥原理 + 集合运算法则
8为a-b中整除8的数的个数,Ai表示a-b中整除ai数的个数。=整除lcm(a1,a2)的数的个数。但求2个数的并集不好求。所以我们用容斥,把结果转化成只有交集表示的形式。=把右边的Ai并集形式用容斥处理成交集。再利用集合的结合律,把8给交到充斥表达式里。就变成了:然后就只剩下简单的二进制处理了...原创 2020-04-17 11:41:00 · 187 阅读 · 0 评论 -
算法竞赛——进阶指南——acwing214. Devu和鲜花 容斥原理
多重集组合数一般形式。用二进制处理更加方便#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);...原创 2020-04-17 11:02:10 · 233 阅读 · 0 评论 -
#10238. 「一本通 6.6 练习 9」网格
利用卡特兰数变形。同样的方法:沿y=x-1这条直线对称过去求得结果为:C(n+m,n)-C(n+m,n+1);C++大数大概2-3s 慢了个常数,知道方法就行#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o << 1)#define rs ...原创 2020-04-16 18:45:15 · 700 阅读 · 0 评论 -
P1641 [SCOI2010]生成字符串 卡特兰数应用
这类题的比较容易理解的解法:一个点从(0,0)开始,每次横坐标加一。纵坐标加一或减一。这一题就是加一n次,减一m次。且不会经过y=-1这条直线。到(n-m)我们求出经过y=-1这条直线的方案数,再用总方案做差就是答案。假设这条折线经过y=-1这条直线,让这条折线从左往右第一个经过y=-1之前的部分。沿y=-1这条直线轴对称过去。那么这条折线表示的路径就是从(0,-2)到...原创 2020-04-16 17:05:57 · 205 阅读 · 0 评论 -
算法竞赛——进阶指南——acwing213. 古代猪文 lucas定理+欧拉定理+中国剩余定理,巧妙的性质!
一道很考验数论基本功的题目,知识杂糅。首先指数取模一般用欧拉定理降维(利用指数循环节)而这必须满足q与mod互质,由于mod是质数,当q==mod时,结果为0,否则q与mod互质则可用欧拉定理的推论得到:然后只需处理质数部分即可。大数的组合数用lucas定理求。但由于求多次,且模数太大,阶乘的复杂度过高,不可直接求。我们分解999911659发现:其有4个质因子...原创 2020-04-14 19:37:59 · 309 阅读 · 1 评论 -
算法竞赛——进阶指南——acwing212. 计数交换
#include <bits/stdc++.h>using namespace std;typedef long long ll;#define ls (o<<1)#define rs (o<<1|1)#define pb push_backconst double PI= acos(-1.0);const int M = 1e5+7;/...原创 2020-04-14 17:09:44 · 218 阅读 · 0 评论 -
Educational Codeforces Round 84 (Rated for Div. 2)E:Count The Blocks 组合计数/线性递推
dp[i]表示n等于i时,长度为1的个数由于n等于i时,长度 为j的个数等于 n取i-1,长度为j-1的个数我们只需要求出dp[i]即可由于每个数字的贡献是一定的,我们又知道了所有除了长度为1的所有情况。只需要让数字总数减去前面的数字贡献即可。。用sum加速下就行dp[i]=i*pow(10,i)-i*dp[1]-(i-1)*dp[2]……...原创 2020-03-24 00:56:17 · 177 阅读 · 0 评论 -
codeforces 895D - String Mark 组合数学
很像数位DP的过程。。。一般这种上界+下届我们可以考虑小于上界的数-小于下届的数。即a的所有排列中 字典序小于b的个数-字典序小于a的个数-1 就是最终答案。很明显 按位处理。a排列的字典序要小于s.处理到第i位时:dfs(id,s)1.这一位填的字符小于s[i]时,后面的字符任意填 都满足字典序小于s.2.这一位填的字符等于s[i]时,ans+=dfs(id+1...原创 2020-02-11 21:29:03 · 229 阅读 · 0 评论 -
2019牛客暑期多校训练营(第九场)
现场AC: B.DRANK:316今天打的很差,还是太菜了!补题情况:- 队友过的Ο 自己过的或赛后补题题号 A B C D E F G H I J K L 状态 . - . Ο Ο . . . . . . . D:...原创 2019-08-15 18:36:40 · 258 阅读 · 0 评论