自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 第 358 场周赛

太久没打算法竞赛了,代码写的很糙,赛时做出前3题,本文记录下3题赛时代码+最后一题的补题代码和思路。

2023-08-13 22:54:57 198

原创 跨域解决方案

跨域就是:前端页面使用发送 AJAX 请求时,这个请求的目标地址与当前页的地址不同源。(协议、域名、端口不同)

2023-06-23 23:05:26 118

原创 深入理解ThreadLocal

ThreadLocal是线程本地变量。

2023-05-30 10:26:31 110

原创 排序之快速排序

快速排序基本思想+代码实现

2023-03-08 23:34:32 106

原创 Windows安装Mysql8.0.26

Windows 安装Mysql 8 详细教程

2022-11-16 00:03:35 173

原创 安装IDEA 2021.3.1

记录安装idea

2022-11-15 22:07:57 398

原创 windows安装jdk1.8

本博文主要记录自己安装jdk的流程,留做备忘。

2022-11-14 22:29:29 648

原创 ACM图论模板

最短路Dijkstra不能使用在含负权的图中朴素版dijstra:时间复杂度 O(n2)O(n^2)O(n2)#include<bits/stdc++.h>#define ll long long#define mem(a) memset(a,0,sizeof(a))using namespace std;int n,m,g[600][600];int d[600];bool vis[600];int dijstra(){ memset(d,0x3f,sizeof d);

2022-04-14 00:49:24 86

原创 有向图的强连通分量

tarjan算法可以用来求强连通分量(SCC)作用: 将有向图(通过缩点,将所有连通分量缩成一点)——>有向无环图(DAG)满足拓扑序。tarjan算法梳理的思路:1.加时间戳;2.放入栈中,做好标记;3.遍历邻点:1)如果没遍历过,tarjan一遍,用low[j]更新最小值low;2) 如果在栈中,用dfn[j]更新最小值low4.找到最高点:1)scc个数++2)do-while循环:从栈中取出每个元素;标志为出栈;对元素做好属于哪个scc;该scc中点的数量++例题:Acw

2022-03-22 19:36:46 289

原创 Closest Equals(离线/线段/思维)

