$补+写题ing$
第 1 章 快速幂
序列的第 k 个数
$solution:$
板子
A 的 B 次方
$solution:$
板子
[NOIP2013] 转圈游戏
$solution:$
板子
越狱
$solution:$
简单的容斥原理,$m^n-m\times \prod_{i=1}^{n-1} m-1$
第 2 章 质数
Prime Distance
$solution:$
先筛掉$[1,\sqrt{R}]$,然后在暴力即可。
质因数分解
$solution:$
暴力枚举
轻拍牛头
$solution:$
考虑直接加即可,因为可以将相同的数同时操作,时间$O(能过)$
Goldbach's Conjecture
$solution:$
板子
Sherlock and His Girlfriend
$solution:$
构造将质数染$1$,合数为$2$,为最优解,同时注意特判即可。
樱花
$solution:$
化简得$n!(x+y)=xy$,$xy-n!(x+y)=0$,$(n!)^2-n!(x+y)+xy=(n!)^2$
得$(n!-x)(n!-y)=(n!)^2$,因为$x,y\geq n!$,所以方案数即为$(n!)^2$的约数个数
第 3 章 约数
反素数 Antiprime
$solution:$
反素数肯定满足其分解质因数后约数个数呈不上升。通过剪枝优化即可过。
[NOIP2009] Hankson 的趣味题
$solution:$
$gcd(x,a0)=a1,lcm(x,b0)=b1$。求其$x$的方案数。
考虑将$lcm(x,b0)$形式化简,得$x=\frac{b1}{b0}\times gcd(x,b0)$。
考虑枚举$gcd(x,b0)$,因为$gcd(x,b0)$一定是$b0$的一个约数直接在$[1,sqrt{b0}]$中枚举约数$x$,在将其$b0/x$两个判断即可。
时间复杂度:$O(n\times \sqrt{b0})$。
X-factor Chain
$solution:$
将其$x$分解质因数后得$x=\prod_{i=1} p_i^{b_i}$ ,考虑答案的贡献,因为要将其最大所以第一次肯定选$x$的一个质因子。然后容易发现每次只要将一个没有用完的$b_i$使用$1$个即为最长长度,即$\sum_{i=1} b_i$。
考虑此最长长度模型的构建后,使用杨辉三角直接组合数即可。
[JLOI2014] 聪明的燕姿
$solution:$
通过约数和公式将其$[1,\sqrt{2\times 10^9}]$内的素数筛掉后,对于每个$x$直接枚举其因子与指数直接搜索求求解即可。
剪枝直接枚举其会产生两个质因数的情况,这是只要枚举当前$x$的$\sqrt{x}$。而只有$1$个的暴力判断即可。
第 4 章 同余问题
青蛙的约会
$solution:$
设最少在$F$次后碰面。
则$(x+Fm)-(y+Fn)\equiv0(mod\space L)$
转化可得$F(m-n)\equiv y-x(mod\space L)$
将$\equiv$转换成$=$,则$F(m-n)+GL=y-x$,将$m-n$为正数后$exgcd$解此方程即可。
[NOIP2012] 同余方程
link$solution:$
解$ax+by=1$,$exgcd$裸题。
Sumdiv
$solution:$
等比数列求和公式套乘法逆元即可。
曹冲养猪
$solution:$
$crt$模板题。
Strange Way to Express Integers
$solution:$
$excrt$模板题。
计算器
$solution:$
$BSGS$模板题。
荒岛野人
$solution:$
数据范围:$n\leq 15,M\leq 10^6$,这就是解题的关键。
暴力$M$,对于两个野人直接求解两个野人相遇时间。
五指山
$solution:$
$exgcd$模板题。
Biorhythms
$solution:$
$crt$模板题。
C Looooops
$solution:$
$exgcd$模板题。
第 5 章 矩阵乘法
矩阵 A×B
$solution:$
考验矩阵乘法的基本计算。
Fibonacci 第 n 项
$solution:$
矩阵乘法板子。
Fibonacci 前 n 项和
$solution:$
矩阵乘法板子
佳佳的 Fibonacci
$solution:$
考虑构造求解,设$g_i=\sum_{k=1}^i (n+1-k)\times f_i,s_i=\sum_{k=1}^i f_i$,答案即为$(n+1)\times s_n-g_n$。
矩阵快速幂即可。
Fibonacci
$solution:$
矩阵乘法板子
GT 考试
$solution:$
一道很有意思的题目。
考虑$dp$,设$f(i,j)$表示其现在在$A$串$i$位,且$A[i,j+1]$与$B[1,j]$完美匹配。
则$f(i,j)=\sum_{k=1}^{m-1} f(i-1,k)\times g(k,j)$。其中$g(k,j)$表示在$B$串$j$位后面加上$1$个数字$([0,9])$后其在于$B$串匹配为$j$的个数,可以理解为加上$1$个数字使得$B$串与$A$串的匹配长度从$k$变为$j$。
因为$|B|\leq 20$,所以求$g$时可以考虑暴力求解,还可以利用$kmp$快速求解。
直接矩阵优化$dp$即可。
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
inline int read(){
int f=,ans=;char c=getchar();
while(c<''||c>''){if(c=='-')f=-;c=getchar();}
while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
return f*ans;
}
const int M=;
int n,m,mod,nex[M],g[M][M];
struct Matrix{
int a[M][M];
void init(){memset(a,,sizeof(a));}
}G,F;
Matrix operator*(Matrix x1,Matrix x2){
Matrix x3;x3.init();
for(int i=;i<=m;i++){
for(int k=;k<=m;k++){
for(int j=;j<=m;j++) x3.a[i][j]+=x1.a[i][k]*x2.a[k][j],x3.a[i][j]%=mod;
}
}return x3;
}
Matrix ksm(Matrix a,int b){
Matrix ans;ans.init();
for(int i=;i<=m;i++) ans.a[i][i]=;
while(b){
if(b&) ans=ans*a;
a=a*a,b>>=;
}return ans;
}
char str[M];
int main(){
n=read(),m=read(),mod=read();
scanf("%s",str+);
nex[]=;int j=;
for(int i=;i<=m;i++){
while(j>&&str[j+]!=str[i]) j=nex[j];
if(str[i]==str[j+]) j++;
nex[i]=j;
}
for(int i=;i<m;i++){
for(int opt=;opt<=;opt++){
int j=i;
while(j>&&opt!=(str[j+]-'')) j=nex[j];
if(opt==(str[j+]-'')) j++;
g[i][j]++;
}
}G.init(),F.init();
for(int i=;i<m;i++)
for(int j=;j<m;j++) G.a[i+][j+]=g[j][i];
F=ksm(G,n);
int ans=;
for(int i=;i<=m;i++) ans+=F.a[i][],ans%=mod;
printf("%d\n",ans);
}
迷路
$solution:$
对于边权只含有$01$做法非常显然,直接矩阵快速幂即可。
而对于$边权\leq 9$的图,可以考虑对于每个点拆点.当全部跑完$u$拆过的点后才能到达$v$,然后就常规操作即可。
第 6 章 组合数学
[NOIP2011] 计算系数
$solution:$
$(ax+by)^k=\sum_{i=0}^k C_k^ia^ib^{k-i}x^iy^{k-1}$
2^k 进制数
$solution:$
若$w%k=0$时,数位为$\frac{w}{k}$,若不等,则为$\frac{w}{k}+1$,且最高位为$2^{w\mod k}-1$。
组合数计算即可。
组合
$solution:$
$lucas$模板题。
古代猪文
$solution:$
题意要求$G^{\sum_{i|n} C_n^i} \mod 999911659$。
瓶颈在这个式子$\sum_{i|n} C_n^i\mod 999911659$。
其实只有第一步比较难想。因为$999911659$是一个质数所以说若普通计算则时间直接爆炸。
考虑优化,根据费马小定理的$a^{p-1}\equiv 1(\mod p)$,所以$p-1$是$1$个循环节,直接求$G^\sum_{i|n} C_n^i\mod 999911658$。
下面做法就十分显然了,$999911658=2\times 3\times 4679\times 35617$,所以直接$lucas$下面的最后在用中国剩余定理合并即可。
这样可以保证$lucas$的时间不会超时。
牡牛和牝牛
$solution:$
插板,现将其每个空拿$k$个,然后插板组合数即可。
方程的解
$solution:$
插板裸题。
车的放置
$solution:$
一道简单题。
可以先处理两个矩形$(a\times b)(c\times d)$,最后会剩下$1$个$a\times d$的矩形。
所以只要考虑在$a\times b$的矩形中放k个棋子的方案数。
答案易得$C_a^k\times C_b^k\times k!$,$k!$是因为要相互随便匹配。
所以分成$3$个的就做完了。
所以$2$个就可以处理$(a\times b,(a+c)\times d)$两个矩形即可。
[CQOI2014] 数三角形
$solution:$
$ans=C_{(n+1)\times (m+1)}^3-((n+1)\times C_{m+1}^3+(m+1)\times C_{n+1}^3)-(斜边三点共线的方案数)$
所以只要求斜边三点共线的方案数即可。
性质:对于两点$(x_1,y_1),(x_2,y_2)$,则两点所连线段经过整点的个数为$gcd((x_2-x_1+1),(y_2-y_1+1))$。
证明:直接相似三角形即可。
所以就可以想出$O(10^{12})$的方法,枚举两个端点,求中间点的个数。
考虑优化,因为发现$gcd((x_2-x_1+1),(y_2-y_1+1))$只于距离有关,所以只要枚举距离然后计算对于此距离满足的方案数即可。
时间复杂度:$O(10^6)$.
Combination
$solution:$
$Lucas$板子题。
序列统计
$solution:$
考虑对于每个点加上其下标(即为插板时给每个点送$1$个,使得必须要选),就可以保证其序列为单调递增。
考虑当时长度为$len$,其权值范围为$[1+1,R-L+1+len]$。其可选权值为$R-L+len$。
所以对于长度为$len$,其答案为$C_{R-L+len}^{len}=C_{R-L+len}^{R-L}$。
设$R-L+1=M$,所以长度为$len$的答案为$C_{M+len-1}^{len-1}$
所以所有答案为$\sum_{i=1}^n C_{M+i-1}^{i-1}$。
然后发现此刻时间复杂度仍为$O(常数\times n)$。
根据杨辉三角的$C_i^j=C_{i-1}^{j-1}+C_{i-1}^{j}$,所以$\sum_{i=1}^n C_{M+i-1}^{i-1}$化简得$C_{n+M}^{M}-1$。
$lucas$求组合数即可。
[SHOI2015] 超能粒子炮・改
$solution:$
求$\sum_{i=0}^k C_n^i \mod 2333$的值。
成功又弱智了一次。
对于直接求,时间复杂度为$:O(Tn)$,考虑优化。
对于$C_i^j\mod 2333$,由$Lucas$定理可得,$C_i^j=C_{i\mod p}^{j\mod p}\times C_{\frac{i}{p}}^{\frac{j}{p}}$。$p$为模数。
所以$原式=F(n,k)=\sum_{i=0}^k C_{n\mod p}^i \mod 2333=C_{n/p}^0\times \sum_{i=0}^{p-1} C_{n\mod p}^i+C_{n/p}^1\times \sum_{i=0}^{p-1} C_{n\mod p}^i+……+C_{n/p}^{\frac{k}{p}-1}\times \sum_{i=0}^{p-1} C_{n\mod p}^i+C_{n/p}^{\frac{k}{p}} \sum_{i=0}^{n\mod p} C_{n\mod p}^i$
$=(\sum_{i=0}^{p-1} C_{n\mod p}^i)\times (\sum_{i=0}^{\frac{n}{p}-1} C_{k/p}^i)+C_i^{\frac{k}{p}} \sum_{i=0}^{n\mod p} C_{n\mod p}^i=f(n\mod p,p-1)\times F(n/p,\frac{k}{p}-1)+C_{n/p}^{\frac{k}{p}}\times f(n\mod p)$。
$Lucas$加预处理$f$即可。
时间复杂度$O(T\times log_{2333}^2 n)$
礼物
$solution:$
换句话说就是求$C_n^m \mod p$,其中$p$为任意整数。
$exlucas$即可。
网格
$solution:$
为什么要用数学,直接$dp$即可。
有趣的数列
$solution:$
对于奇数序列位置所填的数可以想成$($,偶数序列位置所填的数想成$)$。然后按照$1-2n$的排序,发现只要成合法括号匹配即为$1$种可行解。
所以即为$Cat_n$,直接质因数分解算即可。
树屋阶梯
$solution:$
从$3->5$发现这不就是卡特兰数吗。再将$4$画出,发现是$14$,正好是$Cat_4$,所以猜测为$Cat_n$。
若在有$k$阶梯高度上至少需要k个钢材,设$f_i$表示i高度的答案。$f_0=1,f_1=1$.
所以$f_n=\sum_{i=0}^{n-1} f_i\times f_{n-1-i}$。
因为可以去枚举左上角的木块高度,然后右下角的高度就确定了,且可以将其扩展即为$1$组解。
YBT 6 数学基础的更多相关文章
-
3D数学基础:四元数与欧拉角之间的转换
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点.本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 单位四元数可视化为三维矢量加上第四 ...
-
GIS的数学基础
在这里需要说明一点,任何领域的概念.技术都有其特定的适用范围,有其解决的问题,有其发展的历史,所以,抛开应用环境.范围来谈技术就像是没有根系的枝丫,枝丫再粗壮也只是一根木头而已. 那接下来我们来聊聊什 ...
-
机器学习的数学基础(1)--Dirichlet分布
机器学习的数学基础(1)--Dirichlet分布 这一系列(机器学习的数学基础)主要包括目前学习过程中回过头复习的基础数学知识的总结. 基础知识:conjugate priors共轭先验 共轭先验是 ...
-
【数学基础篇】---详解极限与微分学与Jensen 不等式
一.前述 数学基础知识对机器学习还有深度学习的知识点理解尤为重要,本节主要讲解极限等相关知识. 二.极限 1.例子 当 x 趋于 0 的时候,sin(x) 与 tan(x) 都趋于 0. 但是哪一个趋 ...
-
提升机器学习数学基础,这7本书一定要读-附pdf资源
文章发布于公号[数智物语] (ID:decision_engine),关注公号不错过每一篇干货. 来源 | KDnuggets 作者 | Ajit Jaokar 转自 | 新智元 编辑 | 大明 [编 ...
-
python基础系列教程,数学基础系列教程,数据分析系列教程,神经网络系列教程,深度学习系列视频教程分享交流
大家好,我是一个技术爱好者,目前对大数据人工智能很是痴迷,虽然学历只有高中,目前正在大踏步的向着人工智能狂奔,如果你也想学习,那就来吧 我的学习进度python基础(Numpy,pandas,matp ...
-
数学基础IV 欧拉函数 Miller Rabin Pollard&#39;s rho 欧拉定理 行列式
找了一些曾经没提到的算法.这应该是数学基础系最后一篇. 曾经的文章: 数学基础I 莫比乌斯反演I 莫比乌斯反演II 数学基础II 生成函数 数学基础III 博弈论 容斥原理(hidden) 线性基(h ...
-
视觉SLAM中的数学基础 第二篇 四元数
视觉SLAM中的数学基础 第二篇 四元数 什么是四元数 相比欧拉角,四元数(Quaternion)则是一种紧凑.易于迭代.又不会出现奇异值的表示方法.它在程序中广为使用,例如ROS和几个著名的SLAM ...
-
视觉SLAM中的数学基础 第三篇 李群与李代数
视觉SLAM中的数学基础 第三篇 李群与李代数 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对它们进行估计,因为SLAM整个过程就是在不断地估计机器人的位姿与地图.为了做这件事,需要对变换 ...
随机推荐
-
springMVC Aspect AOP 接口耗时统计
在接口开发中,我们通常需要统计接口耗时,为后续接口性能做统计.在springMVC中可以用它的aop来记录日志. 1.在spring配置文件中开启AOP <!--*************** ...
-
Elasticsearch5.0.1索引压测结果
说明 以下的所有指标均指的是某台机器的峰值 机器配置 cpu:12 core,32G,ES 分配JVM内存18G3台虚拟机,master.data共用shard:5,replica:1 试验时间:20 ...
-
JSP表单处理
当需要通过从浏览器获取一些信息,在许多情况下,最终给到Web服务器后台程序.浏览器使用两种方法将这些信息传递给Web服务器.这些方法是GET方法和POST方法. GET 方法: GET方法将追加到页面 ...
-
[课程相关]homework-03
零.准备工作 这次的作业是结对编程,因为一些原因我们的队伍一共有三个人,成员为:梁杰.夏天晗.谢祖三.由于大家不在一个班,交流起来也不是特别方便,所以我们经过讨论决定三个人约一个时间在一起完成这次作业 ...
-
【MFC初学】
void CMy322Dlg::OnButton1() { UpdateData(TRUE); m_crypt=m_plaintxt; for(int i=0;i<m_plaintxt.GetL ...
-
Vmware Tools is currently being installed on your system(转)
Follow the 3 Steps : Restore the /etc/issue file: sudo mv /etc/issue.backup /etc/issue* PS:在本人的PC上执行 ...
-
table自适应大小,以及内容换行
在table的样式中加入以下两个样式: table-layout: fixed; word-wrap:break-word;
-
insert into select的实际用法
INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table ...
-
app操作的一些命令
这里的操作都是在windows下,在android SDK安装好之后就可以连接实体手机或者模拟器操作 1.查看连接的手机或者模拟器 adb devices 结果如下: 2.查看某个app的包名和act ...
-
HTML:<;input type=";text";>;文本框不可编辑的方式
1.<input type="text" name="name" value="姓名" disabled /> 该方式显示的文本 ...