数学小知识点整理(TBC)
文章目录
前言
感觉距离scoi2019scoi2019scoi2019的时间不多了博主因为太弱所以现在慌得一批,现在尝试梳理一些小知识点顺便复习。
素数与同余
线性筛部分
常识向,直接贴代码了,大佬们手动跳过吧。
最常用的是线性筛质数。
同时有两种常用的可以线性筛预处理的函数:莫比乌斯函数,欧拉函数。
线性筛代码:
typedef long long ll;
ll prime[N],pri[N],cnt=0,mu[N],phi[N];
inline void init(int len){
mu[1]=phi[1]=1;
for(int i=2;i<=len;++i){
if(!pri[i])prime[++cnt]=i,mu[i]=-1,phi[i]=i-1;
for(int j=1;i*prime[j]<=len;++j){
pri[i*prime[j]]=1;
if(i%prime[j]==0){
phi[i*prime[j]]=phi[i]*prime[j];
mu[i*prime[j]]=0;
break;
}
mu[k]=-mu[i];
phi[k]=phi[i]*(prime[j]-1);
}
}
}
素数

线性递推逆元

指数循环节降幂

当求逆元时模数与求逆元的数有可能不互质时的处理方法

一个神奇的结论
有个结论,对于 m >= 2,与m的互质的数的和为m * phi (m) / 2
拓展欧拉定理

