CSP初赛知识
基础知识
计算机基础
位
bitbitbit(比特)即二进制位
字节
1 byte1\ byte1 byte = 8 bit8\ bit8 bit
字长
字长指的是 CPU 一次性能并行处理的二进制位数,323232 位的计算机最多可以处理 323232 位数据
前后缀表达式
举例:
中缀表达式:1+(2+3)×4−51 + (2 + 3) × 4 - 51+(2+3)×4−5
前缀表达式:−+1×+2345- +1 × + 2 3 4 5−+1×+2345
后缀表达式:123+4×+5−1 2 3 + 4 × + 5 -123+4×+5−
前缀符号前移,后缀符号后移
转换步骤:
1、按照运算符的优先级对所有的运算单位加括号
2、将运算符移动到对应括号的前面(前缀表达式)或后面(后缀表达式)
3、去掉括号,得到前缀或后缀表达式
时间复杂度
主定理
设一算法的时间复杂度表达式为 T(n)=aT(nb)+f(nd)T(n) = aT(\frac{n}{b})+f(n ^ d)T(n)=aT(bn)+f(nd)
可以使用主定理计算时间复杂度
T(n)={O(nd) ...
正则表达式
基本操作符
.
匹配除了换行符外的单个字符
*
匹配前面的子表达式任意次,包括 0 次
+
匹配前面的子表达式任意次,不包括 0 次
代码格式
1234import rep = re.compile(r',.*')for one in p.findall(content) print(one)
compile 中 r 的作用是取消对字符串的转义,即不对 r 后的字符串进行任何处理
线段树
线段树是一种比较全能的区间维护算法
将一段区间的数据保留在一维数组中,根据需要递归查询
首先规定有这样一种二叉树形结构:
左右两个子节点分别保存父节点的区间从中点分割而成的左右两个区间的价值
左右两个子节点的编号分别为父节点的编号 pos * 2 和 pos * 2 + 1
这样就可以将一段区间的价值保存在一维数组中,但需要用到结构体保存树形结构的各项数据
1234struct Tree{ int l, r; // 区间的左右端点 int val; // 区间的价值}T[N];
建树过程如下:
1234567891011void build(int pos, int l, int r){ T[pos].l = l, T[pos].r = r; if(l == r){ T[pos].val = a[l]; // 说明到达叶节点,等于原本该点的数值 return ; } int mid = (l + r) >> 1; build(pos << 1, ...
高中物理模型碎记
万有引力
双星模型
双星的质量分别为 m1、m2m_1、m_2m1、m2, 它们间的距离为 LLL ,求各自半径大小 r1、r2r_1、r_2r1、r2 的大小以及比值,线速度 v1、v2v_1、v_2v1、v2 的大小以及比值,周期 TTT 的表达式
双星之间的向心力均为两者间的万有引力提供,则有:
Gm1m2L2=m1ω2r1\frac{Gm_1m_2}{L^2} = m_1ω^2r_1L2Gm1m2=m1ω2r1
Gm1m2L2=m2ω2r2\frac{Gm_1m_2}{L^2} = m_2ω^2r_2L2Gm1m2=m2ω2r2
得:m1r1=m2r2m_1r_1=m_2r_2m1r1=m2r2
r1+r2=Lr_1+r_2=Lr1+r2=L
r1=m2Lm1+m2r_1=\frac{m_2L}{m_1+m_2}r1=m1+m2m2L
r2=m1Lm1+m2r_2=\frac{m_1L}{m_1+m_2}r2=m1+m2m1L
r1r2=m2m1\frac{r_1}{r_2}=\frac{m_2}{m_1}r2 ...
hexo主题解决方案碎记
npm 报错
如果 Git 出现如下提示,则是 npm 版本问题
12345678[root@localhost VehicleExhaust_vue]# npm install ww-library-ve@1.1.68015 --savenpm ERR! code ETARGETnpm ERR! notarget No matching version found for ww-library-ve@1.1.68015npm ERR! notarget In most cases you or one of your dependencies are requestingnpm ERR! notarget a package version that doesn't exist.npm ERR! A complete log of this run can be found in:npm ERR! /root/.npm/_logs/2019-08-26T09_22_30_937Z-debug.log
解决方案是安装最新版本的 npm
代码如下:
1npm inst ...
差分约束
适用问题
差分约束算法主要解决求不等式组解的问题
将数学问题建立一个图论模型利用最短路解决
首先看一组不等式方程:
给出一组包含 mmm 个不等式,有 nnn 个未知数的形如:
{xc1−xc1′⩽y1xc2−xc2′⩽y2⋯xcm−xcm′⩽ym\begin{cases} x_{c_1}-x_{c'_1}\leqslant y_1 \\x_{c_2}-x_{c'_2} \leqslant y_2 \\ \cdots\\ x_{c_m} - x_{c'_m}\leqslant y_m\end{cases}
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧xc1−xc1′⩽y1xc2−xc2′⩽y2⋯xcm−xcm′⩽ym
的不等式组,求任意一组满足这个不等式组的解
算法核心
上述不等式移项可得:xcm⩽xcm′+ymx_{c_m}\leqslant x_{c'_m}+y_mxcm⩽xcm′+ym
类似于最短路中的三角形不等式:dist[y]⩽dist[x]+wx→ydist[y] \leqslant dist[x]+w_{x ...
算法竞赛模板
图论
Dijkstra
123456789101112131415161718192021bool vis[maxn];long long dis[maxn];typedef pair<int,int> pii;priority_queue<int,vector<pii>,greater<pii> > q;void findn(int a){ memset(dis,inf,sizeof(dis)); dis[a]=0; q.push(make_pair(0,a)); while(!q.empty()){ int s=q.top().second;q.pop(); if(vis[s]) continue; vis[s]=1; for(int i=head[s];i;i=edge[i].next){ int k=edge[i].to; if(!vis[k]&&dis[k]>dis[s]+edge[i].w){ dis[k]=dis[s]+edge[i].w ...
逆序对
归并排序求逆序对
在归并的过程中我们需要进行两个区间之间的比较
如果出现逆序对就要交换,因此在归并本身就可以直接求逆序对的个数
如果出现左区间中的某个数 i 大于右区间的某个数 j
那么我们由这个数可以得到 mid - i + 1 个逆序对
算入最终答案 ans 即可
1234567891011121314151617181920212223242526272829#include<bits/stdc++.h>using namespace std;const int N=5e5+15;int a[N],t[N];long long ans=0;int n;void Merge(int l,int r){ if(l>=r) return; int mid=(l+r)/2,k=l; Merge(l,mid),Merge(mid+1,r); int i=l,j=mid+1; while(i<=mid&&j<=r){ if(a[i]<=a[j]) t[k++]=a[i++]; else ...
神仙证法
微积分
极限
0.999…=1
证明:
令 0.999...=a0.999...=a0.999...=a,则 9.999...=10a9.999...=10a9.999...=10a
两式相减得到 9=9a9=9a9=9a 即 a=1a=1a=1
证毕
数论学习笔记
性质定理
辗转相除
(qn+r,n)=(r,n)(qn+r,n)=(r,n)(qn+r,n)=(r,n)
(a,b)=(a±b,b)=(a,b±a)(a,b)=(a\pm b,b)=(a,b\pm a)(a,b)=(a±b,b)=(a,b±a)
分数性质
分数一定为有限小数或者无限循环小数
若分母p含有质因数2和5,则肯定是有限小数
若分母p不含质因数2和5,则只需证明 mp\frac{m}{p}pm 可以写成 n999...\frac{n}{999...}999...n 的形式,那么该分数即为无限循环小数
先证明一个引理:
若p为质数且 p≥7p\geq7p≥7,则 9,99,999,...,999...999,99,999,...,999...999,99,999,...,999...99 中一定有p的倍数
用反证法证明:
若没有p的倍数,则有 ai≡aj(mod p)a_i\equiv a_j (mod\ p)ai≡aj(mod p) (ai>aja_i>a_jai>aj)
ai−aj≡999...9000...00≡0(mod p)a_i ...
