自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统-学习笔记

详细的操作系统笔记

2022-08-03 12:18:43 116 1

原创 MySQL中存在索引但不能索引的经典场景(笔记)

以%开头的LIKE查询不能使用B-Tree索引 这个是因为B-Tree数的结构决定的,一般推荐使用全文索引来解决类似的全文检索的问题 数据类型出现隐式转换的时候也不会使用索引 不满足最左前缀原则的情况下也不会使用到索引 如果全表扫描比索引快的话,则不使用索引 用OR分割开的条件,如果OR前的条件中的列有索引,而后面的列没有索引,则涉及到的索引将不会被使用 既然后面的列需要走一遍全文扫描,那么我们使用索引扫描就是增加I/O访问,其实一次全表扫描就可以了...

2022-03-28 15:56:30 577

原创 HTTP状态码的类别

状态码类别 类别 原因短语 1XX 信息性状态码 接受的请求正在处理 2XX 成功状态码 请求正常处理完毕 3XX 重定向状态码 需要进行附加操作以完成请求 4XX 客户端错误状态码 服务器无法处理请求 5XX 服务器错误状态码 服务器处理请求出错 HTTP状态码的数量高达60余种,下面为大家介绍比较常见的14中状态码2XX 成功200 OK...

2022-03-12 14:52:06 571

原创 HTTP协议支持的方法

方法 说明 支持的HTTP协议版本 GET 获取资源 1.0,1.1 POST 传输实体主体 1.0,1.1 PUT 传输文件 1.0,1.1 DELETE 删除文件 1.0,1.1 OPTIONS 询问支持的方法 1.1 HEAD 获取报文首部 1.0,1.1 TRACE 追踪路径 1.1 CONNECT 要求用隧道协议连接代理 1.1 LINK 建立和资源

2022-03-12 11:17:14 495

原创 剑指 Offer 38. 字符串的排列(有重复元素的排列)

