自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (3)
  • 收藏
  • 关注

原创 乘法的逆元和费马小定理

乘法的逆元和费马小定理同余运算乘法逆元逆元和我们平时所说的倒数是有一定的区别的,我们平时所说的倒数是指**:a*(1/a) = 1**,那么逆元和倒数之间的区别就是:假设x是a的逆元,那么 a * x = 1(mod p),也就是只多了一个取余的操作,这个取余的操作,就会保证a的逆元不一定只是a的倒数。那么我们的逆元有什么作用呢?费马小定理需要注意:a的逆元为 a^(p-2) mod p求 a ^ (p-2)一般会适用快速幂,因为p一般是个很大的数...

2020-06-08 21:37:18 236

原创 P1313 计算系数 - 小费马定理

P1313 计算系数https://www.luogu.com.cn/problem/P1313题意想法来源于:yxc// P1313 计算系数// Created by majoe on 2020/6/8.//https://www.luogu.com.cn/problem/P1313#include <bits/stdc++.h>using namespace std;const int mod = 10007;//快速幂int qmi(int a, in

2020-06-08 21:36:05 219

原创 生成树 : P1656 炸铁路

P1656 炸铁路https://www.luogu.com.cn/problem/P1656题意n个城市,m条铁路只有一发炮弹,炸某一条路。让其不成互相连接输出 必须按照 a 从小到大排序输出;如果a 相同,则根据 b从小到大排序。1 25 6想法生成树+遍历遍历每一条边,如果删除是否能够变为一个生成树//// Created by majoe on 2020/6/3.//#include <bits/stdc++.h>using namespace s

2020-06-03 16:56:52 249

原创 二分图原理及应用

二分图什么是二分图?G=(V, E),其中G代表图,V代表这个图的所有顶点的集合,E代表这个图所有连线的集合,即是边集。现如今如果能将V这个顶点集分成两个互不相交的子集A、B,E这个边集内所有边的两个顶点分别属于*A、B两个子集的话,我们就称这个图为二分图。要点无向图所有点分成A,B两个不相交的集合所有边,都在着两个集合之间。同一个集合不能有边。二分图应用如何检测二分图? 染色二分图最大匹配?匈牙利算法如何检测二分图?染色法如果我们能够把图中的所有顶点分成两部分,

2020-06-03 11:32:19 3848 4

原创 最短路:算法基本原理和比较