杂乱的一些性质/技巧
二进制枚举子集
这是一个用循环实现的快速枚举子集的方法,代码如下:
for(int i=s;i;i=s&(i-1))
异或前缀和
一个蒟蒻博主听说可以打表证明的性质:
sumi=i,i≡0mod  4sum_i=i,i\equiv0 \mod4sumi=i,i≡0mod4
sumi=1,i≡1mod  4sum_i=1,i\equiv1 \mod4sumi=1,i≡1mod4
sumi=i+1,i≡2mod  4sum_i=i+1,i\equiv2 \mod4sumi=i+1,i≡2mod4
sumi=0,i≡3mod  4sum_i=0,i\equiv3 \mod4sumi=0,i≡3mod4
感觉挺有用的
O(n)预处理popcount
popcount(x)popcount(x)popcount(x)指xxx在二进制形式中二进制位为111的数量。
直接处理是O(logx)O(log_x)O(logx)的,但是可以O(amax)O(a_{max})O(amax)预处理。
代码:
for(int i=1;i<=lim;++i)Popcount[i]=Popcount[i>>1]+(i&1);
原理很简单(逃
多项式一类
因为太多之前特意写了一篇博客 才不是骗访问量呢
组合数学
卡特兰数通项
Catn=C2nn−C2nn−1=C2nnn+1Cat_n=C_{2n}^n-C_{2n}^{n-1}=\frac{C_{2n}^n}{n+1}Catn=C2nn−C2nn−1=n+1C2nn
斯特林数
两类可以用fftfftfft预处理做到O(nlogn)O(nlogn)O(nlogn)
但是一般都只用O(n2)O(n^2)O(n2)(雾
下面给出递推式:
第一类斯特林数递推式:



第二类斯特林数递推式:



错排公式
看了这道题你就懂了。
递推式:fi=(i−1)(fi−1+fi−2)f_i=(i-1)(f_{i-1}+f_{i-2})fi=(i−1)(fi−1+fi−2)
二项式反演
fn=∑i=0n(ni)gif_n=\sum_{i=0}^n\binom{n}{i}g_ifn=∑i=0n(in)gi
=>gn=∑i=0n((−1)i(nn−i)fi)g_n=\sum_{i=0}^n((-1)^i\binom{n}{n-i}f_i)gn=∑i=0n((−1)i(n−in)fi)
可以看这道题简单体会一下。
数学小知识点整理(TBC)的更多相关文章
- 求职之C++小知识点整理
1.顺序容器 1.顺序容器:vector,deque,list,forward_list,array,string.其中除list和forward_list外,其它都支持快速随机访问. deque a ...
- Oracle数据库小知识点整理
-- 数据库存储数据 -- 市面上主流的数据库有哪些 -- 甲骨文 oracle mysql -- IBM db2 金融 -- 微软 sqlserver --这些是关系型数据库. -- ...
- 一些js小知识点整理
string.substring(a,b) 从a点开始截取,到b点结束 string.substr(a,b) 从a点开始截取,截取b个 BOM的四个对象,navigator.screen.l ...
- Django小知识点整理
一.Django中Choices字段显示中文的两种方式 1.get_xxxx_display():这种方式只能针对对象来使用 {% for row in server_list %} <li&g ...
- 【转】HTML5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于<h ...
- html5的小知识点小集合
html5的小知识点小集合 html5知识 1. Doctype作用?标准模式与兼容模式各有什么区别? (1).<!DOCTYPE>声明位于位于HTML文档中的第一行,处于< ...
- kafka知识点整理总结
kafka知识点整理总结 只不过是敷衍 2017-11-22 21:39:59 kafka知识点整理总结,以备不时之需. 为什么要使用消息系统: 解耦 并行 异步通信:想向队列中放入多少消息就放多少, ...
- JS知识点整理(二)
前言 这是对平时的一些读书笔记和理解进行整理的第二部分,第一部分请前往:JS知识点整理(一).本文包含一些易混淆.遗漏的知识点,也会配上一些例子,也许不是很完整,也许还会有点杂,但也许会有你需要的,后 ...
- activity生命周期知识点整理
activity生命周期知识点整理 Activity: 是一个应用组件,用户可与其提供的屏幕进行交互.窗口通常会充满屏幕,但也可以小于屏幕并浮动在其他窗口之上. 一个activity的什么周期: 启动 ...
随机推荐
- 微信小程序开发——点击按钮获取用户授权没反应或反应很慢的解决方法
异常描述: 点击按钮获取用户手机号码,有的时候会出现点击无反应或很久之后才弹出用户授权获取手机号码的弹窗,这种情况下,也会出现点击穿透的问题(详见:微信小程序开发——连续快速点击按钮调用小程序api返 ...
- vue params和query传参区别
参考地址:https://blog.csdn.net/bluefish_flying/article/details/81011230 router.js中 路由设置这里, 当你使用params方法传 ...
- 修复python命令行下接收不到参数的问题
由于之前安装过多个python版本,导致出现了在命令行下直接给py文件传递参数的时候接收不到,即使重新卸载安装也没有解决. 解决办法: 修改如下图路径下的键值为:"D:\Python27\p ...
- bootstrap之双日历时间段选择控件—daterangepicker(汉化版)
jQuerybootstrapdaterangepicker汉化版 双日历时间段选择插件 — daterangepicker是bootstrap框架后期的一个时间控件,可以设定多个时间段选项,也可以自 ...
- 微信小程序 循环列表添加点击事件和样式
如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 <input/> 中的输入内容,<switch/> 的选中状态),需要使 ...
- HashMap从源码分析数据结构
1. HashMap在链表中存储的是键值对 2. 数组是一块连续的固定长度的内存空间,再好的哈希函数也不能保证得到的存储地址绝对不发生冲突.那么哈希冲突如何解决呢?哈希冲突的解决方案有多种:开放定址法 ...
- Oracle管理表空间和数据文件详解
介绍 表空间是数据库的逻辑组成部分 从物理上将:数据库数据存放在数据文件中 从逻辑上将:数据库则是存放在表空间中 表空间由一个或是多个数据文件组成 数据库的逻辑结构 介绍: Oracle中逻辑结构包括 ...
- js拷贝指定内容到剪切板
function copyTextToClipboard(text) { var textArea = document.createElement("textarea"); te ...
- javascript DOM基础操作
DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...
- centos7更换镜像源
更换软件源 由于国外的软件源在yum 安装时比较慢,更换为国内的源,以阿里的源的更换方式 下载wgetyum install wget -y echo 备份当前的yum源mv /etc/yum.rep ...