自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 springboot项目中模糊查询无法正常进行的问题

可能是配置数据库的地方出了问题,在application.properties配置文件中正确配置mysql数据库的实例如下:# 服务端口server.port=8001# 服务名spring.application.name=service_edu# 环境设置:dev、test、prodspring.profiles.active=dev# mysql数据库连接 注意url要写完整spring.datasource.driver-class-name=com.mysql.cj.jdbc

2021-10-15 17:16:38 658 2

原创 luoguP1880石子合并(环状区间dp)

直接上代码:#include<iostream>#include<algorithm>using namespace std;const int inf = 0x3f3f3f3f;const int N = 205;//数据规模 int sum[N],dpmin[N][N],dpmax[N][N],dat[N];//dat存给的数据,sum维护前缀和,dpmin[i][j]维护从i到j这个区间内的石子合并为一堆的最小花费,dpmax同dpmin int minn=in.

2021-05-30 20:41:33 178

原创 luoguP2580 于是他错误的点名开始了(trie树/字典树/前缀树)

不用字典树也能做,主要是用这个水题来熟悉一下字典树的写法,字典树就是把一些字符串分解成字符存放在树结构上,常见的操作是插入字符串和查找字符串。直接上代码:#include<iostream>#include<map>#include<string>using namespace std;map<string,bool> mp;int tree[30][1000005];int idx=0;bool cnt[1000005];void i..

2021-05-20 20:53:18 153

原创 long double

long double比double精度更高,用**%Lf进行输出,速度相较于double**较慢且内存占用较高,使用时应综合考虑时间和空间。

2021-05-07 19:48:10 185

原创 主席树模板

主席树用来寻找区间第k小的数的模板下面是代码:#include<iostream>#include<vector>#include<cstdio>#include<algorithm>using namespace std;const int maxn = 2e5+5;int n,m,cnt,root[maxn],a[maxn],x,y,k;//n个点,m次询问,root存放多颗线段树的根节点,a存放离散化之前的数据 struct node{

2021-05-04 10:39:57 79

原创 __int128输入输出模板

