数学
Layne...
遇事不决,可问春风
展开
-
求逆序对(归并排序 / 树状数组)
逆序对: 对于给定的一段正整数序列,逆序对就是序列中 ai > aj 且 i < j 的有序对。(逆序数的求法至少有三种:枚举法、分治法、树状数组。下面说说分治法。。。)树状数组的做法以及离散化等内容见洛谷题解:P1908 逆序对 题解归并排序解法(分治法):归并排序(merge sort)是建立在归并操作上的一种有效的排序算法。 该算法是采用分治法(Divide and C...原创 2019-03-23 19:37:03 · 577 阅读 · 0 评论 -
矩阵快速幂及矩阵构造
矩阵快速幂主要用于求一个很复杂的递推式的某一项问题。Code:typedef long long ll;const int N = 2;const ll mod = 1e9 + 7;struct Matrix { //结构体,矩阵类型 ll m[N][N]; Matrix() { memset(m,0,sizeof(m)); } frie...原创 2020-03-18 00:02:32 · 391 阅读 · 0 评论 -
试题H:拯救阿拉德大陆(容斥原理+二进制枚举)
题解上述题意其实就是求1~n中有多少个是所给四个数字的倍数。#include<bits/stdc++.h>using namespace std;typedef long long ll;ll lcm(ll a,ll b){return a/__gcd(a,b)*b;}int main(){ ll n,a[4],ans=0; cin>>n&...原创 2020-03-08 18:08:53 · 333 阅读 · 0 评论 -
最大间隙(线性时间算法——鸽笼原理)
题目描述:给定n个实数 x1 , x2 , … , xn ,求这n个数在实轴上相邻2个数之间的最大差值。假设对任何实数的下取整方法耗时O(1),设计解最大间隙问题的线性时间算法。对于给定的n个实数 x1 , x2 , … , xn ,计算它们的最大间隙。Input输入数据的第一行有1个正整数n ( 1 < n ≤ 200000 )。接下来的1行是n个实数 x1 , x2 , … , ...原创 2019-04-29 13:39:23 · 3380 阅读 · 5 评论 -
枚举子集:二进制枚举
二进制枚举主要运用在求某一集合的所有子集这一算法中,利用二进制只有1和0的特点去代表取和不取两种状态。for(int i=0;i<1<<n;i++){//枚举每一种状态 for(int j=0;j<n;j++){//枚举当前状态下二进制的每一位 if(i&(1<<j))//或 if(i>>j&1),判断i的二进制数从右数第j...原创 2020-03-02 21:48:29 · 686 阅读 · 0 评论 -
快速乘
问题:如何求解如下所述情况时的 a*b%mod(a、b、mod均在longlong范围内,但当a * b时会爆longlong)一、快速乘【复杂度为O(log)】当a*b爆longlong时,就不能直接去算了,此时可以用快速乘求解快速乘与快速幂的思想基本一致,都是把b转化为二进制,a * b转化为多个式子相加的形式,在计算机中加法运算比乘法运算快。*快速乘核心代码如下:LL Qui...原创 2019-07-19 22:58:45 · 426 阅读 · 0 评论 -
B.宝可梦中心大对决!(枚举n个元素的子集:dfs法和二进制法)——Comet OJ - 2019六一欢乐赛
题目链接:(https://www.cometoj.com/contest/42/problem/B)赛后题解说这是道简单算法题,不过当时并没做出来,没有想到用dfs深搜去枚举所有的组合情况的暴力方法。(菜是原罪~~)题目:大致题意:给定n(n<=14)个数,请问最多能选几个数,使得选上的数满足任两数互质。注:两个数字互质当且仅当他们没有 1 以外的正公因数。提示:对于样例中第...原创 2019-06-02 23:48:41 · 370 阅读 · 0 评论 -
全排列和组合
深搜dfs实现逆康托展开实现待补充原创 2019-05-29 14:42:37 · 157 阅读 · 0 评论 -
康拓展开及逆康拓展开
概念:康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。(百度百科)康拓展开:给定一个全排列序列,求该序列是所有全排列序列中字典序第几的序列公式如下:其中, a[i] 为整数,并且 0<=a[i]<i,1<=i<=n。a[i]表示位于位置i后面的数小于a[i]值的...原创 2019-05-29 14:24:38 · 341 阅读 · 2 评论 -
高精度模板
- 计算大数的阶乘:#include<stdio.h>#include<string.h>#define MAX 3000int a[MAX];//用来存储阶乘后的数void Big_factorial(int n){ memset(a,0,sizeof(a));//先将数组a所有的空间都初始化为0 a[0]=1; //1的阶乘 int ...原创 2019-03-21 15:47:37 · 134 阅读 · 0 评论 -
快速幂及快速幂求模(模板)【时间复杂度O(logN)】
- 快速幂模板:#include&amp;lt;stdio.h&amp;gt;int Quick_pow ( int a, int b ) { int ret = 1; while ( b ) { if ( b &amp;amp; 1 ) ///判断奇数 ret = ret * a; a = a * a; b &amp;gt;&amp;gt;= 1原创 2019-05-01 15:16:20 · 539 阅读 · 0 评论 -
韩信点兵(中国剩余定理)
Description(Time Limit: 400/100 MS (Java/Others))韩信带兵出战,带了1亿大军,战死了一部分人,活着的士兵站ai人一排就会多出bi人,现在给出所有的ai和bi,问最少还有多少士兵存活着?Input多测试用例,每个测试用例的的第一行:n,接下来有n行,每行包括两个数ai和bin ≤ 20 , 1 < ai ≤ 1000 , 0 ≤...原创 2019-05-12 10:59:39 · 971 阅读 · 0 评论 -
完全数
如果一个数恰好等于它的因子之和,则称该数为“完全数” 。各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。(第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等)梅森素数:古希腊数学家欧几里得在名著《几何原本》中证明了素数有无...原创 2019-04-21 17:59:16 · 351 阅读 · 0 评论 -
乘法逆元
题目:P3811 【模板】乘法逆元题解:P3811 【模板】乘法逆元 题解博客:乘法逆元博客:逆元总结链接:[洛谷日报第30期]浅谈乘法逆元转载 2019-05-01 15:10:00 · 431 阅读 · 0 评论 -
素数判定以及筛法和费马小定理素性测试
- 单个素数的判定(6的倍数相邻法):#include <stdio.h>#include <math.h>///floor函数的头文件int isPrime(int n){ //返回1表示判断为质数,0为非质数,在此没有进行输入异常检测 float n_sqrt; if(n==2 || n==3) return 1; ...原创 2019-04-26 08:56:35 · 513 阅读 · 1 评论