思路:dfs 暴搜class Solution {public: vector<string> permutation(string s) { vector<string> a; function<bool(char,int,int)> check=[&](char x,int st,int idx){ if(st>idx) return false; fo...

2022-02-21 20:47:43 117

原创 剑指 Offer 43. 1~n 整数中 1 出现的次数(数位dp)

思路:就是数位dp,dp[idx][sum][limit]代表,到idx位,前面有sum个0,有没有limit限制;class Solution {public: int dp[20][50][2]; int len; int pos[20]; int countDigitOne(int n) { for(int i=0;i<15;i++)for(int k=0;k<50;k++) for(int j=0;j<=1;j++)dp..

2022-02-21 16:55:15 158

原创 123. 买卖股票的最3佳时机 III

思路:动态规划,dp1是当前第一次买入的最大值dp2是当前第一次卖出的最大值dp3是当前第二次买入的最大值dp4是当前第二次卖出的最大值转移看代码:class Solution {public: int maxProfit(vector<int>& prices) { int dp1=-0x3f3f3f3f,dp2=-0x3f3f3f3f,dp3=-0x3f3f3f3f,dp4=0; for(int v:prices..

2022-02-20 21:53:34 111

原创 剑指 Offer 32 - III. 从上到下打印二叉树 III

思路:有两种思路,第一种是先全部正向存储,最后再翻转第二种思路是使用双端队列bfs,记录顺时针还是逆时针就行。代码是思路一:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {}..

2022-02-20 00:59:02 170

原创 剑指 Offer 31. 栈的压入、弹出序列

思路:模拟就完事class Solution {public: bool validateStackSequences(vector<int>& pushed, vector<int>& popped) { stack<int> c; int idx=0; for(int v:pushed){ c.push(v); while(c.size(..

2022-02-20 00:20:04 305

原创 剑指 Offer 16. 数值的整数次方

思路:快速幂模板,主要要注意负数的范围,乘以负一的时候会溢出,所以开一下longlongclass Solution {public: double myPow(double x, int n) { if(n==0) return 1; double ans=1.0; int f=1; long long b; if(n<0){ b=(long long)n*(-1); ...

2022-02-20 00:02:48 225

原创 剑指 Offer 15. 二进制中1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量).)。思路:直接算二进制位(简单题)class Solution {public: int hammingWeight(uint32_t n) { int sum=0; while(n){ sum+=n%2; n/=2; } return sum; .

2022-02-19 23:18:02 83

原创 剑指 Offer 28. 对称的二叉树

思路:递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSymmetric(Tree..

2022-02-14 03:34:13 135

原创 剑指 Offer 27. 二叉树的镜像

思路:递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: TreeNode* mirrorTree(..

2022-01-30 06:49:06 491

原创 剑指 Offer 26. 树的子结构

s思路:递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: bool isSubStructu...

2022-01-30 06:43:50 141

原创 剑指 Offer 25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000思路:和归并排序一样就行了/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode.

2022-01-30 06:28:18 129

原创 剑指 Offer 14- II. 剪绳子 II

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入: 2输出: 1解释: 2 = 1 ..

2022-01-30 06:17:40 386

原创 剑指 Offer 14- I. 剪绳子

给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×..

2022-01-30 06:10:04 630

原创 剑指 Offer 07. 重建二叉树

思路:首先我们要明白二叉树先序遍历和中序遍历的性质,在中序遍历中,如果一个点在他在左边,那么就是在他的左子树,如果在右边,就是在右子树,那我们可以用递归来解决划分左右子树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N..

2022-01-30 05:44:41 723

原创 剑指 Offer 13. 机器人的运动范围

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m .

2022-01-30 04:36:55 154

原创 剑指 Offer 06. 从尾到头打印链表

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路:直接遍历 然后存储,简单。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : ..

2022-01-30 04:19:15 1391

原创 剑指 Offer 05. 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000思路:直接换吧,太简单了class Solution {public: string replaceSpace(string s) { string s1; for(char a:s){ if..

2022-01-30 00:49:11 276

原创 剑指 Offer 12. 矩阵中的路径

思路:dfs路径+回溯class Solution {public: bool exist(vector<vector<char>>& board, string word) { for(int i=0;i<board.size();i++){ for(int j=0;j<board[i].size();j++){ if(dfs(board,i,j,word,0)) ...

2022-01-30 00:46:32 275

原创 剑指 Offer 11. 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在重复元素值的数组numbers,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0思路:直接找最小的就行了。class Solution {public: ...

2022-01-29 23:29:14 42

原创 剑指 Offer 10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100思路:其实就是斐波那契数列,用记忆化搜索写吧,比较快。class Solution { vector&lt..

2022-01-29 23:21:05 46

原创 剑指 Offer 04. 二维数组中的查找

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target=...

2022-01-29 23:14:17 47

原创 剑指 Offer 03. 数组中重复的数字

找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000思路:简单class Solution {public: int findRepeatNumber(vector<in...

2022-01-28 19:11:23 127

原创 剑指 Offer 10- I. 斐波那契数列

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。思路:简单的记忆化搜索class Solution {private:...

2022-01-28 19:01:13 128

原创 剑指 Offer 09. 用两个栈实现队列

用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )思路:题目比较简单,使用两个栈,我们知道栈是后进先出,队列是先进先出,那么栈颠倒了就是队列的顺序,我们只要在出队的那个栈如果是空的话,那么就把入队的那个栈颠倒到出队那个栈,如果是非空的话,就直接出栈就行。class CQueue {private: stack&lt.

2022-01-28 18:48:12 256

原创 2021HDU多校第九场1008HDU7073 Integers Have Friends 2. 随机化

HUD地址:https://acm.hdu.edu.cn/showproblem.php?pid=7073题目大意:选择数组中最多的数,使得他们模m同余(m>=2)。求最大的数量。思路:然后我们全选奇数或者全选偶数的话,那么我们的答案是最少是n/2的,所以我们随机两个下标,他们都在正确答案的集合里的概率就为1/4,当我们随机k次时,失败的概率就是(3/4)^k,是非常小的,所以这个随机策略是可行的,知道两个数后,我们可以得到他们直接的差t,那么这个正确集合的m必然是t的质因子,所以我...

2021-08-19 00:04:14 146

原创 2021HDU多校第五场1004 Another String-双指针

https://acm.hdu.edu.cn/showproblem.php?pid=7015题意:对于每次以i来分割字符串,计算两个分割串的子串的k-匹配的数量。思路:当我们计算到ans[i]是,我们可以当成从ans[i-1]加上【1-i】字符串和【i+1,n】的k-匹配数量再减去【1-(i-1)】和【i-n】的k-匹配的数量。sum1[i]:【1-(i-1)】和【i-n】的k-匹配的数量sum2[i]:【1-i】和【i+1,n】的k-匹配数量那我们怎么算这个呢,我们设dp1[i.

2021-08-05 03:53:42 209

原创 HDU2021多校第五天 1009 Array-树状数组求二阶前缀和

https://acm.hdu.edu.cn/showproblem.php?pid=7020题目大意:求出区间众数严格大于区间一半大小的子区间的数量。思路:先对每一个数求出对应的位置排列,S[j]代表1-有多少个i,易得s[r]-s[l]>r-l-(s[r]-s[l])的时候子区间{l+1,r}是合法的,然后呢,我赛时就不知道怎么处理二阶的前缀和,数据结构菜鸡。可以参考:P4062 [Code+#1]Yazid 的新生舞会洛谷上的一道一模一样的题洛谷上的题解:https://

2021-08-05 00:01:07 383

原创 Codeforces Round #736 (Div. 2)E. The Three Little Pigs-长除法求多项式系数

https://codeforces.com/contest/1549/problem/E题目大意自己悟吧,不解释了。这题在赛时我想的是fft,但是题解说不用fft就能求出多项式的系数,fft在这题时间复杂度有点高。使用多项式长除法就能求出系数,k^x的系数就是抓x个pig 的答案。求出此多项式。(这题dp也能做)代码参考题解:https://codeforces.com/blog/entry/92335#include <cstdio>#include ..

2021-08-03 20:26:25 182

原创 2021牛客第五场 I.Interval Queries-回滚莫队

如图:一道很裸的回滚莫队,注意加入的操作和回滚的操作就好了。#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <iostream>#include <algorithm>#include <queue>#include <cstdlib>#include <stack>#..

2021-08-02 02:44:42 175

原创 Educational Codeforces Round 112 E.Boring Segments-线段树+双指针

https://codeforces.com/contest/1555/problem/E这场的e好像比较简单。题目大意,给你n个线段,最大点是m,每一个线段有一个权值w,你能选择线段来覆盖1-m这个区间的,选择的代价为最大权值和最小权值的差。问你最小的的代价是多少。思路:先把线段按照权值排序,使用双指针来维护每一个线段i能选择最左边能合法的一段区间,那么a[j].sum-a[i].sum就是从i开始最小的答案了,检查是否合法可以用线段树来维护最小值,最小值不等于0 那就说明所以点都被覆盖了。

2021-07-31 01:36:26 174

原创 Gym - 100917F Find the Length-用最小路径树求最小环

https://codeforces.com/gym/100917/problem/F题目大意:就给你一个无向图,求出所有点属于的最小环大小。思路:我们给每一个点用dji求出最小路径树,然后对于一颗最小路径树,求环。和树根构成环只有两种情况:(1) 树根到其他点有边就能构成环(不是树根直达的点)(2)不同子树的点有边(树根能直达的子树)不画图了,你们自己画一下就懂了。#include <cstdio>#include <cstring>#incl

2021-07-28 18:46:24 206

原创 2021牛客第四场-E Tree Xor-线段树区间异或

https://ac.nowcoder.com/acm/contest/11255/E题目大意:有n个点,每一点有一个区间[l,r]范围的权值可能,有n-1条边,边上的权值为w,w=w(u)^w(v),问你满足权值范围和边权值的方案数。思路:我们把树根的值设为0,这样其他点的w值也随之确定,然后树根的值变为a,那么其他点的值也会变为w^a。根据这个性质,那我们只要求出a的范围就好了,即所有的区间异或对应的w值,就可以求出a的范围,再求出所有点a的范围的交集。对于区间异或上w值,我们可以使用线段.

2021-07-28 04:17:47 671

原创 2021牛客第一场H.Hash Function—FFT求差值的卷

https://ac.nowcoder.com/acm/contest/11166/H官方题解。比赛时,我们都是用暴力写的,数据太弱了,今天突然想起来,用fft写了一下。主要使用fft求差值的卷,乘法我们在多项式的系数上做,加减法我们在多项式的指数上做。做减法的时候,我们把负数加N,变成正数即可。下面是代码:...

2021-07-25 18:09:55 177

原创 Planes, Trains, but not Automobiles-求最小路径覆盖的起点终点

https://vjudge.net/problem/Kattis-planestrainsbutnotautomobiles题意:给一个有向图,火车可以由任意一个起点开始,每一个点只能经过一次,在坐火车的时候你可以选择坐飞机到另外一个点,求坐飞机的最小次数,以及求出可能在哪里坐飞机和降落。样例:思路:求坐飞机次数 就是裸的最小路径覆盖,然后bfs求出可能的起点和终点。#include <iostream>#include <cstdio>#include.

2021-07-22 00:25:39 117

原创 牛客第二场 G.League of Legends-单调队列优化dp

https://ac.nowcoder.com/acm/contest/11253/G上面出题人给的题解:思路基本差不多,这里主要说一下合并小区间的dp,dp[i][j]代表前i个分成j组最大的时间max我们首先将区间排好序,如果满足a[k]>b[i],则有j都是由j-1转移过来的,所以可以用滚动数组优化一维空间(不优化也能过吧);每次更新的时候,我们都要寻找所以a[k]>b[i]值,因为b[i]其实是排序好的,我们可以用单调队列来优化,然后对于每次转移我们需...

2021-07-20 23:06:32 260 1

原创 2021牛客第一场 I. Increasing Subsequence-前缀和优化dp

https://ac.nowcoder.com/acm/contest/11166/I思路:dp[i][j] 是表示上上步走在i点,上一步走在j点的期望。首先我们很容易想到n^3的做法,那我们必须考虑去优化一维的时间复杂度。我们可以考虑使用前缀和优化dp转移。我们枚举i点,那么j点必须是比i点要大的然后在他们的pos(位置)存入相应的值,再计算后缀和,那这些就是i点所有合法的情况了。我们简单想一下,我们转移时可以由dp[i][x1]->dp[x2][i],即转移去它的前一步,可以知道.

2021-07-19 01:58:05 197

空空如也

空空如也

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

TA关注的人

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