适用于连unsigned long long也无法表示的大整数,由于标准输入输出中没有这个类型,所以需要自己手写输入和输出。提交的时候选g++输入:inline __int128 read(){ __int128 x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘){ if(ch==‘-‘) f=-1; ch=getchar(); } while(c

2021-05-03 15:23:33 341

原创 luoguP2742 Graham扫描法求凸包

一个讲的很好的视频:链接啥是凸包:凸包就是某些点相互连接形成的一个凸多边形,这个凸多边形的内部要包含所有剩下的点,并且这个凸多边形应该是所有符合条件的凸多边形中周长最小的一个。咋求凸包:首先要找到最左下角那个点,那个点一定在凸包中(画一画好像很好证),然后以这个点为原点建立平面直角坐标系,计算其它点的极角并根据极角进行排序,然后开始从排序后的第一个点开始连线,第一条线一定会连接(前两个点入栈),当连到第二条线的时候就要看那个点在第一条线所在直线的左边还是右边,如果在非右边,则进行连接即让点入栈(相当于扩

2021-04-30 21:32:54 165 2

原创 luoguP1115&luoguP1719 最大子段和

luoguP1115 最大子段和从头到尾遍历数组,用sum记录遍历过来的和,过程中每当sum加上一个元素就尝试更新ans,并且若在过程中sum的值小于0了,就将sum的值置为0(意味着前面的元素都不要了,从下一个元素再开始累加),最后ans的结果就是最终答案。下面是代码:#include<iostream>using namespace std;int main(){ int n; int sum=0; int ans=-0x3f3f3f3f; int a; cin&gt

2021-04-28 20:47:13 88

原创 luoguP3379 倍增求最近公共祖先(LCA)

这个视频讲的很清楚:链接这里用无向链式前向星来存放这个多叉树结构,这样做要注意再dfs的时候注意特判从儿子不能回到父亲节点,不这样做则会陷入递归死循环。下面是代码:#include<iostream>using namespace std;//-----------------------------链式前向星的准备工作-----------------------------------struct edge{ int next;//上个以这条边为起点的边在存放边的数组中的...

2021-04-23 21:41:35 80

原创 Tarjan算法求无向图的割点和桥(邻接矩阵&链式前向星(luoguP3388))

判断割点有两种方法:1、x非root && x有儿子y && low[y]>=dfn[x]2、x是root && x有>=2个儿子(这里的儿子是基于x的搜索树的,并不是原图上的,也就是说x能到达y并且y在之前没被访问过的时候y才是x的儿子)判断桥的方法:low[y]>dfn[x]要注意无向图儿子->父亲的边不作处理,因为如果处理的话,所有low[y]就都等于dfn[x]了/*判断割点有两种方法:1、x非root &&am

2021-04-21 19:45:33 352

原创 Tarjan算法求有向图的强连通分量

讲的很好的教程:链接**什么是强连通:**强连通是有向图中的一个概念,如果一个有向图的任意两点间可以互相到达,那么这个有向图就是一个强连通图。**什么是弱连通:**弱连通也是有向图中的一个概念,如果一个有向图的有向边全部变成无向边后图是连通的,那么这个有向图就是一个弱连通图。(好像强连通图都是弱连通图?)**什么是强连通分量:**强连通分量就是一个图中强连通的一部分。时间复杂度:Tarjan算法求强连通分量主要依赖于DFS,如果用邻接矩阵存图,那么时间复杂度是O(n^2)的,如果用邻接表存图,那么时

2021-04-14 21:09:14 265 1

原创 链式前向星+Dijkstra优先队列优化(应该挺有用)

这题就是找树上两个点之间的距离,然后这距离是奇数就输出Yes,是偶数就输出No。可以用链式前向星+队列优化的Dijkstra解决,至于队列优化的Dijkstra算法时间复杂度好像是O(nlogn+m),但是其原理我还理解的不够透彻,等以后理解透彻后再对这篇博客进行修改。下面直接放代码:#include<iostream>#include<cstring>#include<algorithm>#include<queue>#include<v.

2021-04-12 20:46:41 304

原创 链式前向星+无优化Dijkstra(虽然可能没啥卵用= =)

直接放代码:#include<iostream>#include<cstring>using namespace std;//-----------------------------链式前向星的准备工作-----------------------------------struct edge{ int next;//上个以这条边为起点的边在存放边的数组中的位置(方便遍历) int to;//终点 int w;//边权 }dat[200005];//存放边的结

2021-04-12 19:46:40 86

原创 矩阵快速幂模板+原理+转换矩阵的构造方法

const int N=9;struct Matrix{///矩阵结构体 ll matrix[N][N];}; const int mod = 1e9 + 7; void init(Matrix &res)///初始化为单位矩阵 { memset(res.matrix,0,sizeof(res.matrix)); for(int i=0;i<N;i++) res.matrix[i][i]=1;}Matrix multiplicativ

2021-04-07 20:05:40 220 2

原创 M型字符串(利用字符串哈希来判断回文)

如何利用字符串哈希求一个字符串是否是回文串?只需要设计一种求哈希值的方式,使得不是回文串的字符串正哈希(正着遍历得到的)和负哈希(反着遍历得到的)的值不同且使得回文串的正哈希和负哈希的值相同,这样就能通过正负哈希值是否相同来判断字符串是否是回文串了,那么这个求哈希值的方法是什么呢?可以是每个元素的值乘当前数组的下标然后加和,这个很容易证明,我也是诈胡想出来的= =。然后这个值怎么维护呢?可以利用一些前缀和的思想,我们开四个数组,dat数组存放字符串,zheng数组维护从字符串开始到当前元素的正哈希值,...

2021-03-31 21:17:53 519

原创 找山坡(单调栈)

#include<iostream>#include<stack>using namespace std;stack<int> st;const int N = 1e6+5;int dat[N];int main(){ int n; int ans=0; cin>>n; for(int i=1;i<=n;++i) { cin>>dat[i]; if(st.empty()) { st.push(i...

2021-03-31 20:06:42 111

原创 涂墙(拉格朗日四平方数和定理)

拉格朗日四平方和定理:任意一个非负整数都能表示成四个平方数的和(这里0也算是平方数)注意这个题里0不算是平方数。然后169这个数字有个奇特的性质,就是它可以分别用1、2、3、4、5个平方数的和表示出来,这样如果某个数字不小于169,大于169的部分都可以用含有0/1/2/3/4个0的4个平方数的和表示,这样如果组成多出来的部分的四个平方数中有0个0,那就让169用1个平方数的和它组合;如果组成多出来的部分的四个平方数中有1个0,那就让169用2个平方数的和它组合,以此类推,这样得出结论:任意不小于..

2021-03-31 19:17:04 407

原创 捡贝壳(分块算法)

很明显这题暴力去做肯定超时,但是感觉暴力优化一下也还差不多,那么可以考虑利用分块算法来进行“优雅地暴力”,分块算法的基础应用是将一段长度为n的数据以每段根号n个数据的规模来划分成根号n块,每一块都维护一个属性,这样进行区间查询的时候,其中是整块的就把维护的属性直接加到答案上去,然后枚举那些不是整块的数据即可,分块算法的复杂度中一般是带有根号n的,乍一看感觉分块算法和线段树原理上差不多,但实际上分块算法能做到一些线段树做不到的事情,因为线段树的每一段必须满足区间可加减的性质(因为要维护整个线段树嘛),但...

2021-03-30 21:46:57 373

原创 关于计算机如何处理用后缀表示法写成的算式

后缀表示法的特点是:(1)运算量的排列顺序与中缀表示法相同;(2)运算符是按运算的顺序排列的;(3)运算符紧跟在被运算的对象之后出现。用这种表示法写成的算式叫后缀表达式,对于计算机来说很容易就能用一个栈对其进行计算。后缀表达式的计算方法:遍历一边算式,如果遇到变量就压进栈,如果遇到运算符就取出栈顶相应数量的变量进行计算,然后再把结果压回栈中,最后剩在栈里的元素就是整个后缀表达式的运算结果。前缀表达式的计算方法:和后缀表达式的一样,只需要反着遍历算式即可。...

2021-03-22 19:25:55 203

原创 关于我在CentOS的命令行中无法登录用户这档子事

在命令行中无法登录用户,但是在图形界面中可以登录,我很确定我输入的用户名和密码是正确的,最后我尝试将用户名中的大写字母全改成小写后就可以登录了,我也不知道是为啥,还有就是登录的时候不要使用小键盘的数字键,会出问题。...

2021-03-20 10:09:15 365

原创 关于CentOS下键盘失灵

很可能是驱动程序出了问题,只需要重新给键盘配置驱动程序就能解决。具体步骤:在etc/X11/xorg.conf.d中找到键盘的配置文件,键盘的配置下面加上Driver "kbd"即可

2021-03-20 09:55:41 2707

原创 luogu P4017 最大食物链计数(拓扑排序变形)

一个讲的很清楚的视频:链接总之这是一个基于有向无环图的一个算法,目的是得到一个拓扑序列,拓扑序列就是每个指向某元素的元素一定在那个元素之前的一种有序序列,主要利用stack或者queue实现,先寻找入度为0的元素,将这些元素入队/入栈,然后当队列/栈里面有元素的时候,就每次取最头上的元素,然后让它指向的元素的入度都减1,之后将这个元素记录下来,如果在这个过程中又出现了入度为0的元素,就让他入队/入栈,一致重复这个过程,直到队列/栈为空为止,记录下来的有序元素序列就是一种拓扑序列(拓扑序列不一定唯一)。..

2021-03-17 20:21:26 109

原创 luoguP3373 线段树模板2(懒惰标记的优先级问题)

这个题在之前的模板1的基础上多加了一种懒惰标记,而多加的这一种懒惰标记引起了优先级的问题,到底是应该先加后乘呢还是应该先乘后加呢?按理说两种都能实现,但是先乘后加的方法更利于更新,所以这里写了先乘后加的方法,需要再新开一个数组来储存所有的乘法操作,由于是先乘后加,所以每次乘法操作的数组作出更新时,加法操作的数组也应该进行相应的更新以确保懒惰标记的正确性,还有,记得对所有可能溢出的地方进行取模。下面是代码:#include<iostream>using namespace std;ty..

2021-03-11 20:27:20 181

原创 luoguP3370 字符串哈希模板

关键是如何构造哈希值能使所有情况尽可能地少重复,下面是常用的哈希方法:我在这题中用的是自然溢出方法,下面是代码:#include<iostream>#include<cstring>#include<set>using namespace std;typedef unsigned long long ull;set<ull> st;const int p = 23;//设定一个素数//const int mod;//设定一个模 ull..

2021-03-10 21:32:30 89

原创 洛谷P3372 线段树模板

线段树讲的很详细的博客:链接线段树讲的很详细的视频:链接#include<iostream>using namespace std;typedef long long ll;const int maxn = 100005;ll dat[maxn];//储存数据 ll tree[maxn<<2];//储存线段树的数组常开成数据的4倍大小ll add[maxn<<2];//用来标记区间加减的操作 void pushup(int node)//用于更新..

2021-03-10 19:16:08 155

原创 POJ 3273 Monthly Expense(二分法解决最大中找最小问题)

Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤ moneyi ≤ 10,000) that he will need to spend each day over the next N (1 ≤ N ≤ 1

2021-02-27 16:39:24 205

原创 SDNU 1015 最远路径(二叉树DFS)

Time Limit: 1000 MS Memory Limit: 32768 KBDescription有一棵有n个节点的二叉树,它的节点编号为1到n,根节点编号是1,它的每条边都有一个给定的长度。请你求出该二叉树中距离根节点最远的节点的距离。Input第1行:一个数字n(1 <= n <= 100),表示该二叉树节点的数量。第2至第n+1行:每行有三个整数(不会超过int),第i 行中的三个整数分别表示编号为i-1的节点与其父节点之间边的长度、编号为i-1的节点左孩子的编号和

2021-02-18 08:34:28 185 2

原创 Common Subsequence & luoguP1439(DP之LCS最长公共子序列问题+利用O(nlogn)的LIS优化)

A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, …, xm > another sequence Z = < z1, z2, …, zk > is a subsequence of X if there exists a strictly increasing seque

2021-01-28 17:37:01 111

原创 Stone(巴什博弈/反巴什博弈)

Tang and Jiang are good friends. To decide whose treat it is for dinner, they are playing a game. Specifically, Tang and Jiang will alternatively write numbers (integers) on a white board. Tang writes first, then Jiang, then again Tang, etc… Moreover, assu

2021-01-28 17:31:37 316

原创 字符串算法KMP(字符串匹配)板子及理解

#include <iostream>#include <string>#include <vector>using namespace std;//部分匹配表void cal_next(string &str, vector<int> &next){ const int len = str.size(); next[0] = -1; int k = -1; int j = 0; while

2021-01-28 11:20:00 434

原创 HDU 1850 Being a Good Boy in Spring Festival && SHOJ2008 小约翰的游戏John(NIM博弈变形/反NIM博弈)

一年在外 父母时刻牵挂春节回家 你能做几天好孩子吗寒假里尝试做做下面的事情吧陪妈妈逛一次菜场悄悄给爸爸买个小礼物主动地 强烈地 要求洗一次碗某一天早起 给爸妈用心地做回早餐如果愿意 你还可以和爸妈说咱们玩个小游戏吧 ACM课上学的呢~下面是一个二人小游戏:桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。现在我们不想研究到底先手为胜还是为负,我只想问大家:——“

2021-01-27 10:30:57 114

原创 Piggy-Bank(找最小价值的完全背包问题)

Before ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behind is simple. Whenever some ACM member has any small money, he takes

2021-01-27 09:12:26 396

原创 Odd Divisor(大数判断是否有奇数因数)

You are given an integer n. Check if n has an odd divisor, greater than one (does there exist such a number x (x>1) that n is divisible by x and x is odd).For example, if n=6, then there is x=3. If n=4, then such a number does not exist.InputThe firs

2021-01-27 09:04:26 797

原创 取石子游戏(威佐夫博弈)

有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。Input输入包含若干行,表示若干种石子的初始情况,其中每一行包含两个非负整数a和b,表示两堆石子的数目,a和b都不大于1,000,000,000。Output输出对应也有若干行,每行包含一个数字1或0,如果

2021-01-27 08:47:17 704

原创 HDU 1087 Super Jumping!Jumping!Jumping!(DP之LIS问题变形)

Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.The game can be played by two or more than two players. It consists o

2021-01-26 11:56:08 109

原创 POJ 2421 Constructing Roads(Kruskal变形)

There are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connected, if and only if there is a road between A and B, or there exists a villag

2021-01-26 11:50:14 91

原创 SDNUOJ 1199.三角形(acos函数的使用)

Time Limit: 1000 MS Memory Limit: 32768 KBDescription现有一些边长为正整数的三角形的边长的统计数据 ,急需求出每个三角形的最大角。不过由于技术问题,数据中有可能混杂有不是三角形的错误数据请注意。Input至少一组而且可能有很多组的测试数据每组测试数据为一行,依次是用空格隔开的a b c 三个100以内正整数Output每行输出一组测试数据的结果单位为弧度,保留三位小数。对于不是三角形的错误数据,请输出一行“Error”(不带引号)

2021-01-25 16:40:34 300

原创 HDU 3790 最短路径问题(多权值Dijkstra)(可作Dijkstra的标准模板)

给你n个点,m条无向边,每条边都有长度d和花费p,给你起点s终点t,要求输出起点到终点的最短距离及其花费,如果最短距离有多条路线,则输出花费最少的。Input输入n,m,点的编号是1~n,然后是m行,每行4个数 a,b,d,p,表示a和b之间有一条边,且其长度为d,花费为p。最后一行是两个数 s,t;起点s,终点。n和m为0时输入结束。(1<n<=1000, 0<m<100000, s != t)Output输出 一行有两个数, 最短距离及其花费。Sample Input

2021-01-20 21:08:38 205

原创 HDU 5428 M - The Factor(快速找到一个数的因数)

There is a sequence of n positive integers. Fancycoder is addicted to learn their product, but this product may be extremely huge! However, it is lucky that FancyCoder only needs to find out one factor of this huge product: the smallest factor that contain

2021-01-20 17:26:58 243

原创 UVAOJ 10815 Andy‘s First Dictionary(stringstream的用法)

Andy, 8, has a dream - he wants to produce hisvery own dictionary. This is not an easy task forhim, as the number of words that he knows is,well, not quite enough. Instead of thinking up allthe words himself, he has a briliant idea. Fromhis bookshelf

2021-01-19 22:08:28 103

空空如也

空空如也

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

TA关注的人

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