OI/ACM之数论数学
文章平均质量分 54
OI/ACM数论数学
「已注销」
前oi选手。
重庆市南开中学高2020级毕业生。
重庆大学计算机系2020级学生。
QQ1954486214欢迎添加讨论~
展开
-
[SDOI2008] 仪仗队【欧拉函数】
题目传送门 首先我们对矩阵进行重新编排,以n=5n=5n=5为例(0,4) (1,4) (2,4) (3,4) (4,4)(0,3) (1,3) (2,3) (3,原创 2021-07-04 23:28:12 · 109 阅读 · 0 评论 -
2018.10.8每天认真做一道数学(数论)题之[TJOI2009]猜数字【中国剩余定理】
由已知:{(n−a1) ∣ b1(n−a2) ∣ b2... ...(n−ak) ∣ bk\begin{cases}(n-a_1)\ |\ b_1\\(n-a_2)\ |\ b_2\\...\ ...\\(n-a_k)\ |\ b_k\\\end{cases}⎩⎪⎪⎪⎨⎪⎪⎪⎧(n−a1) ∣&nbs...原创 2018-10-08 21:00:21 · 262 阅读 · 0 评论 -
简单复习一下中国剩余定理(CRT)
形如以下的方程组,可用CRTCRTCRT解决: ⎧⎩⎨⎪⎪⎪⎪⎪⎪x≡a1 (mod m1)x≡a2 (mod m2)...x≡an (mod&a原创 2018-08-25 16:14:57 · 437 阅读 · 0 评论 -
POJ 1061 青蛙的约会【exgcd】
入门题目。由已知:(x+km)%l=(y+kn)%l(x+km)\%l=(y+kn)\%l(x+km)%l=(y+kn)%l(x+pm)−(y+pn)=ql(x+pm)-(y+pn)=ql(x+pm)−(y+pn)=ql(m−n)p−lq=y−x(m-n)p-lq=y-x(m−n)p−lq=y−xap+bq=cap+bq=cap+bq=c#include <cmath>#...原创 2018-10-15 23:59:24 · 133 阅读 · 0 评论 -
简单复习一下exgcd(扩展欧几里得)
经典问题:已知整数a,b,ca,b,ca,b,c求整数x,yx,yx,y使得ax+by=cax+by=cax+by=c由于ax+by=gcd(a,b)ax+by=gcd(a,b)ax+by=gcd(a,b)有解,设通过exgcdexgcdexgcd求出的一组解为(x0,y0)(x_0,y_0)(x0,y0)则任意解为:(x0+kb′,y0−ka′)(x_0+kb&amp;amp;#x27;,y_...原创 2018-10-15 23:29:33 · 176 阅读 · 0 评论 -
BZOJ 1856: [Scoi2010]字符串【类卡特兰数】
类比卡特兰数。ans=Cn+mm−Cn+mm−1ans=C_{n+m}^{m}-C_{n+m}^{m-1}ans=Cn+mm−Cn+mm−1#include &lt;cmath&gt;#include &lt;cstdio&gt;#include &lt;cstring&gt;#include &lt;iostream&gt;#include &lt原创 2018-11-07 15:48:00 · 169 阅读 · 0 评论 -
「NOIP模拟」成绩【类卡特兰数】
题目描述在成都某中学有 m 个男生与 n 个女生排队,这个学校的女生比较古怪,从某个位置(包含这个位置)开始往前数,男生的数量超过了女生的数量,女生会感觉不安全,于是会大叫起来,为了构建和谐校园,安排队伍时应该避免这样的情况。请你计算出不会引发尖叫的排队方案的概率。(排队方案不同定义:当且仅当某个某个位置人不一样,如男生A、男生B ,与男生B、男生A ,2个排列是不同方案)原题SCOI...原创 2018-11-07 15:52:43 · 250 阅读 · 0 评论 -
卡特兰数的几种模型整理
CatnCat_nCatn表示卡特兰数的第nnn项,且存在关系:Catn=1n+1C2nn,CatnCatn−1=4n−2n+1Cat_n=\frac{1}{n+1}C_{2n}^n,\frac{Cat_n}{Cat_{n-1}}=\frac{4n-2}{n+1}Catn=n+11C2nn,Catn−1Catn=n+14n−2nnn边形的剖分凸n+2n+2n+2边形用n−...原创 2018-10-17 16:38:53 · 1266 阅读 · 0 评论 -
BZOJ 1485 [HNOI2009]有趣的数列【卡特兰大数任意模】
模数可以去任意值。做法原理就是把数分解分解。当然可以当作板子来记:#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define ll long long#define rep(i,x,y)...原创 2018-10-18 23:10:01 · 180 阅读 · 0 评论 -
简单记录一下费马小定理与欧拉定理
费马小定理如果ppp是质数,且gcd(a,p)=1gcd(a,p)=1gcd(a,p)=1,则有ap−1≡1 (mod p)a^{p-1} ≡ 1\ (mod\ \ p)ap−1≡1 (mod p)应用:求逆元已知ppp是质数,且gcd(a,p)=1gcd(a,p)=1gcd(a,p)=1,求aaa在模ppp意义下的乘法逆元。...原创 2018-11-09 20:51:23 · 293 阅读 · 0 评论 -
简单复习一下卢卡斯定理(Lucas)与二项式定理
若ppp是质数,则有:Cnm=Cn%pm%p∗C⌊np⌋⌊mp⌋&amp;nbsp;&amp;nbsp;&amp;nbsp;(mod&amp;nbsp;&amp;nbsp;p)C_n^m=C_{n\%p}^{m\%p}*C_{⌊\frac{n}{p}⌋}^{⌊\frac{m}{p}⌋} \ \ \ (mod\ \ p)Cnm=Cn%pm%p∗C⌊pn⌋⌊pm⌋&amp;nbsp;&a原创 2018-10-16 01:04:01 · 325 阅读 · 0 评论 -
「NOIP模拟」蒜头君的兔子【矩阵快速幂】
推一下矩阵就好了:#include &amp;amp;lt;cmath&amp;amp;gt;#include &amp;amp;lt;cstdio&amp;amp;gt;#include &amp;amp;lt;cstring&amp;amp;gt;#include &amp;amp;lt;iostream&amp;amp;gt;#include &a原创 2018-11-06 11:57:29 · 330 阅读 · 0 评论 -
NKOJ 营销策略【概率期望递推】
f[i][j]f[i][j]f[i][j]表示已经买了iii份儿童套餐,已经得到了jjj种不同的玩具的期望值,然后直接递推就好了:#include &amp;lt;cmath&amp;gt;#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt;iostream&原创 2018-10-15 18:14:09 · 408 阅读 · 0 评论 -
2018.10.14每天认真做一道数学(数论)题之ZOJ 3551 Bloodsucker【概率期望】【很详细】
题目翻译:一共有N个生物,其中有一个生物是吸血鬼,其余生物为人。每天这N个生物中的仅有两个生物会相遇,如果一个人类与吸血鬼相遇,人类有P的可能性变为吸血鬼。多组数据,对于每组数据,求N个人全部变为吸血鬼的数学期望。很显然的一道递推求数学期望的题。我们用f[i]f[i]f[i]表示当前已有iii个吸血鬼还差多少天全部变为吸血鬼的期望,显然得出:f[n]=0f[n]=0f[n]=0对于f[...原创 2018-10-14 21:43:32 · 220 阅读 · 0 评论 -
UVa 10288 Coupons【期望】【模拟】
Coupons很简单的题,因为好久没写题解了就水一篇假设当前已有kkk个不同物品,那么获得另一个不同的物品概率为n−kn\frac{n-k}{n}nn−k,那么获得下一个不同的物品的期望次数是nn−k\frac{n}{n-k}n−kn所以答案=nn+nn−1+...+n1=n∑i=1n1n=\frac{n}{n}+\frac{n}{n-1}+...+\frac{n}{1}=n\sum^{n}_{i=1}\frac{1}{n}=nn+n−1n+...+1n=n∑i=1nn1,最后答案以带分原创 2020-11-04 00:43:39 · 159 阅读 · 0 评论 -
(补)2018.10.10每天认真做一道数学(数论)题之NKOJ 3801 分解质因数【欧拉函数】
问题描述记P_i表示正整数i的质因数集合。已知正整数n,求满足下列条件的有序正整数对(a,b)的数目:(1)1&lt;=a&lt;=b&lt;=n(2)t为a,b的最大公约数,P_t是P_n的子集输入格式一个正整数n输出格式一个正整数,表示合题意的有序正整数对的数目.flag[i]flag[i]flag[i]表示PiP_iPi是否是PnP_nPn的子集,是的话f...原创 2018-10-15 19:27:37 · 301 阅读 · 0 评论 -
2018.10.13每天认真做一道数学(数论)题之NKOJ 3804「NOI2002」机器人M号【欧拉函数】【递推】
有毒。我连题目都翻译错了。代码基于题解:https://blog.csdn.net/Mogician_Evian/article/details/78230918#include &amp;lt;cmath&amp;gt;#include &amp;lt;cstdio&amp;gt;#include &amp;lt;cstring&amp;gt;#include &amp;lt原创 2018-10-13 22:59:05 · 219 阅读 · 0 评论 -
简单复习一下欧拉函数
欧拉函数是用来求小于nnn的正整数中与n互质的数的数目,用希腊字母φ(n)φ(n)φ(n)表示。对于常规求小于nnn的正整数中与nnn互质的数的数目,可以将小于nnn的数全部用gcdgcdgcd扫一遍,但是一次gcdgcdgcd的时间复杂度是O(logb)O(logb)O(logb),用gcdgcdgcd求φφφ的时间复杂度便是O(nlogb)O(nlogb)O(nlogb),而实际上我们可以实...原创 2018-10-13 12:03:53 · 244 阅读 · 0 评论 -
2018.10.15每天认真做一道数学(数论)题之BZOJ 2751 [HAOI2012]容易题(easy)【乘法原理】
既然直接考虑kkk个限制条件比较麻烦,我们不妨先考虑没有限制条件的结果。如果没有任何限制条件,那么每个位置都可以填1−&gt;n1-&gt;n1−>n中的任何数字,那么根据乘法原理有:ans=(n∗(n+1)2)mans=(\frac{n*(n+1)}{2})^mans=(2n∗(n+1))m然后我们再来限制条件带来的影响。假设限制条件一共限制了cntcntcnt个...原创 2018-10-15 02:52:48 · 274 阅读 · 0 评论 -
BZOJ P2301 [HAOI2011] Problem b【莫比乌斯】
f(n,m)=∑ni=1∑mj=1(gcd(i,j)==k)f(n,m)=∑i=1n∑j=1m(gcd(i,j)==k)f(n,m)=\sum_{i=1}^n\sum_{j=1}^m(gcd(i,j)==k)=∑nki=1∑mkj=1(gcd(i,j)==1)=∑i=1nk∑j=1mk(gcd(i,j)==1)=\sum_{i=1}^{\frac{n}{k}}\sum_{j=1}^{\fr...原创 2018-08-06 13:47:26 · 185 阅读 · 0 评论 -
BZOJ P2560 串珠子【状态压缩】【容斥原理】【详细题解】
f[s]f[s]f[s]表示集合sss中的每个点都与111号点连通的方案数,g[s]g[s]g[s]表示集合sss中的点任意连边的方案总数,包括不连边的情况。容易得到g[s]g[s]g[s]的递推关系(因为包括了不连边的情况所以要在c[i][j]c[i][j]c[i][j]后面+1+1+1):g[s]=∏i,j∈s(c[i][j]+1)g[s]=\prod _{i,j∈s}(c[i][j]+...原创 2018-10-08 19:15:29 · 277 阅读 · 0 评论 -
2018.10.18每天认真做一道数学(数论)题之BZOJ 1042 [HAOI2008] 硬币购物【背包DP】【容斥原理】
对于每个询问,答案显然为:S所有超过数量限制的方案数-c[1]c[1]c[1]超过限制的方案数-硬币c[2]c[2]c[2]超过限制的方案数-硬币c[3]c[3]c[3]超过限制的方案数-硬币c[4]c[4]c[4]超过限制的方案数+硬币c[1],c[2]c[1],c[2]c[1],c[2]超过限制的方案数+…+硬币c[1],c[2],c[3],c[4]c[1],c[2],c[3],c[4]c[1...原创 2018-10-18 15:01:54 · 215 阅读 · 0 评论 -
简单复习一下斯特林数与贝尔数
第一类斯特林数S2(n,m)S_2(n,m)S2(n,m)表示把nnn个元素划分为mmm个非空循环排列集合的方案数。S2(n,m)=S2(n−1,m−1)+(n−1)∗S2(n−1,m)S_2(n,m)=S_2(n-1,m-1)+(n-1)*S_2(n-1,m)S2(n,m)=S2(n−1,m−1)+(n−1)∗S2(n−1,m)第二类斯特林数S2(n,m)S_2(n,m)S2(...原创 2018-10-16 01:26:24 · 261 阅读 · 0 评论 -
BZOJ 2460 [BJOI2011] 元素【线性基】【贪心】【挖坑】
第一道线性基的题…还是比较简单的…挖个坑:改天补一篇线性基的学习笔记…显然,我们需要用线性基来维护我们选取的非空子集中不存在异或出结果为000的情况,但是我们还需要满足最后得到的权值最大。根据异或的性质我们不难想到可以根据贪心来求解:我们将每件物品按照权值从大到小排序(pairpairpair的小优势就体现出来了),然后不断插入线性基中累加答案。关键代码:#include &l...原创 2018-07-23 01:22:21 · 262 阅读 · 0 评论 -
BZOJ P4403 序列统计【组合数学】
题目分析:显然对于题目中所表示的范围:L~R只表示元素所能够取得的区间大小/长度,所以我们可以忽略区间元素本身的大小,只考虑元素可以去到多少个值。于是,我们就可以将题目中的:L~R 区间YY成一个压缩后的区间:1~(R-L+1),注意:这个区间的压缩是不影响最后结果的(当N固定,L=3,R=6与L=1,R=4意义是一样的)。这个时候就可以显然看出这个序列的每个元素的都有(R-L+1)种取值。这...原创 2018-05-28 17:51:56 · 262 阅读 · 0 评论 -
NKOJ P4261 跳【组合数学】
这道题其实也不是很难……我考试的时候用了逆元求组合数然后数组就炸掉了……考试之后想了想我考试的时候推出来的公式其实是可以只计算一次的……我们先考虑把表打出来(0,0)−&gt;(5,5)(0,0)−&gt;(5,5)(0,0)->(5,5): 1&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;&nbsp;&原创 2018-07-12 08:18:27 · 302 阅读 · 0 评论 -
BZOJ P3505 LOJ P2240 [CQOI2014] 数三角形【组合数学】
显然问题求解可以转化:求可以构成多少个三角形等价于在网格中任选三点的方案数减去三点共线的方案数。网格中任选三点的方案数根据组合数易得。现在考虑一下三点共线的方案数。首先我们仍然容易得到三点都是横着与竖着的情况,接下来我们只需要考虑横着的三点共线的方案数即可。枚举每个点(i,j)(i,j)(i,j),则(i,j)(i,j)(i,j)和(1,1)(1,1)(1,1)再与其他的一个点能共线的...原创 2018-07-26 13:44:14 · 216 阅读 · 0 评论 -
BZOJ P2425 [HAOI2010] 计数【组合数学】
#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#define ll long long#define rep(i,x,y) for(ll i=(x);i<=(y);i++)#define...原创 2018-09-26 22:58:05 · 160 阅读 · 0 评论 -
2018.10.19每天认真做一道数学(数论)题之BZOJ 1951 [Sdoi2010]古代猪文【数论板子】【欧拉定理】【Lucas】【CRT】
由题意:ans=q∑d∣nCnd (mod 999911659)ans=q^{\sum_{d|n}C_n^d}\ \ (mod\ \ 999911659)ans=q∑d∣nCnd (mod 999911659)由于999911659999911659999911659是一个质数,我们接下来分两类讨论:...原创 2018-10-19 09:03:21 · 212 阅读 · 0 评论 -
LOJ #2173.「FJOI2016」【组合数学】【第一类斯特林数】
显然,对于任意方案,始终存在一个最高的建筑在中间,我们以此来划分左右进行讨论。对于左边的AAA个建筑,我们先讨论这AAA个建筑的某一个建筑。由于这个建筑能够被看到,那么就说明这个建筑可能挡住了若干个建筑,我们把这若干个建筑的数目记为www,由于我们始终是看不到这www个建筑的,所以这www个建筑的排列对我们的答案无影响,而www个建筑的排列数目为w!w!w!。接下来我们转换一下。www的建...原创 2018-10-28 22:59:21 · 427 阅读 · 0 评论 -
2018.11.1每天认真做一道数学(数论)题之UOJ #273. BZOJ 4735【清华集训2016】你的生命已如风中残烛【组合数学】
“这道题怎么做啊…只会10%的状压啊”“wxh用状压过了”“…”然后我苦苦思索仍然无解,去膜了题解之后才弄懂。我们把这mmm个数都−1-1−1,于是变成了求这m!m!m!个排列中有多少排列满足所有前缀和≥0\geq 0≥0容易同加油站的题一样证明,这样满足条件的循环同构的解是惟一的。再考虑最底下一张牌,得出答案:ans=m!m+1−nans=\frac{m!}{m+1-n}ans=m+...原创 2018-11-01 16:02:22 · 281 阅读 · 0 评论 -
BZOJ P2111 Perm 排列计数【详细题解】【递推】【组合数学】
题目分析:其实并不是特别想要把这道题叫做DP,因为它更像一个简单的递推。 DP[I]表示I作更节点的时候的总方案数,我们考虑倒推,于是得到下面的状态转移(Size[I]表示子树I的大小): 由于P是质数,我们直接用Lucas处理组合数即可。关键代码:for(I=N;I&amp;amp;amp;amp;amp;amp;gt;=1;I--){ Size[I]=Size[I&amp;amp;amp;amp;amp;amp;lt原创 2018-06-07 21:40:15 · 405 阅读 · 1 评论