自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot常用配置(持续更新)

自动装配原理SpringBoot启动会加载大量的自动配置类xxxAutoConfigurationxxxAutoConfiguration会使用@EnableConfigurationProperties注解绑定配置文件中的属性值给容器中的自动配置类添加组件时,会从xxxProperties类中获取指定的属性值,只需要在配置文件中指定这些属性即可.配置文件中的key和xxxProperties中@ConfigurationProperties注解的prefix属性值一一对应pom.xml

2021-11-24 21:27:14 720

原创 Spring学习 —— JdbcTemplate操作数据库

JdbcTemplate(概念和准备)1、概念(1)Spring框架对JDBC进行封装,使用JDBCTemplate方便实现对数据库操作2、准备工作(1)引入相关jar包(2)在Spring配置文件配置数据库连接池(3)配置JdbcTemplate对象,注入DataSource(4)创建service类,dao类,在dao注入jdbcTemplate对象①组件扫描②Service③DaoJdbcTemplate操作数据库(添加、修改和删除)添加为例1、对应数据库表创建实体类

2021-09-24 15:57:54 408

原创 git 上传文件至github仓库

一、下载安装git软件二、配置github用户名和邮箱git config --global user.name "username" //username对应用户名git config --global user.email "email" //email对应邮箱三、在本地项目工程目录打开git bash(也可以通过cd进入本地项目)四、进行文件的上传等操作// 获取git与代码仓库的连接,url对应代码仓库的urlgit remote -u origin url

2021-09-15 21:12:35 399

原创 数列分块整理..

先分块,把n个数分成根号n个块,每个块根号n个数,(如果不是完全平方数区间个数就+1)num数组记录每个数lef数组维护当前这个数所在区间的左边界rig数组维护当前这个数所在区间的右边界blo数组维护当前这个数属于哪一个块lazy数组维护每个块增加的数思路:修改1.对于每次修改,找到L所在的块和R所在的块2.如果L和R在相邻块或者同一块,直接枚举区间num[i]+C;3.否则,枚举第L和R中间的块,lazy[i]+C,并且枚举L所在的块和R所在的块的num[i]+C;查询第i个数的.

2021-07-22 09:57:51 161

原创 简易计算器——Java GUI

简易计算器,顾名思义,只能进行一次计算,没有记忆功能自创一个类继承ActionListener,重写actionPerformed(ActionEvent e)方法,实现计算器的功能,getSource()方法返回值是组件对象名,getActionCommand()方法返回值是组件对象的标签。比如一个Button b2 = new JButton(“haha”);e.getSource()返回 b2,e.getActionCommand() 返回haha字符串。import javax.swing

2021-03-18 14:52:34 226

原创 JAVA连接数据库(IDEA)

