自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 大数据安装部分内容

mysql-connector-java-5.1.27-bin.jar 到/opt/module/hive/lib/目录下, 用于稍后启动 Hive 时连接MySQL。在/opt/module/hive-2.3.8/conf/目录下,修改hive-env.sh.template名称为hive-env.sh。解压 apache-hive-2.3.8-bin.tar.gz 到/opt/module/目录下。在/opt/module/hbase-1.3.1/conf/目录下,修改hbase-env.sh。

2023-06-30 21:40:29 742 1

原创 组合数学-next_permutation全排列

竞赛中关于排列问题可能会使用到next_permutation函数的一个全排列,但是仍然需要掌握基本的排列的递归写法,下面简单介绍一下用法。(直到如何使用即可)1.STL中的next_permutation 用法2.全排列的递归写法1.使用STL里面的函数进行全排列:(全排列前要需要排序才行)数字排序:#include<stdio.h>#include<algorithm>using namespace std;int main(){ char a[] = {1,2

2021-11-01 23:54:01 701

原创 算法思想-三分

我认为三分就是就是关于二分的延伸思想,二分用于求解线性的相关问题,三分用于求解单谷凹凸函数的最值问题。首先简述一下三分三分思想用于解决一类求解函数的极值的方法(单谷凹凸函数)有多种创建三分的方法,第一种相对来说更常用,其他的理解想法就行了。他们都是通过两者的值相比较,取其中一方,让 r 或 l 的值移动,进行区间缩小,找到函数顶点这是第一种创建三分的方法int ml = l + (r-l)/3;int mr = r + 2*(r-l)/3;if(f(ml) > f(mr) l = ml

2021-10-29 13:51:43 1070

原创 buctoj周赛(5)逃离(三分+思维)

题目可以参考官方题解这里补充一下子集的理解:这个题目的关键就是将问题转化成三分,如何转化这个模型呢?分为几种情况来考虑Δx 和 Δy 的值都增大的时候,面积 S 值一定单调递增Δx 和 Δy 的值都减小的时候,面积 S 值一定单调递减Δx 和 Δy 的值一增一减的时候,就要判断它的情况。这时候就要考虑 Δx 和 Δy 的变化率问题,如果 Δx 减小的变化率大,则面积 S 递减,但 Δx 减小的变化率小,那么面积 S 递增,那么一定会有最小面积在这两段中间,所以就可以三分来找答案。(其

2021-10-29 13:32:07 290

原创 BUCTOJ周赛(5)问题 E: 数学&(线性DP+LCS)

题目链接(题目好像现时,不过可以参考着学一下这种类型)这个题目是正常的线性动态规划问题,对于这个问题就是公共子序列和(ICS)的变形题目,所以就相当于是对线性dp的补充,在这再详细的解释一下动态方程。这个是北工大的官方题解,写的比较粗糙,只适合大佬阅读,所以我就简单补充一下自己的理解。动态规划问题关键在于列出动态方程,动态方程的关键在于考虑继承、更新以及初始化这些问题。那么如何考虑这些问题呢?首先说一下dp数组下标的含义,及解释用法:1.dp[i][j]表示第一行的第i个元素,第二行的j个

2021-10-28 22:29:21 212

原创 动态规划-线性dp

文章目录1.简介1.1 什么是动态规划?1.2什么时候使用动态规划2.斐波那契数列及延伸问题(dp引入)2.1斐波那契数列2.2问题引入2.21递归分治解决2.22利用记忆化搜索降低时间复杂度3.最短向下/上路径问题3.1数字三角形问题4.最长曼哈顿路径问题4.1 问题描述 LMP(Longest Manhattan Path)4.2利用动态规划解决4.3记忆化搜索4.4拓展问题5.最长上升子序列(LIS Longest Increasing Subsequence)5.1问题描述5.2 正常考虑思路5.3

2021-10-20 13:28:34 845

原创 hdu7131 Nun Heh Heh Aaaaaaaaaaa (字符序列匹配、线性dp)

字符串的匹配子序列问题题目链接首先区分一点子串(Substring)就是原串中连续的一部分子序列(Subsequnce)就是原串中任意抽出任意多个字符(可以不连续,但顺序不能改变)根据题意可知,需要删除原串中任意个字符后,能构成多少个,以"nunhehheh"为前缀,个数任意大于零个"a"为后缀的字符序列这个题目考虑一下,可以分为两步来求解前找出前缀的部分,然后找后缀 a 的个数并选任意个进行排列组合而寻找前缀和后缀的个数就是利用,前缀和 + dp 的思想来做对于dp的分类就是

2021-10-12 00:22:15 416

原创 数论-威尔逊定理

威尔逊定理概念: p可整除(p-1)!+1是p为质数的充要条件证明:1.充分性:如果p不是素数,当p = 4时,显然(p - 1) !≡ 6 ≡ 2 (mod p),当p > 4时,若p不是完全平方数,则存在两个不等的因数a,b使得a * b = p,则(p - 1) !≡ n * a * b ≡ 0 (mod p);若p是完全平方数即p = k ^ 2,因为p > 4,所以k > 2,k ,2 * k < p,(p - 1) !≡ n (k * 2 * k)

2021-10-11 17:04:33 345

原创 P3951 小凯的疑惑(exgcd+数论推导)

题目链接首先说这个题用到了 赛瓦维斯特定理已知a,b为大于1的正整数,gcd(a,b)=1,则使不定方程 ax+by=k 无负整数解的无法构成的最大整数 k=ab−a−b下面说明能更好理解式子,需要结合题目这么理解:设小凯必须拿 a 和 b 中的一个,那么它们不能构成的数就是 a*b (因为 ab = a 个 b,或者 b 个 a,在 a,b互质的情况下,ab只能由其中一个数来表示 ),所以当 a 和 b >= 1时,满足无法构成的最大数为 ab 。所以 a-1 和 b-1 >= 0

2021-10-09 21:53:08 1522 1

原创 拓展欧几里得定理的应用

扩展欧几里得定理的运用首先,先重复一下拓展欧几里得的内容:对于不全为 0 的整数a、b,一定存在一组解 x,y,使得 ax + by == gcd(a,b)先说一下这个定理的三个用处(但是小细节点和式子的变形式功能下面再说)1.求解不定方程2.求解线性同余方程3.求解模的逆元1.求解表达式 = 特解 + 通解已知有:ax + by = gcdax/gcd + by/gcd = 1acx/gcd + bxy/gcd = c设 X = xc/gcd Y = yc/gcd就有了 aX

2021-10-09 00:50:41 247

原创 UVA11582 巨大的斐波那契数!

今天发一道有关数论的思维题(卡精度很严的题)输入样例:31 1 22 3 100018446744073709551615 18446744073709551615 1000输出样例:121250提示:找规律,看精度。洛谷的题目,但是需要注册绑定UVA网站的账号,注册账号可以看这个博客...

2021-10-04 23:10:57 175

原创 数论-杨辉三角和二项式定理

杨辉三角与二项式定理一、杨辉三角简介:什么是杨辉三角?杨辉三角最本质的特征是,它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和。如下图:根据定理代码实现:memset(yh_triangle,0,sizeof(yh_triangle));for(int i = 0;i <= n;i++){ yh_triangle[i][0] = 1; //三角形左肩上的 1 for(int j = 1;j <= i;j++) yh_triangle[i][j] = y

2021-10-03 21:29:31 2517

原创 数论-质因数分解(最基础方法)

质因数分解的最简单方法(最好理解的方法)对于整数 m,其质因数分解过程如下步骤:(1)生成 2~sqrt(m) 内的所有质数的质数表。(线性筛)(小于m的质数会存储在 prime[] 数组中,知道作用即可,改日分享)(2)对于质数 pi,若m%pi = 0,while 循环执行,数组记录因子,记录因子个数加一,m = m/pi,反复执行1该步骤,直到 m%pi != 0。(3)若 m = 1,则质因数分解结束。代码实现:#include<stdio.h>int a[10001

2021-10-03 01:44:28 2100

原创 数论-详解快速幂

快速幂算法一步一步优化1.什么是快速幂算法例题引入A^B^ 的最后三位数表示的整数为?正常求法long long normalPower(long long base,long long power){ long long result = 1; for(int i = 1;i <= power;i++) { result = result*base; } return result%M;}//T = O(n) 取决于power ,但这里会出现问题,数据会溢出

2021-10-02 00:05:12 371 1

原创 数论-拓展中国剩余定理

这个算法需要看懂中国剩余定理会更好理解一点,求解思路是相同的,但方法不同拓展中国剩余定理:上面的定理是求 n 个数互质的情况,但题目有时候并不能保证 n 个数互质,这里就需要拓展中国剩余定理,虽然说和中国剩余完全不同,但是还是叫了这个名字。这个定理有两种推导方式,这里就介绍一种思想的一种方法。采用两两合并同余方程后取模的方法注意:互质的定义:两个正整数只有一个公因数1时,它们的关系叫做互质,如3和11互质首先列出正常的通式:x = a1(mod m1)x = a2(mod m2)…………

2021-09-29 23:26:09 211

原创 数论-大数阶乘

大数阶乘为了考虑精度问题,所以大数阶乘需要一个算法首先来看,100! = 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000所以一个 64位的 long long 型,数据存不下,所以需要考虑新的思路,利用数组来存储位数。考虑,一个位数上

2021-09-28 23:41:18 406

原创 数论-逆元

逆元1.什么是逆元?对于正整数 a 和 m,如果有ax = 1(mod m),那么方程中的 x 最小正整数解叫做模的逆元。2.为什么需要逆元当求解公式:(a/b)%m 时,因b可能会过小,会出现爆精度的情况,所以需变除法为乘法,然后乘法取模进行缩小数据范围。设c是b的逆元,则有b*c≡1(mod m);则( a/b )%m = ( a/b )1%m = ( a/b)bc%m = ac( mod m);即 a/b 的模等于 a*b 的逆元的模,所以就是为找出这个逆元;3.现在来看一个逆元最常见

2021-09-26 20:23:55 1218

原创 数论-乘法逆元【裴蜀定理+欧拉定理/费马小定理】

裴蜀定理定义:若a,b是整数,且gcd(a,b)= d,那么对于任意的整数x,y,ax+by 都一定是 d 的倍数,特别地,一定存在整数x,y,使 ax+by = d 成立。(根据拓展欧几里得定理得出 ax + by = gcd(a,b))这篇博客提到拓展欧几里的公式及推到一个重要推论是:a,b互质的充要条件是存在整数x,y使 ax+by = 1证明这里就不详细说了,参考博客:https://blog.csdn.net/leader_one/article/details/75298966推论

2021-09-24 23:37:32 787

原创 数论-欧拉定理及延伸

欧拉函数首先,没有欧拉函数是没有欧拉定理滴。对正整数n,欧拉函数是小于n的正整数中与n互质的数的数目( φ(1) = 1 )。它称为Euler’s totient function、φ函数、欧拉商数等。 例如φ(8)=4,因为1,3,5,7均和8互质。因为 8 = 222。φ(8) = 8*(1-1/2) = 4。如何求欧拉函数?p 与 x 互为质因数。当 x= 1 时,φ(1)=1当 x 为质数时,φ(x) = x-1否则,通式的实质是将 大于1的数是 x 公约数的数全部筛掉了。在欧拉

2021-09-23 22:21:26 501

原创 EOJ 4329 数论+精度问题(长记性)

做到一题卡精度比较严的题,一直以为是思路问题,最后发现是精度卡的比较死,题目不难。一个长记性的题,当考虑到精度问题时候,一定要考虑到底,不然思路正确,精度无法通过,就是 0。因为 a,b,n <= 109,所以两者只要相乘必须取模,减小精度,这点必须考虑。还有就是再次理解了 ksm 算法的含义,ksm 中的 a 值更替的目的是在 p 为奇数时,a 的值可以以某一个 2 的倍数形式乘上 res,达到在 2 的倍数范围内的一些次幂值的计算#include<stdio.h> //htt.

2021-09-11 12:05:40 160

原创 简单博弈论

巴什博弈(针对一堆物品的拿取)1、最基本的巴什博弈只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。1)最后先取光者获胜。2)最后先取光者失败。当然每个人都想获胜,所以每个人都会采取对自己有优势的最优的方法。显然,如果对于 n=m+1 个物品,那么由于一次最少能取1个,最多能取m个,所以无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。即如果n = m + 1; 我们假设第一个人拿走了k个, 还剩下 m + 1 - k。 因为1<=(m + 1 -

2021-09-10 18:30:52 1020

原创 hdu Dream(6440)(小费马定理)

这个题目的理解就是很不nice,大概意思就是让你重新定义一个 加法 和 乘法 ,使得满足 (m+n)p = mp + np 。根据小费马定理有:np (mod p) = n然后有:(m+n)p (mod p) = (m+n) (mod p)也有:mp + np = m (mod p) + n (mod p)然后二者就相等,重新定义的加法就是 m (mod p) +n(mod p) ,乘法就是 (m+n) (mod p)#include<stdio.h>int main(){...

2021-09-07 18:33:05 201

原创 hdu Find Integer (6441)(大费马定理)

题目大意为,给你 a,n 的值,让你找出是否有 b,c 满足方程 an + bn = cn ,典型的定理内容。long long型一一寻找即可:#include<stdio.h>int main(){ int t; scanf("%d",&t); while(t--) { long long n; int a; scanf("%lld %d",&n,&a); if(n > 2){ printf("-1 -1\n");conti..

2021-09-07 18:14:38 134

原创 数论-费马定理及延伸

费马小定理:当 p 为质数,a为自然数时,且 a < p(当 a > p 时,需要先取模运算) ,有:ap-1 = 1 (mod p)ap = a (mod p)例:331 (mod 7) = ? —》 36*5*3 —》 36(mod 7) == 1 —》 331 = 32925 (mod 11) = ? —》 (29 mod 11)25 (mod 11) —》 725 (mod 11) —》 722*7 —》 2925 = 7费马

2021-09-06 22:03:04 358

原创 数论-中国剩余定理(模数互质的同余方程组)

求同余方程组(中国剩余定理)在《孙子兵法》中有一这样问题:“今有物不知其数,三三数之剩二(除以3余2),五五剩值三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题解法称为中国剩余定理。具体分三步:1.找出三个数:3和5公倍数中找出被7除余1的最小数为15,从3和7的公倍数中找出被5除余1的最小数为21,最后从5和7的公倍数中找出除3余1的最小数70。2.用15乘2(得到30的是除7余2的最终结果),用21乘3(得到的63是除5余2的最终结果),用70乘2(140

2021-08-10 00:02:37 1649

原创 图论-迷宫(基础模板)

样例32....3....##...3.#.#.....输出210这题分析过就知道是最简单的迷宫模板题,写不出来,直接给我气死。。。。。。。现在写迷宫题的模板思路(dfs)1.创建地图(map数组构建 和 vis数组初始化)2.入栈的初始化(第一次入栈,e = s = 1)3.不同方向进入dfs( for 循环进入,数组来表示方向)4.结束条件 和 障碍、已走过条件 判定(if(x == n && y == n)到终点。if(范围 &a.

2021-08-09 12:43:06 222

原创 使用memset()函数初始化二维数组

【注意事项】1.二维整型数组直接利用 memset() 函数初始化时,只能初始化为 0 或 -1 ,否则将会被设为随机值。2.二维 char 型数组利用 memset() 函数初始化时不受限制,可以初始化任意字符。二维整型数组#include<stdio.h>#include<string.h>int main(){ int a[10][10]; memset(a,0,sizeof(a)); for(int i = 0;i < 10;i++) { fo

2021-08-09 12:26:09 20521 2

原创 数论-取模

取模问题一、取模运算二、复数取模一、取模运算1.取模加减乘除法(a + b)%M = (a%M + b%M)%M(a - b)%M = (a%M - b%M + M )%M (a%M - B%M 后的值一定小于M)(a * b)%M = (a%M)*(b%M)%M下面两种方法都用到了取模加减乘乘除运算,才能有下面两种方法的快速运算2.快速幂260 >= long longtypedef long long ll;ksm(ll a,ll p){ ll res = 1.

2021-08-07 12:48:27 1126

原创 杭电 7007 净化(圈数遍历、思维)

这道题我感觉是一道模板题,以后肯定会碰到类似解法的题目。题目要找每圈的一个固定值,而且还要特判第一圈刚加上来的值。从这两方面考虑的话,寻找第一圈的最大值,但并不限于第一行。根据题意,如果满足,那么在前两行一定会出现最大值。让 m 减去最大值之后,表示除去第一次走的,剩下的圈数每回的起点就是最大值之后的点,终点在下一行的最大值点。(如果最大值等于走一圈的的值,那么就等同于多减了一圈,所有的圈数的起点相同,第一行可能前半部分 < 0 舍去)这里还需要特判,我只说一种情况的理解:在第二行增量为 ..

2021-08-06 11:48:07 80

原创 杭电联赛六 7034 Array

我认为这道题最大的难度就是题意的理解。1.数学中的单词难理解。(多查数学单词的多种意思)2.就是条件确立的情况难理解。(可能是数学方面的原因,需要再多一些考虑)一、 any 表示任意 倒A二、if and only if 1.当且仅当 2.充要条件(A if and only if B <=> A、B条件同时成立或否定,且范围相同) 其他的这道题没有难度,虽然没有AC,但是学到了一些东西,先贴代码随后再改。#include<stdio.h>int m...

2021-08-06 09:47:17 89

原创 杭电联赛一 6950.Mod, Or and Everything(打表、思维)

bitwise OR : 按位或 bitwise AND : 按位与 这道题,容易模拟的取模和位操作,可以按思路为打表得到规律 然后,随便带

2021-08-05 11:35:21 102

原创 数论-素数筛

一般单个筛选素数O(nloglogn)int prime(int a){ for(int i = 1;i <= a/i;i++) { if(a%i == 0) return i; } return a;}埃式筛:用于一连串的素数筛选int prime(int a){ bool prime[100001] = {false}; for(int i = 2;i <= n;i++) { if(!prime[i]) { printf("%d\n",i)

2021-07-31 22:26:42 125

原创 背包问题(01、完全、多重、混合)

1.01背包2.完全背包3.混合背包4.混合背包背包问题最开始理解可以解决贪心解决不了的采药问题,采用动态规划。不好理解的地方在于动态方程。01背包f[i][j] = max(f[i-1][j],f[i-1][j-v]+w); //左表示不要这个物品,右表示要这个物品01背包的动态规划方程#include<iostream>#include<algorithm>using namespace std;int n,m;int f[100.

2021-05-06 20:41:40 98

原创 P1036 [NOIP2002 普及组] 选数

题目描述题目在此已知 n 个整数 x1,x2,…,xn,以及11个整数 k (k < n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n = 4,k = 3 , 4个整数分别为3,7,12,1时,可得全部的组合与它们的和为:3+7+12=23+7+19=27+12+19=33+12+19=3现在,要求你计算出和为素数共有多少种。例如上例,只有一种的和为素数:3+7+19=2。输入格式键盘输入,格式为:n , k (1 <= n <= 20 ,

2021-04-24 10:45:52 2653

原创 PAT (Basic Level) 1053 长记性题

1053 住房空置率 (20 分)在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:在观察期内,若存在超过一半的日子用电量低于某给定的阈值 e,则该住房为“可能空置”;若观察期超过某给定阈值 D 天,且满足上一个条件,则该住房为“空置”。现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。输入格式:输入第一行给出正整数 N(≤1000),为居民区住房总套数;正实数 e,即低

2021-02-23 12:20:51 69

原创 PAT (Basic Level)1049 【测试点2】的问题、简化算法思路

1049 数列的片段和 (20 分)给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这 10 个片段。给定正整数数列,求出全部片段包含的所有的数之和。如本例中 10 个片段总和是 0.1 + 0.3 +

2021-02-22 00:09:47 336 1

原创 PAT (Basic Level) 1045 柳婼、旭神两大思路分析【测试点】样例

1045 快速排序 (25 分)著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定划分后的 N 个互不相同的正整数的排列,请问有多少个元素可能是划分前选取的主元?例如给定 N=5N = 5N=5, 排列是1、3、2、4、5。则:1 的左边没有元素,右边的元素都比它大,所以它可能是主元;尽管 3 的左边元素都比它小,但其右边的 2 比它小,所以它不能是主元;尽管 2 的右边元素都比它大,但其左边

2021-02-19 01:24:06 460

原创 快排之C语言(各种数据的排序)

关于快排的一些小问题1.快排是不稳定的,这个不稳定一个表现在其使用的时间是不确定的,最好情况(O(n))和最坏情况(O(n^2))差距太大,我们一般说的O(nlog(n))都是指的是其平均时间2.快排是不稳定的,这个不稳定表现在如果相同的比较元素,可能顺序不一样,假设我们有这样一个序列,3,3,3,但是这三个3是有区别的,我们标记为3a,3b,3c,快排后的结果不一定就是3a,3b,3c这样的排列,所以在某些特定场合我们要用结构体来使其稳定(<6>的例子就是说明这个问题的)3.快排的

2021-02-19 01:19:38 242

转载 七大查找算法中的4个简单算法(附C语言代码实现)

转自:http://www.cnblogs.com/leezx/p/5719012.html阅读目录1、顺序查找2、二分查找3、插值查找4、斐波那契查找5、树表查找6、分块查找7、哈希查找查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。树表查

2021-02-15 16:46:43 582

原创 PAT (Basic Level) 1020 【测试点 2和3】+解析 + 坑点

1020 月饼 (25分)月饼是中国人在中秋佳节时吃的一种传统食品,不同地区有许多不同风味的月饼。现给定所有种类月饼的库存量、总售价、以及市场的最大需求量,请你计算可以获得的最大收益是多少。注意:销售时允许取出一部分库存。样例给出的情形是这样的:假如我们有 3 种月饼,其库存量分别为 18、15、10 万吨,总售价分别为 75、72、45 亿元。如果市场的最大需求量只有 20 万吨,那么我们最大收益策略应该是卖出全部 15 万吨第 2 种月饼、以及 5 万吨第 3 种月饼,获得 72 + 45/2 =

2021-02-06 13:01:17 482

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除