最短路基本原理和比较总体而言,对于一个n点m条边的图来说。最短路分为:单源和多源。按适用条件划分如下:需要注意的事项和基本原理Dijkstra-朴素O(n^2) 初始化距离数组, dist[1] = 0, dist[i] = inf; for n次循环 每次循环确定一个min加入S集合中,n次之后就得出所有的最短距离 将不在S中dist_min的点->t t->S加入最短路集合 用t更新到其他点的距离Dijkstra-堆优化O(ml

2020-06-03 08:31:13 426

原创 最短路:朴素Dijkstra和堆优化版Dijkstra

朴素Dijkstra和堆优化版Dijkstra总体思路将所有的顶点分为两个部分:已知最短距离的顶点集合P和未知最短距离的顶点集合Q。最开始的时候,已知最短距离的顶点集合中只有源点。初始化distance数组,将源点s到自己的距离设置为0,到其他顶点的距离姑且设置为Infinity。依据distance数组,在未知顶点集合Q中选出距离源点最近的一个顶点u,放入P中,并考察所有以u为起点的边,以u作为中转点,检验是否能够减短源点到其他点的距离。如果有,就更新distance数组。这一步又叫松弛(rel

2020-06-03 08:24:10 366 1

原创 深度优先搜索和宽度优先搜索

深度优先搜索和宽度优先搜索bfs和dfs都是遍历图的方法。dfs是不撞南墙不回头,bfs慢慢来,一层一层来。类型空间(h为高度)时间(h为高度)采用的数据结构特点DFSO(h)O(2h2^h2h)栈不具备最短路BFSO(2h2^h2h)O(2h2^h2h)队列“最短路”说明:bfs只能做权重为1或者相同的 “最短路”空间上:dfs 复杂度为最大深度 h。这也是stack最大容量。bfs 复杂度为 2^h。因为满二叉树 最下面一层为

2022-01-14 16:23:59 897

原创 整数与浮点数二分算法

整数二分作用为:利用二分搜索的思想。来找到一个数特殊数的左右边界。例如: {1,2,3,3, 4,5,8,10}找到值为3的左边界序号为1,右边界序号3。如何找到左右边界呢.发现, 3的左边是 小于等于3的(性质1) 且 3的右边是大于等于3的(性质2)步骤## 模板int x;//目标值// 查找左边界//查找大于等于/大于key的第一个元素int bsearch_1(int l, int r){ while (l < r) { int m

2022-01-13 15:56:01 200

原创 数组模拟链表、栈、队列、单调队、栈

数组模拟链表、栈、队列、单调队、栈——打印资料数组和链表的优劣对比参考:https://zhuanlan.zhihu.com/p/73514867数组的特点:在内存中,数组是一块连续的区域。插入和删除数据效率低(插入数据时,这个位置后面的数据都要后移)**查询效率很高。**因为数组是连续的,知道每一个数据的内存地址,可以直接找到给地址的数据(直接索引就能实现,不需要重头遍历)。不利于扩展,一开始数组定义的空间不够时要重新定义数组。会造成冗余。空间浪费。链表的特点:在内存中,不要求连

2022-01-12 15:51:49 393

原创 高精度算法

高精度高精度适用情况大数的长度最长为 10^6位高精度加法通过对数位分别储存运算,并维护一个用于处理进位的变量,从而在不造成溢出的前提下实现大数相加。Java和Python中虽然不需要考虑大整数相加的溢出问题,但这种算法的思想很值得借鉴。高精度储存从高位对应着 数据中表示也是高位。当然输出的时候需要倒叙输出[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HGw3PIPX-1641802022731)(…/…/…/图库/1590506552684.png)

2022-01-10 16:07:24 334

原创 反素数 Antiprime

反素数题目描述原题来自:POI 2001如果一个大于等于 111 的正整数 nnn,满足所有小于 nnn 且大于等于 111 的所有正整数的约数个数都小于 nnn 的约数个数,则 nnn 是一个反素数。譬如:1,2,4,6,12,241, 2, 4, 6, 12, 241,2,4,6,12,24,它们都是反素数。请你计算不大于 nnn 的最大反素数。输入一行一个正整数 nnn。输出只包含一个整数,即不大于 nnn 的最大反素数。样例1000840提示数据范围与提示:对于 10

2021-12-28 18:54:31 607

原创 0x00排序专题

0x00-排序专题文章目录0x00-排序专题冒泡排序选择排序快速排序归并排序冒泡排序参考:https://zhuanlan.zhihu.com/p/126354159冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。双重循环时间 O(n^2)算法描述:比较相邻两个数据如果。第一个比第二个大,就交换两个数对每一个相邻的数做同样1

2021-12-23 22:23:40 125

原创 信息学奥赛入门资源推荐

信息学奥赛入门资源信息学奥赛是一场思维锻炼和毅力比拼的战场。需要不断的投入时间和精力去提升自己。如果热情是火,那学习的资源就是支撑火焰的燃料,其重要程度可想而知。????对于入门的资源的推荐如下:软件资源Dev-C++(Dev-Cpp)是信奥最常用软件,是c++的编译器。????下载链接:https://pc.qq.com/detail/16/detail_163136.html视频资源视频素材是最好容易入门的资源,没有之一,它相当于九阳神功这样的武林秘籍。视频中就有大师亲自上阵,教导传授。如

2021-09-23 10:24:26 1836

原创 zx的git实践总结

简单总结下使用git步骤,希望与诸君共同学习。说简单也简单,说复杂也复杂。网上一直没有特别好的理论和教材。理论部分自行观看:视频来源文档来源现在以coding为例,将实践部分总结一下(默认已经有了账号和密码了哈)。步骤如下:一、建议联系(密钥通信)首先我们需要将代码上传到 github/coding/gitee上,那么我们如何和这个网站联系,以及识别我们的身份呢?常用的方式有两种,一种是使用账号密码,另外一种是使用加密通信**(可以简单认为是经过一次验证,以后都不需要输入账号密码的方式,在这里,我

2021-04-09 21:52:25 238 4

原创 2020年11月21日 纪念日——线性筛选质数

2020年11月21日 纪念日——线性筛选质数有点丢人,讲题之前没有讲明白,然后在很多人之前丢了大脸。以此时作为纪念吧。共勉之。某个算法,只有思考过,AC过,再思考。才可能明白吧。开始记录下线性筛选质数:基础知识质数质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。合数与质数相对的就是合数。最小因数定理——一个数的最小因数一定是质数一个大于1的自然数,最小的因数一定是质数。证明如下:我们来把它编 成一道证明题 ,并利用列举法和反证法 求证。求证:除

2020-11-22 17:29:23 202

原创 scanf读取字符的技巧——防止有字符前有空格

scanf读取字符的技巧——防止有字符前有空格问题背景:经常读入数据的时候,会遇到scanf读入数据带有间隔情况,如下:输入:x x x 或者 x x x此时只有一个或者多个空格,那么:解决方法:使用cin或者使用 scanf(" %c",&c); ' '是可以忽略一个或者多个空格#include<bits/stdc++.h>using namespace std;char c;int main(){ for (int i = 0; i < 3;

2020-11-17 20:27:00 1702

原创 kmp算法思考和参考总结

AcWing 831. KMP字符串所谓字符串匹配,是这样一种问题:“字符串 P 是否为字符串 S 的子串?如果是,它出现在 S 的哪些位置?” 其中 S 称为主串;P 称为模式串。下面的图片展示了一个例子。暴力做法:双重循环双重循环劣势如下:双重循环的时候,如果主串S和模式串P不匹配,则如果S会上次匹配地方为i,那么本次匹配时,S串会从i+1开始匹配。对于暴力算法,如果出现不匹配字符,同时回退 S 和 P 的指针,嵌套 for 循环,时间复杂度 O(MN)O(MN)O(MN),空间复杂

2020-11-16 21:38:14 225

原创 单调栈和单调队列

单调栈给定一个数列,找到每一个数左边比他小,且离它最近的数。这个问题可以这样抽象思考,把它变为求一个数组中Next Greater Number,也就是大于该元素,且离它最近的元素下标。把数组的元素想象成并列站立的人,元素大小想象成人的身高。这些人面对你站成一列,如何求元素「2」的 Next Greater Number 呢?很简单,如果能够看到元素「2」,那么他后面可见的第一个人就是「2」的 Next Greater Number,因为比「2」小的元素身高不够,都被「2」挡住了,第一个露出来的就是答

2020-11-15 22:33:07 94

原创 链表和邻接表,队列和栈

链表和邻接表,队列和栈单链表——利用数组模拟e数组代表节点的值ne数组代表下一点的位置head表示头节点的下标初始化插入到头节点位置将x插入到下标是k的点后面将下标是k的点后面的点,删掉双向链表l表示前向指针,r表示后向指针指向的点的下标。e数组代表点的值。它也有若干操作如下:邻接表就是有head数组,head存的某个头节点下一个节点。栈和队列栈利用数组来模拟栈如下:(其中tt代表栈顶的下标)队利用数组来模拟队列。 hh队头,tt队尾 。.

2020-11-15 21:06:25 188

原创 自守数

自守数自守数//// Created by majoe on 2020/8/8.//#include<bits/stdc++.h>using namespace std;int a,b;vector<int> res;//得到一个数的位数int getcount(int s){ int ncount = 1; while(s/10 >0) { ncount++; s=s/10; }

2020-08-08 15:27:20 137

原创 杨辉三角

题目地址//// Created by majoe on 2020/8/8.//#include<bits/stdc++.h>using namespace std;int a[30][30];int n;int main(){ scanf("%d",&n); //初始化两边的1,可以画出来看看 for (int i = 1; i <=n ; ++i) { a[i][1] = a[i][i] =1; } /

2020-08-08 12:40:57 87

原创 2018D2T2 P5023 填数游戏

P5023 填数游戏https://www.luogu.com.cn/problem/P5023解题参考:https://www.acwing.com/activity/content/code/content/148941/https://www.luogu.com.cn/problem/solution/P5023?page=1联合这两个题解。写出来的,感谢大佬。题目大意有一个棋盘,从左上走到右下。有如下规定:只能向下,或者向右。分别为D和R。记录下路径的方向字符串。例如RD。就是先

2020-08-05 16:15:56 264

原创 2018 D2t1 旅行

2018 D2t1 旅行https://www.luogu.com.cn/problem/P5022题意给出一个有 n 个点,n−1或 n 条边的无向连通图,求 dfs遍历图的最小字典序想法bfs+ 剪枝一共有两种情况,n=m就是基环数(也就是只有一个环的树,n=m)情况二:就是普通树。用dfs遍历。找到最小字典的序列情况一:也不需要找到环。只需要将每条边都删除一次(不是真的删除,只是将其标记)。判断是否遍历过所有的点了。(cnt == n)是的话,说明删除的边就是环中的边。#in

2020-08-02 21:34:46 145

原创 2018 D1T2 P5020 货币系统

P5020 货币系统https://www.luogu.com.cn/problem/P5020题意一个国家的货币面值的集合A求能够表示集合中所有面值的集合B输出集合B中最小个数想法如果一种货币可以被其他货币表示,那么这个货币就可以别剔除#include<bits/stdc++.h>using namespace std;int n;int a[105];int f[25005];int main(){ int T; cin>>T;

2020-08-02 16:36:53 110

原创 2018 D1T1 P5019 铺设道路

P5019 铺设道路https://www.luogu.com.cn/problem/P5019题意长度为n的道路,道路是下陷的。春春有一种能力,能将[L,R]的下陷减少1.选择的区间内,下陷的深度均不为0.求能把坑填起来的最短的时间。想法贪心:对于每一块区域,若它下陷深度小于上一块区域的下陷深度,则它可以由填上一块区域时一并填埋。所以对于每一块区域,只需填埋其深度大于前一区域的部分。所以最终答案就是所有后一块减前一块大于零的和。图中对应的两种情况,分别对于:每一块区域

2020-08-02 14:51:45 124

原创 2016 D2T1 P3958 奶酪

P3958 奶酪https://www.luogu.com.cn/problem/P3958题意你要从最低点走到最高点,你必须从与下边界联通的洞孔开始走,而且每次只能走到和你所在奶酪相连通的奶酪.对于两个奶酪而言,他们的距离必须小于2×r,才被认为是相通的.距离公式如下:想法本质上是:BFS走空间迷宫首先对于一道搜索题目而言的话,我们还是有基本的三点目标目标一:方向指示数组: 对于这道题目而言,显然每一个和它相连通的洞都可以,所以这道题目的方向指示数组形同虚设.目标二:边界

2020-07-31 14:48:31 96

原创 d2t2 P3959 宝藏

P3959 宝藏https://www.luogu.com.cn/problem/P3959题意总体而言:找到最小生成树中,代价最小的点。想法状压DP状态压缩类动态规划,状压dp一般会有明显的数据范围特征,即n,m一般都在20以内。因为int的值一般是 32bit.https://www.acwing.com/solution/content/4026/https://www.acwing.com/activity/content/code/content/144885/挖个坑。这里比较抽

2020-07-17 10:12:19 145

原创 d1t2 时间复杂度

洛谷想法参考大佬:大佬#include <iostream>#include <algorithm>#include <sstream>using namespace std;typedef pair<char, int> PCI;const int N = 110;int tt;PCI stk[N];int get_number(string number){ int res = 0; for (int i

2020-07-14 22:27:40 238

原创 d1t1 小凯的疑惑

d1t1 小凯的疑惑洛谷题意想法要么找规律要么利用数论。数论如下: 参考对于整数a,b(a≠0),若存在整数k,使b=ka,则称a整除b,或b能被a整除,记为a∣b代码记得开long long#include<bits/stdc++>using namespace std;typedef long long LL;int main(){ LL a, b; cin >> a >> b; cout <<

2020-07-14 21:26:16 113

原创 树上点差分

树上点差分https://www.luogu.com.cn/problem/P3128题意理解一棵树,根节点为1大量修改操作,但是每次是将两个点之间的路径上的所有点,都增加1一个查询操作,问最后哪一个点上的值最大。算法解析使用树上差分+最近公共祖先即可。就是一个点上的最后权值,就是统计子树和的过程。树上差分举个例子:有一个树。设原树如下,现要将2,3之间路径上的所有点的权值增加3,设原权值均为0。可以求任一个点的权值。现在有两个想法:暴力:一个是将2,3路径上的所有

2020-07-13 00:22:00 306 1

原创 倍增求LCA

倍增求LCA参考LCA是什么LCA(Least Common Ancestors),即最近公共祖先,是指在有根树中,找出某两个结点u和v最近的公共祖先。———来自百度百科在这棵树上,7和5节点的最近公共祖先就是 3。如何求LCA那么如何求呢?详细的思考路径可以参考洛谷。这里只说下方法:这里还需要引入: f(i,j) 表示 节点i 的第 2^j 老的祖先是哪个节点。这里举个例子:f(17,0) = 14 (也就是17的父亲节点) f(17,1) = 10步骤如下:求两个点A,B的L

2020-07-09 23:56:31 372

原创 2016d1t1 P1563 玩具谜题

2016d1t1 P1563 玩具谜题题意https://www.luogu.com.cn/problem/P1563题意解析题目很简单:有n个人围成一圈。有的朝内,有的朝外。(朝内和朝外的左右是相反的)从第一个人开始数指令m条,其中指令格式为 向左 3个。 类似这样。找到眼睛的位置。想法既然是一个圈,那必然想到的是利用余数的方法来求。规定朝内为1,朝外为-1规定寻找方向:朝左为-1,朝右为1则行进位置 = 方向 * 朝向 * 步数 + n(人数)当然防止多加 则行进

2020-07-07 09:05:05 120

原创 2015 d2t2 P2679 子串

2015 d2t2 P2679 子串题意https://www.luogu.org/problem/P2679简单说:把一个字符串A,截取K个子串,能够拼成B。子串,需要连续。想法线性DP+状态压缩详细的点说:这种问题,首先是两个子串。参考编辑距离。需要有两个状态,i 和 j。代表A串和B串的当前字符。之后需要在往这个基础上,加状态就行了。此时需要加的状态有两个:一个是分段数k一个是当前 i 是否选择。选择则当前字符必须相等。下来开始dp流程:下来来解释一下:状态表示状态表

2020-07-06 20:55:17 128 1

原创 2015 d2t1 跳石头

2015 d2t1 跳石头题目https://www.luogu.com.cn/problem/P2678题意就是最多移走m块石头,使得选手跳跃的最短距离最大即可。最小的那个跳跃距离。在这么多移动石头的方案中最大。再不懂,可以看看输入输出和样例解释。想法利用二分的方法来找到最小的最大跳跃距离二分一开是范围是(1,len)mid = (1 + len)/2 。那么如何确定mid是否符合条件呢?这一步可以用贪心的方法来做首先,当前石头和前一块石头距离为 dis。 如果dis <

2020-07-05 21:21:21 101

原创 2015 d1t1 神奇的幻方

2015d1-t1 神奇的幻方题意https://www.luogu.com.cn/problem/P2615想法模拟每填一个数字,就保存一下这个数的坐标。填下个数的时候,刚才保存的坐标就是 (K - 1) 的坐标。跟据此坐标判断 K 应该填到哪个位置。其中,填第一个数的时候需要特判。代码#include <bits/stdc++.h>using namespace std;int a[40][40];int step = 1, n , posx,posy;int m

2020-07-05 20:45:20 120

原创 2015 d1t2 信息传递

信息传递https://www.luogu.com.cn/problem/P2661题意有n个孩子,每一个孩子都有一个伙伴,他能把自己的生日告诉他,但是不能告诉别人。(如果他知道别人的生日也一同告诉)当有人从别人口中得知自 己的生日时,游戏结束。分析其实这道题就要求一个图中的最小环的节点数。为什么呢。我们来看看。根据题意。这个消息传递,可以看做从该点传到信息传递对象,由信息传递对象传给它们的公共父亲,再传回成环。我们来看个例子:输入52 4 2 3 1解释:5个孩子,1号的好伙

2020-07-05 20:27:01 174

原创 Tarjan算法——求强连通分量

这里参考几篇博客。留个坑,等下次自己把原理总结一下。如果需要快速了解。可以把这几个博客看一下:csdn原理讲的很清楚视频讲解,绘图一下就明白了扩展内容模板

2020-07-05 17:28:50 197

原创 单例和枚举原理

单例和枚举原理枚举简单介绍枚举类能够统一管理一些全局的变量,封装对于他们的逻辑与方法。还能和switch-case结合,简化大量的if-else,让代码更加优雅。直接Demopublic enum Week { //本文的枚举类变量,枚举类实例,name属性指的就是MONDAY //这类的变量 MONDAY(0,"星期一"), TUESDAY(1,"星期二"), WEDNESDAY(2,"星期三"), THURSDAY(3,"星期四"),

2020-07-01 11:28:50 341

原创 高并发网站的演变和优化

一,什么是高并发高并发是互联网分布式系统架构设计中必须考虑的因素之一,通常指:通过设计保证能够同时并行处理很多请求。高并发指标:响应时间:系统对请求做出响应时间。例如系统处理一个HTTP请求需要200ms,这个200ms就是系统响应时间。吞吐量:单位时间内处理的请求数量。每秒查询量QPS:每秒响应请求数。在互联网这个指标和吞吐量区分的没有这么明显。并发用户数:同时承载正常使用系统功能的用户数量。例如一个即时通讯系统,同时在线量一定程度代表系统并发用户数。二,创业初期系统假如我们现在有一家创业

2020-06-29 12:00:37 210

原创 AspectJ-AOP和Spring-AOP

AspectJ-AOP和Spring-AOPAspectJ-AOP简单介绍AspectJ是一个java实现的AOP框架。它能够对java代码进行AOP编译(一般在编译期进行)让java代码具有AspectJ的AOP功能(当然需要特殊的编译器)可以这样说AspectJ是目前实现AOP框架中最成熟,功能最丰富的语言,更幸运的是举例:这里先进行一个简单案例的演示,然后引出AOP中一些晦涩难懂的抽象概念,放心,通过本篇博客,我们将会非常轻松地理解并掌握它们。编写一个HelloWord的类,

2020-06-28 19:44:20 269

华中师范大学矩阵论-概率部分历年考试题目

矩阵论主要的研究方向是矩阵化简(对角化,若尔当化,三角化), 矩阵分解(主要为,三角分解,谱分解,奇异值分解),矩阵函数以及矩阵函数的微积分,矩阵的广义逆,矩阵空间的逼近分析。 矩阵分析是矩阵论的部分内容,主要内容是 矩阵函数的微积分,广义逆矩阵,矩阵的逼近分析

2019-01-24

华中师范大学矩阵论历年考试题目

矩阵论主要的研究方向是矩阵化简(对角化,若尔当化,三角化), 矩阵分解(主要为,三角分解,谱分解,奇异值分解),矩阵函数以及矩阵函数的微积分,矩阵的广义逆,矩阵空间的逼近分析。 矩阵分析是矩阵论的部分内容,主要内容是 矩阵函数的微积分,广义逆矩阵,矩阵的逼近分析

2019-01-24

个人总结的机器学习的笔记

本笔记是针对斯坦福大学2014年机器学习课程 视频做的个人笔记

2019-01-24

空空如也

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

TA关注的人

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