首先先下载MySQL驱动jar包链接: Connector/J.、1、新建完项目之后idea右上角找到jar包的路径就可以了,然后就可以开始写代码了import java.math.BigInteger;import java.util.Calendar;import java.util.Scanner;import java.util.concurrent.CancellationException;import java.sql.*;public class Main {

2021-03-17 16:43:38 955

原创 用Calendar打印日历

package Link_Database;import java.math.BigInteger;import java.util.Calendar;import java.util.Scanner;import java.util.concurrent.CancellationException;public class Main { public static void main(String[] args) { Scanner cin = new Scanner

2021-03-17 12:29:34 165

原创 图像处理———BMP

简介BMP是英文Bitmap(位图)的简写,它是Windows操作系统中的标准图像文件格式,能够被多种Windows应用程序所支持。结构1、位图文件头(0~13字节)0~1字节 表示文件类型第一个42表示B,第二个4D表示M,bmp格式前两个字节默认是这两个2~5字节 表示文件大小 bytes6~9字节保留字 一般为010~13字节 位图数据的起始位置2、位图信息头(14~53字节)14~17字节 :信息头占用字节数 bytes18~21字节 : 位图的宽度(像素)22~25字节 :

2021-03-15 21:16:22 375

原创 2021年度训练联盟热身训练赛第一场 —— C

链接: link.题意:给你一个数n,求最小的数x使得x的平方等于n,运算过程中只以个位作为有效数字,比如正常情况4×4=16,在这里4×4=6;正常情况17×17=289,在这里17×17=149.思路:首先写一下乘法竖式。1、首先可以发现,得到的答案的位数一定是一个奇数,而且是x的位数乘2加1,所以答案位数一定是偶数。那么如果n的位数+1是一个奇数,一定找不到x。2、再来看能找的情况,我们假设n有p位,那么x就有k = (p+1)/2位,可以发现通过枚举n的最高位(称它为第1位)可以找到

2021-03-10 14:29:36 249

原创 关于单调栈...

单调栈:单调递增或单调减的栈,主要通过push和pop两个操作巧妙的解决一些有关序列的问题。===================================================================================放一道题目:牛客链接: link.题意:有n个小于k的数,不改变数组的顺序,求字典序最小的1到k的子序列。#include <bits/stdc++.h>#define ll long long#define T int T;sc

2021-03-08 21:39:13 96

原创 牛牛的“质因数”

链接: link.思路:在欧拉筛的过程中开个数组处理每个数分解质因数后的乘积,是欧拉筛的应用。欧拉筛链接: link.代码#include <bits/stdc++.h>#define ll long long#define T int T;scanf("%d", &T);while(T--)using namespace std;const int mod = 1e9+7;const int maxn = 4e6+10;ll prim[maxn]; //记录第i个

2021-02-04 13:58:38 224 5

原创 Educational Codeforces Round 102 (Rated for Div. 2) A-D

链接: Educational Codeforces Round 102 (Rated for Div. 2).A题意:输入n,d,有n个数,可以选择互不想等的i,j,k,使得ai=aj+ak。问最终能否使得数组的每个数字都小于等于d思路:求出数组最小的两个数的和,小于d就YES,否则NO代码#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <math.h>#in

2021-01-15 14:15:59 667

原创 Codeforces Round #693 (Div. 3) A-E

链接: Codeforces Round #693 (Div. 3).A题意:有宽度w和长度h,如果w是偶数,可以切成两片,h同理,问能否切成至少n片思路:求出w和h最多切成多少片,最后总片数等于他们的乘积。代码#include <stdio.h>#include <stdarg.h>#include <stdlib.h>#include <math.h>#include <string.h>#include <vecto

2021-01-05 15:41:29 262

原创 字典树(查找树)入门

字典树树状结构保存字符串,查找快,判断前缀快。又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。代码#include <iostream>#include <cstdio>#include <map>#include <set>#include <cmath>#include <queue>#include <stack>// #include <unordered_set>

2020-12-06 16:31:23 446

原创 Hdu 3974——Assign the task dfs序+线段树

题目: link.题意:公司里有一堆人,然后对于每个人(除了公司老板)每个人都有上属和下属,他们恰好构成一棵树,每当把任务分给某个人时,若他有下属,则他的所有子树全部做这个任务,对于每次查询输出某个节点正在做什么任务。输入有2种操作:1、C x 输入x这个人在做的任务编号 如果没工作输出-12、T x y 让x和x的下属做编号为y的工作思路:先跑一边dfs序,每个节点记录一个in和out表示时间戳,对于每个人p,in[p]到out[p]这段区间就是p的下属,dfs序完了之后用线段树维护每个人的

2020-11-05 15:19:21 98

原创 线段树 HDU—4027 Can you answer these queries?

链接: link.题意:输入一个n表示n个数,然后输入n个数,输入m表示m个操作,有2种操作:1、0 x y 表示x到y这个区间到数都开根号2、1 x y 求出x到y区间和思路:毫无疑问利用线段树求区间和,但是每次都把一个区间的每个数都开根号就会超时,我们知道一个数一直开根号,到最后一定变为1,所以我们同时记录一下一个区间内的最大值,如果这个区间的最大值是1,那么就不用给这个区间的数开根号,就不用继续往下找,降低时间复杂度。代码:#include <iostream>#incl

2020-11-04 18:09:28 68

原创 线段树维护最长连续区间 hdu 1540 Tunnel Warfare

链接: link.题意:输入n表示n个城市,输入m表示m个操作,有3中操作:1、D x 表示摧毁第x个城市2、Q x 表示查询包括x村庄的连续的没被摧毁的城市个数3、R 表示修复上一个被摧毁的城市思路:对于每个,1表示城市没被摧毁,0表示摧毁,对于每个区间lmax表示从区间最左边开始的连续城市,rmax表示从区间最右边开始的连续城市数量,maxx表示该区间的最大连续区间。每次摧毁城市的时候,找到那个城市,改为0,然后pushup。pushup函数中当前区间的lmax=左儿子区间的lmax,

2020-11-04 17:54:00 132

原创 欧拉函数

欧拉函数:就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。欧拉函数的通式:φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)……(1-1/pn)其中p1, p2…pn为n的所有质因数。φ(1)=1(唯一和1互质的数就是1本身)。我也不知道通式怎么来的,记住吧。单个欧拉函数代码ll oula(ll n){ ll ans = n; for(int i=2; i*i <= n; ++i) { i

2020-11-01 18:03:45 350 2

原创 最短路正反建图

链接: 题目.题意:输入n m x 表示有n个点 m条边 终点是x,要求输出每个点到终点然后回来的最大值。思路:如果正向跑,每个点开始跑一变dij求出每个点到终点距离和终点到每个点距离,肯定会T,所以改变一下思路,存一个正向图和一个反向图,正向图从x点跑一边最短路,可以得出终点到每个点的最短路,反向图也从x点跑一边最短路,因为反向图,所以可以得出每个点到终点的最短路。最后取两个dis相加的最大值。代码#include <iostream>#include <cstdio>

2020-10-30 12:00:04 223

原创 逆向并查集

题目: 题目.题意:有n个战舰(0~n-1),每个战舰有一个战斗力,然后输入一个m表示m对战舰联合,然后输入一个q表示q次查询。接下来q行有两种输入:1、query x 表示查询和x战舰联合对战舰中攻击力最大的战舰的编号(如果战斗力相同输出小的编号),如果没有就输出-1. 2、destroy x y 破坏x战舰和y战舰的关系,不改变其他战舰关系。知道这题的思路的时候感觉发现了新大陆,太强了。。。思路:如果直接先把m组关系处理完然后正向的操作q次操作,会很难处理destroy的操作,因为既要保持已有的关

2020-10-28 19:28:59 250

原创 离散化

#include <iostream>#include <cstdio>#include <map>#include <set>#include <cmath>#include <queue>#include <stack>#include <vector>#include <cstring>#include <algorithm>using namespace std

2020-10-28 14:08:56 93

原创 种类并查集——食物链

链接: 题目.题意:动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B 吃 C,C 吃 A。现有 N 个动物,以 1 - N 编号。每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。有人用两种说法对这 N 个动物所构成的食物链关系进行描述:第一种说法是 1 X Y,表示 X 和 Y 是同类。第二种说法是2 X Y,表示 X 吃 Y 。此人对 N 个动物,用上述两种说法,一句接一句地说出 K 句话,这 K 句话有的是真的,有的是假的。当一句话满足下

2020-10-27 15:08:58 233 1

原创 简单并查集

链接: 题目.题意:有1到n台坏电脑,每台电脑可连接半径是d,有两个操作:1、O p,表示修复第p台电脑。2、S p q,判断p和q两台电脑能不能连接(直接或间接连接)。能连输出SUCCESS,否则输出FAIL思路:直接连接很好判断,间接连接就判断在不在同一个集合里。代码:#include <iostream>#include <cstdio>#include <map>#include <set>#include <cmath&gt

2020-10-27 11:29:22 103

原创 带权并查集

题目: link.题意:输入n和m 表示有n个数和m行输入,接下来m行,每行输入x,y,w表示第x个数到第y个数的和是w,如果与之前的相矛盾,答案加+1,不矛盾则作为之后的条件。比如1 10 10,1 5 4,6 10 5,前两条正确,第三条与则与之前的矛盾,因为1到10的和是10,1到5的和是4,6到10的和应该是6,而不是5,所以有一条是错误的,输出1。思路:很难想到这是一个并查集的题。开一个sum数组存第i个点到根结点的和,初始化为0(自己是自己的根结点),每次find的时候更新到根结点

2020-10-23 13:19:16 156 1

原创 并查集练习

题目: link.题意:有n个龙珠,第i个在第i个城市,有两种操作:1、T x y , 把第x个龙珠所在城市的所有龙珠转移到第y个龙珠的所在城市。(题目保证所在城市不同)2、Q x ,输出第x个龙珠所在城市,该城市的龙珠数量和该龙珠转移的次数。思路:一看就是个并查集的题目,城市的龙珠的所在城市以及城市的龙珠数量很好求,龙珠的转移次数要处理一下。龙珠的转移次数等于该龙珠的转移次数+他的所有父亲的转移次数。用递归即可解决,好好理解。#include <iostream>#includ

2020-10-22 20:02:14 122

原创 2019 山东省省赛 题解

A - Calandar.题意:给两个日期,规定每年12个月,每月30天,已知第一个日期是星期几,求第二个日期是星期几;分析:水题。#include <iostream>#include <cstdio>#include <map>#include <cmath>#include <queue>#include <set>#include <cstring>#include <algorithm&g

2020-10-03 16:50:24 326

原创 2020 Multi-University Training Contest 10

A.题意:跟节点是1.第一行输入一个n,代表n个节点,第二行输入n-1个数,代表2~n节点的父亲。如果节点x能走到节点y,点对数+1,只能走向自己的儿子,不能走向父亲。(即单向边)你可以增加一条双向边,求增加一条边后可到达的最大点对数。思路加边后构成的环肯定可以两两到达,所以肯定是选一个叶子节点连接跟节点,在原有点对数的基础上加上增加的点对数。转化为求哪个叶子节点连跟节点后增加的点对数最多。步骤1、dfs记录每个节点的叶子节点2、dfs2遍历树,记录当前路径增加的对点数==n-该节点儿子

2020-08-22 10:58:50 258

原创

大顶堆为例 —— 保证a[1]为最大值插入push先插在最后,然后向上维护,比自己父亲大就交换删除pop删除堆顶元素,先交换a[1]与a[n],然后n–,删去元素,接着从堆顶向下维护,取儿子中大的那个与自己交换,直到不存在#include<bits/stdc++.h>using namespace std;#define ll long long#define inf 0x3f3f3f3f#define mp make_pair#define pb push_back#de

2020-08-19 09:22:48 126

原创 新冠病毒要回家(次短路)

见了这么多最短路题,来一道次短路!!!新冠病毒要回家.题意:n个点,m条边,求0到n-1的次短路。分析:在最短路的基础上开一个dis2数组记录次短路长度,当需要更新最短路时,把当前最短路的值赋给次短路,然后再更新最短路的值,另外,当前的值比最短路长且比次短路短时,更新次短路的值。基本代码与最短路一致。代码#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3f#define ll long long

2020-08-18 09:52:52 163

原创 2020牛客暑期多校训练营(第九场) The Flee Plan of Groundhog

传送门.题意:有一棵树A 在点 1,B 在点 nA的移动速度是每秒走过一条边,B的移动速度是每秒走过两条边(也可以只走一条)前 t 秒 A 在不断的走向 B,B 不动,之后A还是逃,B开始追,问最迟什么时候追上思路:1、dfs找到t秒后A的位置node2、dfs1求出B到追到每个点的时间3、dfs2遍历A逃到每个点的时间,如果小于B追到的时间就继续逃,否则就更新ans代码#include <bits/stdc++.h>#define inf 0x3f3f3f3f// #i

2020-08-09 10:23:24 865

原创 最小费用最大流

模板题.最大流模板题——传送门.听名字就可以看出,要在满足最大流的同时找到达成最大流的最小费用。我们用每条边单位流量的花费作为边权,假如一条合法路径上每条边的花费分别为 cost[1],cost[2],…c[k] , 并且这条边上的最小流量为flow,那么这条路径上的花费为 : c[1] * flow + c[2] * flow + … + c[k] * flow = (c1+ c2 + c3 + … + ck)* flow = dis [ci] * flow所以dis[ci]最小就是相当于最短路

2020-08-07 15:50:29 317 1

原创 2020牛客暑期多校训练营(第八场)

I题 Interesting Computer Game.题意:T组测试数据,每组输入一个n,然后输入n行,每行输入a b,可以选这两个数中没有选过的数,最多能选几个数。思路:数据范围1e9,先离散化,起初每个数分别处于一个集合,输入a和b之后,如果a和b不相等,就合并a和b的集合,如果相等,就相当于自环,答案等于每个集合min(边数,点数) 之和。并查集主要就是路径压缩和集合合并#include <bits/stdc++.h>#include <tr1/unordered

2020-08-04 09:47:27 257

原创 谈恋爱问题

假如有n个帅哥,每个帅哥有m个的理想女友,他们只想与这m个美女中的其中一个谈恋爱,请问最多能出现几对情侣??????????????????????比如:A喜欢 a bB喜欢 a c那么就让A和c在一起 B和a在一起,就可以出现两对这种问题叫二分图的最大匹配,用匈牙利算法求解。最小顶点覆盖数 = 最大匹配最大独立集数 = 最小路径覆盖数 = 节点数 - 最大匹配#include <bits/stdc++.h> /*最小顶点覆盖数 = 最大匹配 最大独立集数 = 最小路径

2020-08-02 14:29:42 206

原创 线段树维护区间Sum Max Min

#include <bits/stdc++.h> //线段树维护区间和#define ll long longusing namespace std;const int maxn = 1e5+7;ll sum[maxn<<2],add[maxn<<2]; ll a[maxn<<1],n;void PushDown(int cnt, int num_l, int num_r){ //下推标记 num_l num_r 左右子树儿子数量 if(ad

2020-08-02 11:26:54 311 1

转载 大佬题解

TP.

2020-07-30 20:37:05 239

原创 dfs + 最短路

传送门 TP.题意阿达莱王国有n座从1到n的城市。由于交通便利,任何两个城市之间都有一条双向公路。东京泽住在第一城。魔术师克拉丽斯住在n市,由于考试马上就要举行了,东京希望尽快营救CJB,所以她会选择最短的路径到达n市。克拉里斯也听到了这个消息,害怕受到惩罚,所以他决定通过在他选择的k条道路上进行爆炸,使这些道路失去双向运输的能力,从而使德川泽慢下来,因为这可以为他有足够的时间准备对付东崎的强大魔法铺平道路。德松子知道一些道路会被摧毁,并能立即识别出它们在哪里,但她没有办法阻止这次爆炸,所以她选择在

2020-07-29 18:37:41 530 1

原创 倒水问题BFS

传送门.题意两个杯子容量为A,B,有6个操作FILL(1) 装满AFILL(2) 装满BDROP(1) 倒掉ADROP(2) 倒掉BPOUR(1,2) A倒给B,到B满为止POUR(2,1) B倒给A,到A满为止问最少多少次能有其中一个杯子里面有C升水。输出相应操作。直接看代码#include <iostream>#include <cstdio>#include <cmath>#include <cstring>#includ

2020-07-26 17:21:35 227

原创 最短路

Floyd多源最短路首先,最暴力的做法,三个for,如果i到j的距离大于i到k再到j的距离,也就是dis[i][j] > dis[i][k] + dis[k][j] 那么就更新dis[i][j]的值,复杂度O(n3),没什么用。#include<bits/stdc++.h> //万能头文件 /*多源最短路 Floyd算法*/using namespace std;ll edge[100][100]; //邻接矩阵 edge[i][j]表示

2020-07-26 10:09:00 815 2

原创 Java BigInteger 的基本用法

BigInteger 类在 java.math.BigInteger 包中import java.math.BigInteger; //引用包对象创建BigInteger a = new BigInteger("123"); // 这里是字符串String str = "111";BigInteger c = new BigInteger(String.valueOf((str)));int cc = 22; BigInteger ccc = BigInteger.valu

2020-07-25 20:59:40 595

原创 思维题 循环数组

思维题.题意输入一个n,输入n个数可以进行两个操作第一个操作: 把倒数第二个数放到第一个第二个操作:把第一个数放到最后一个注意连续进行同一个操作算操作一次问把原序列变成1到n的序列最少进行多少次第一个操作分析首先把序列看成一个环,指针指向最后一个数,第一个操作相当于把除了指针所指的数旋转,第二个操作相当于把整个序列旋转,指针指向的数会改变样例1 如果所示,我们可以发现,先找到最长上升子序列,操作1的数量就等于数列长度–最长上升子序列。#include <bits/stdc++.

2020-07-25 20:26:08 185

空空如也

空空如也

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

TA关注的人

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