题面:题目大意给出一个序列,每次查询一段区间内距离最近的相同元素之间的距离.思路:由于只有两个相同的数在查询区间才会对答案产生贡献用一个 pre[i]pre[i]pre[i] 来记录和a[i]a[i]a[i]相同的数上一次出现的位置这两个相同的数产生的贡献就是 w=i−pre[i]w = i - pre[i]w=i−pre[i]我们把这个贡献放在pre[i]pre[i]pre[i]这个位置上。那我们要查询[l,r]的答案,这就是区间求最小值问题了但是我们这里还有一个问题就是:我们查询[

2022-03-10 16:32:07 306

原创 Daimayuan订单编号(set/并查集)

题目链接:http://oj.daimayuan.top/problem/465题意:给定n个整数,对于每个数你需要输出前面没有出现过的且大于等于它本身的最小正整数。样例输入:62 3 4 1 1 1样例输出2 3 4 1 5 6代码:set<pair<int,int> >#include<bits/stdc++.h>using namespace std;set<pair<int,int> >s;//用set维护一些可行

2022-03-05 15:57:29 480

原创 最大连续区间和问题

问题:在数字串中,每次在不重复的数上加0 ~ n个x,每次加x都是独立的,并且求每次最大的子串和。#include<bits/stdc++.h>#define ll long longusing namespace std; const int N = 5005;int f[N][N];//f[i][j]表示以i结尾的、给j个元素添加x后的最大连续数组和 void solve(){ int n,x; cin>>n>>x; for(i

2022-03-01 10:57:50 371

原创 【状压DP】

文章目录最短Hamilton路径最短Hamilton路径题意:给定一张 n 个点的带权无向图,点从 0∼n−1 标号,求起点 0 到终点 n−1 的最短 Hamilton 路径。Hamilton 路径的定义是从 0 到 n−1 不重不漏地经过每个点恰好一次。sol:状态表示:f [ i ] [ j ] :表示现在是i这个状态(i是一个二进制数,表示已经走过哪些点),最后停在j这个位置,所有走法的集合的最小值。状态计算:f [ i ] [ j ] 假设可以由 f [ x ] [ k ] 这个集合转

2021-12-13 22:44:58 639

原创 区间贪心问题

文章目录1.区间选点2.最大不相交区间数量3.区间分组1.区间选点题目:给定 N 个闭区间 [ai ,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。输出选择的点的最小数量,位于区间端点上的点也算作区间内。思路:对区间右端点从小到大进行排序,然后枚举区间如果区间左端点不能覆盖end,说明要再开一个点,即ans++。代码:#include<bits/stdc++.h>using namespace std;const int N = 1e5+5;str

2021-10-25 12:43:49 56

原创 悬线法,单调栈解决 HDU6957 Maximal submatrix

悬线法可以用来解决最大子矩阵等问题模板题目:https://www.luogu.com.cn/problem/SP1805大意:在一条水平线上有n个宽为1的矩形,求包含于这些矩形的最大子矩形面积。代码/*l[i]:为当前位置i的悬线能扩展到的最左边的位置,初始为i ,我们需要进一步判断还能不能进一步往左扩展。如果当前l[i]==1 ,则已经扩展到了边界,不可以。如果当前a[i] > a[l[i] - 1],则从当前悬线扩展到的位置不能再往左扩展了。如果当前a[i] <= a[l[

2021-09-16 15:57:58 149

原创 平均值最大连续子区间

二分答案+前缀和+维护区间长度题目要求:求区间长度>=F的平均值最大的连续子区间的平均值#include<bits.stdc++.h>using namespace std;const int N = 100010;int n, F;double a[N], s[N];bool check(double avg){ for (int i = 1; i <= n; i ++ ) s[i] = s[i - 1] + a[i] - avg; double mi

2021-07-26 21:05:22 1041

原创 2021CCPC湘潭E题-矩阵快速幂

题意:给一个整数n,会有2^n个不同的cp字符串求每个不同字符串中,有ccpc子串的字符串的个数总和答案对1e9+7取膜首先根据样例和题目意思的得到递推公式:然后用矩阵快速幂来优化:现在网上找不到能交这题的oj,所以不知道对不对,先贴上能过样例的代码吧:#include<bits/stdc++.h>#define ll long long#define mem(a) memset(a,0,sizeof(a))using namespace std;const int .

2021-07-09 13:35:45 851 5

原创 最短路——bellman-ford算法

适用条件Bellman-ford算法适用于单源最短路径,图中边的权重可为负数即负权边,但不可以出现负权环。和有边数限制的最短路 。#include<bits/stdc++.h>using namespace std;const int N = 1e4+5;int n,m,k,d[N];struct node{ int a; int b; int v;}edge[N];int pre[N];int bellman_ford(){ mem

2021-05-02 00:06:28 150

原创 最短路问题——dijkstra算法

算法思想Dijkstra算法采用的是一种贪心策略1.首先声明一个数组dis来保存起始点到各顶点的最短距离。 再声明一个数组vis,用来标记已经找到的最短经的点。 设vis是保存已经找到最短路径顶点的集合 T 2.首先从起点开始,每次从待加入集合T的点中找到一个顶点u,该顶点是与集合T距离最近的点,然后将该顶点加入集合T,更新与该顶点有边的其他顶点vd[v]=min(d[v],d[u]+w(u,v))(1)若顶点v,已经在集合中: 这样更新保证了集合T中的顶点u,对应d[u]都是最

2021-04-27 14:17:34 287

原创 Codeforces Round #711 (Div. 2) C题 (动态规格,记忆化搜索)

CF 711 (div.2) c题题目大意:一个粒子年龄为k,一开始往右,每穿过一个板子年龄就会减1,且会产生一个向反方向的年龄为k-1的粒子(如果当前粒子年龄为1,则不会产生反方向的粒子)。给定n和k,n是由n个板子,k是初始粒子年龄。求出最后总共会有多少个粒子。dp动态规划d p [ i ] [ j ] dp[i][j]dp[i][j]表示当前寿命为j jj还需要穿过i ii层的粒子最终会变成多少粒子,由题意得d p [ i ] [ j ] = d p [ n − i ] [ j − 1

2021-03-30 15:39:09 54

原创 加权并查集(Cube Stacking),种类并查集(Bug‘s Life)

纪念下吧,理解了几天的题目o(╥﹏╥)o加权并查集题目链接:Cube Stacking种类并查集题目链接:Bug’s LifeCube Stacking代码#include<iostream>#define ll long long#define mem(a) memset(a,0,sizeof(a))#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namespace std;int f[

2021-03-20 11:47:48 227 2

原创 2021年度训练联盟热身训练赛第二场NIH Budget(分组背包)

题目链接:https://ac.nowcoder.com/acm/problem/219018题意:t组测试,接下来每组测试第一行输入多少组病例(n),和预算(m),接下来有n行,每行输入该组病例的4个治疗方案(花费p,救v人),每组病例只能选择一个治疗方案。求能救的最大人数。思路:该题为01背包的变形分组背包问题01背包:有n种物品,有一个容量为m的背包,每种可选可不选,求背包所能放的最大价值; for(int i=1;i<=n;i++) for(int j=k;j&

2021-03-16 11:25:29 243 4

原创 HDU 1394 Minimum Inversion Number(线段树,逆序数)

题目链接:HDU 1394题意给出一个(0,n-1)的任意排列,将序列中的第一个数移到最后的位置,产生新的序列。问在所有产生的序列当中,逆序数最小的是多少?思路我们可以发现第一个数x[i]后面有x[i]个数比x[i]大,有n-x[i]-1个数比x[i]小,所以将序列第一个数x[i]移到后面,逆序数(sum)的改变为 sum+=n-x[i]-1-x[i];所以我们需要求出初始序列的逆序数,由于数据小,可以暴力求逆序数,,也可以用归并排序求逆序数,下面代码用线段树求逆序数。线段树求逆序数思路遍历待

2021-03-12 22:50:35 128

原创 Anniversary party(树形DP入门)

HDU-1520#include<iostream>#include<algorithm>#include<vector>#define ll long long#define mem(a) memset(a,0,sizeof(a))#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namespace std;const int N=6005;int n,value[

2021-03-07 21:57:21 138

转载 最长公共子串

最长公共子串原理视频链接#include<bits/stdc++.h>#define ll long long#define mem(a) memset(a,0,sizeof(a))#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namespace std;int dp[10005][10005];int main(){ string a,b; while(cin>&gt

2021-03-07 17:24:55 78

原创 Balancing Act(树的重心)

题意解析详见大佬博客:https://blog.youkuaiyun.com/pengwill97/article/details/77340707代码#include <vector>#include <iostream>#define ll long long#define mem(a) memset(a,0,sizeof(a))#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namesp

2021-03-07 17:13:51 182

原创 Codeforces Global Round 13D题解

题目链接:Codeforces Global Round 13D二进制,规律题意当 a&b=b 时,a可以到达a+b;输入u,v询问,输出u是否可到达v。思路a只能到达a+b;所以u>v时,一定不能达到;u==v时由题意可以达到u<v时;如果能达到,v的二进制一定是由u的二进制中的1进位来的;如a=5(101),b=1(001),a&b=b,所以a(5)可以到a+b=6(110)所以当从二进制右边到左边时,任意位置u包含1的个数> = v包含1的个数,

2021-03-02 14:09:43 49

原创 栈和排序

题目链接:https://ac.nowcoder.com/acm/problem/14893题目描述给你一个1->n的排列和一个栈,入栈顺序给定你要在不打乱入栈顺序的情况下,对数组进行从大到小排序,当无法完全排序时,请输出字典序最大的出栈序列。输入描述:第一行一个数n第二行n个数,表示入栈的顺序,用空格隔开,结尾无空格输出描述:输出一行n个数表示答案,用空格隔开,结尾无空格示例1输入52 1 5 3 4输出5 4 3 1 2说明2入栈;1入栈;5入栈;5出栈;3入栈;4

2021-02-08 21:39:34 1753 1

原创 2021牛客寒假算法基础集训营3【G题糖果】(并查集)

知识点:并查集(不相交集合)题目链接:https://ac.nowcoder.com/acm/contest/9983/G互为朋友拿到的糖果应该一样多,并且为集里朋友能得到糖果的最大值Code#include<bits/stdc++.h>using namespace std;int n,s[1000005],a[1000005]//s[]用来表示朋友之间的关系,a[]用来储存能获得的糖果;//int find(int x){// int r=x;// while(s[r

2021-02-06 12:14:43 145

空空如也

空空如也

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

TA关注的人

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