自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

姚军

富贵非吾愿,帝乡不可期。怀良辰以孤往,或植杖而耘耔。

  • 博客(1327)
  • 收藏
  • 关注

原创 LeetCode并查集问题汇总

模板static const int N = 1e5+5; int p[N]; void init() { for(int i = 0; i < N; i++) p[i] = i; } int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } void union_(int x, int y) { int fx =

2021-12-04 23:23:10 283

原创 LeetCode区间问题汇总

435. 无重叠区间求没有重叠的区间数量。思路:按照区间的右端点排序,保留大于等于last节点的区间。56. 合并区间模拟

2021-12-02 23:24:01 209

原创 SpringBoot集成【elasticsearch,redis,jdbc,mybatis,email】

集成Redis2020.10.24参考视频默认使用的jdk序列化,可以重写redisTemplate配置类,配置具体的序列化方式。在企业中,我们所有的pojo类都会序列化。依赖包<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId&g

2020-10-24 13:19:18 387

原创 常用算法模板

并查集求集合总数求每个集合有多少个元素Dijkstra算法Kruskal算法拓扑排序线性筛素数树状数组Trie树最近公共祖先LCA最大流01背包匈牙利算法哈夫曼树线段树大数加减乘除...

2019-10-25 14:15:26 608

原创 忘记WIFI密码重置光猫与路由器经验

维护人员建议尽量用路由器的WIFI,光猫的WIFI要慢一些。智能网关(光猫)用尖锐的东西,比如圆规或者拆卡针顶住小孔5秒左右,光猫上的闪烁的灯全部消失,接着重启光猫。重启后根据背面的账号和密码连接上WiFi,此时WiFi可以连接,但是网络不可用。进入http://192.168.1.1/网址,找维护人员要账号密码和设备注册的密码,点击注册后等待进度条走到100%,一分钟之后网络就可以用了。下面是正常上网状态光猫的显示,只有2在不停的闪烁,其他常亮。路由器重置依旧是长按小孔,重新启

2023-10-03 13:59:44 546

原创 线段树入门

xx

2022-06-11 22:01:52 236 1

原创 C++刷题常用技巧

小技巧

2022-06-01 07:42:41 426

原创 AcWing 3805. 环形数组

线段树

2022-03-27 23:46:17 458

原创 4316. 合适数对【离散化+树状数组】

离散化+树状数组

2022-03-21 08:25:03 335

原创 《数据结构编程实验》题目汇总

题目汇总

2022-03-18 08:15:50 387

原创 AtCoder Beginner Contest 242

AtCoder Beginner Contest 242

2022-03-11 20:36:06 325

原创 1027 Larry and Inversions (35 分)

树状数组

2022-02-27 17:22:23 161

原创 1009 Triple Inversions (35 分)

树状数组PAT顶级

2022-02-27 10:11:05 201

原创 Prime Path【BFS】【POJ-3126】

分析题目链接:先预处理出10000以内的素数BFS搜索注意POJ的编译器比较老,C++11的语法会编译不通过。代码#include <iostream>#include <string>#include <cstdio>#include <algorithm>#include <cstdlib>#include <utility>#include <queue>using namespac

2022-02-19 12:27:45 335

原创 1107 老鼠爱大米 (20 分)

思路求最值AC代码#include <iostream>using namespace std;const int N = 110;int g[N];int main() { int n, m; cin >>n >>m; int x; int res = 0; for(int i = 0; i < n; i ++) { g[i] = 0; for(int j = 0; j < m; j++) { cin >&gt

2022-01-14 23:16:08 236

原创 1105 链表合并 (25 分)

思路考查点静态链表排序思路:正序遍历的时候顺便记录他的前缀节点,双向链表的思路。然后将两个链表合并到vector中,利用vector输出结果。AC代码#include <iostream>#include <vector>using namespace std;const int N = 1e5+5;struct node{ int add, data, next, pre;}E[N];void print(int head, int t

2022-01-14 23:13:53 389

原创 1109 擅长C (20 分)

分析考查点按行读入字符串哈希表映射AC代码#include <iostream>#include <string>#include <vector>using namespace std;int main() { string str; vector<string> w; for(int i = 0; i < 26; i++) { for(int j = 0; j < 7; j++) { getli

2022-01-14 23:08:24 412

原创 1110 区块反转 (25 分)

分析注意一个比较坑的点:题目给的点可能不在链表中,所以我们只需要把链表中的数据排序。这种坑真不像个人出的题目。思路按照每个节点具有两重属性,所以这里可以用双关键字排序。第一个关键字:当前是第几个块。第二个关键字:当前是这个块中的第几个元素。详细讲解:见B站视频:我不是匠人AC代码#include <iostream>#include <vector>#include <algorithm>using namespace st

2022-01-14 22:35:45 333

原创 1104 天长地久 (20 分)

分析通过率感人的题目考点搜索剪枝排序质数最大公约数思路首先看到数值的位数最高达9位,所以暴力枚举肯定是会超时的,然后看到数据范围比较小,可以直接枚举加剪枝。我一直卡在第三个测试点,这里是需要对结果进行排序。后来我直接用set存,然后输出就对了。注意:这道题还可以考查一些东西,虽然我想到了,但是题目没有考,反而考了一个排序,没有仔细读题,害我找了半天。如果位数最大包含10位,这里可以考查整数溢出。正整数的首位不能为0,比如010,虽然占了三位,但是数值本

2022-01-14 19:40:17 492

原创 1108 String复读机 (20 分)

分析模拟题代码#include <iostream>#include <string>#include <cstring>using namespace std;const int N = 10;int g[N];int main() { string s; cin >>s; memset(g, 0, sizeof g); for(auto c: s) { if(c =='S') g[0]++; else if(c =='

2022-01-11 23:32:56 505

原创 1102 教超冠军卷 (20 分)

PAT1102 教超冠军卷 (20 分)

2022-01-11 23:18:57 268

原创 1101 B是A的多少倍 (15 分)

PAT1101

2022-01-11 23:15:55 104

原创 1106 2019数列 (15 分)

分析视频讲解B站:我不是匠人考查知识点模拟注意当n小于4时,要特殊处理。代码#include <iostream>using namespace std;int main() { int n; cin >> n; string s = "2019"; for(int i = 4; i < n; i++) { s += (s[i-1]-'0' + s[i-2]-'0' + s[i-3]-'0' + s[i-4]-'0') % 10 +

2022-01-11 00:15:29 302

原创 1102 教超冠军卷 (20 分)

分析视频讲解B站:我不是匠人考查知识点排序思路:由于输出的值比较少,直接用变量保存输出的值。注意:不要初始化为0,要把销售额初始化为负数。AC代码#include <iostream>#include <algorithm>using namespace std;const int N = 1e4+5;struct node{ string id; int price; int count; bool operator <

2022-01-11 00:04:38 331

原创 1101 B是A的多少倍 (15 分)

分析视频讲解B站:我不是匠人考查知识点取模保留小数点AC代码#include <iostream>#include <string>#include <cmath>using namespace std;int main(){ int A, D; cin >> A>> D; string t = to_string(A); int P = pow(10, D); int PP = pow(10, t.siz

2022-01-10 23:43:13 268

原创 1103 缘分数 (20 分)

思路模拟代码/*1. 遍历每个值去判断2. 溢出int,用long long3. 注意乘法溢出 */ #include <iostream>#include <cmath>using namespace std;using LL = long long;int main() { int m, n; cin >>m >> n; bool tag1 = false; for(int i = m; i <= n; i++)

2022-01-10 22:28:24 426 6

原创 命名空间namespace

说明命名空间别名匿名代码#include <iostream>using namespace std;namespace first_space{ void func() { cout<<"hello"<<endl; }}namespace second_space{ void func() { cout<<"world"<<endl; }}/*起别名*/namespace hello = first_

2022-01-09 23:33:38 166

原创 1099 性感素数 (20 分)

步骤判断N本身是不是性感素数a. N和N-6b. N+6和N从N+1枚举,判断这个数是不是性感素数a. 判断两种情况ⅰ. N-6ⅱ. N+6b. 判断一种情况ⅰ. N+6,(N+1和N+7)漏了N+1~N+5比N小的时候的匹配情况。ⅱ. 预先将N到N+5之间这几个数处理掉判断素数:a. 优化到根号n代码直接讨论两种情况#include <iostream>#include <cmath>using namespace std;inline

2022-01-09 14:17:43 710 1

原创 PAT乙级1096 大美数 (15 分)

代码/*1. 4不同正因子 1和本身也是它的因子2. 求和3. N 整除 B 表示:B能被N整除 4. Yes首字母大写 */ #include <bits/stdc++.h>using namespace std;int main() { int K; cin >> K; int N; for(int i = 0; i < K; i++){ cin >> N; vector<int> vt; for(in

2022-01-08 14:46:34 684

原创 P1144 最短路计数

分析题目链接:P1144 最短路计数思路:先用BFS求每个节点的最短路径长度,然后使用记忆化搜索统计方案数。注意:使用邻接表保存图的边信息,因为存在重边,如果使用邻接矩阵存储会覆盖重边。代码#include <iostream>#include <vector>#include <cstring>#include <queue>using namespace std;int n, m;const int N =

2021-11-26 20:33:55 256

原创 1793. 好子数组的最大分数

分析题目:1793. 好子数组的最大分数思路:换个思路枚举,每次枚举nums[i]作为子数组的最小值,预处理出该值作为最小值两边能够覆盖的区间,使用单调栈处理。最后统计结果的时候,判断是否下标k,如果包含才更新最大值。相似题84. 柱状图中最大的矩形1856. 子数组最小乘积的最大值代码class Solution {public: int maximumScore(vector<int>& nums, int k) {

2021-10-25 23:22:10 159

原创 1792. 最大平均通过率

分析题目:1792. 最大平均通过率思路:由于每个班级的通过率随着人数的增加单调递减,所以最大的通过率,必然是前k个人,使用大跟堆,每次取出增益最大的班级进行添加,即可得到最优解。yxc视频讲解代码class Solution {public: double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) { // 破题点在哪儿呢?

2021-10-25 22:20:43 98

原创 1922. 统计好数字的数目

分析题目1922. 统计好数字的数目思路快速幂,注意处理溢出,模板题代码class Solution {public: using LL = long long; const static int MOD = 1e9+7; LL qmi(LL a, LL b){ LL res = 1; while(b){ if(b&1) res = (res * a) % MOD;

2021-10-23 00:18:29 151

原创 739. 每日温度

分析题目:739. 每日温度思路:右下降栈,模板题。考查点: 单调栈代码class Solution {public: vector<int> dailyTemperatures(vector<int>& A) { // 翻译一下:找到下一个更大更大元素 右下降栈 int n = A.size(); vector<int> res(n); stack<int> st

2021-10-10 14:37:36 99

原创 CM74 下一个较大元素

分析题目:CM74 下一个较大元素思路:保留最大元素,右下降栈代码class NextElement {public: vector<int> findNext(vector<int> A, int n) { // write code here vector<int> res(n); stack<int> stk; for(int i = n-1; i >= 0; i

2021-10-10 10:21:26 96

原创 LeetCode题目汇总目录

简介从2021.年10月5日开始整理,记录一些经典题的解法,方便自己检索和查阅。周赛2021.10.3 261场周赛2题 1255/36022021.10.2 62场双周赛3题 294/2807题解区间问题题号标签推荐难度题解备注56. 合并区间排序★ ★★★4星C++57. 插入区间模拟★ ★★5星C++可能做不出1288. 删除被覆盖区间模拟★ ★★4星C++区间DP题号标签推荐难度题解

2021-10-05 22:25:31 168

原创 两个有序数组间相加和的Topk问题

题目两个有序数组间相加和的Topk问题考查点:堆 + 哈希表分析数据是十万,所以考虑O(NlogN)O(NlogN)O(NlogN)以下的解法。因为是TopK问题,所以暗示用堆,每次从堆中取出最大值,所以需要大根堆。放入堆中的元素不能有重复,因此要使用哈希表判重。另外,最大值只能是两种情况。a数组往前移动一格,a[i-1] + b[j]b数组往前移动一格,a[i] + b[j-1]所以每次将这两种值扔进大根堆中,取出k个值即为答案。代码#include <bits/st

2021-10-04 22:52:35 873

原创 CD91 排成一条线的纸牌博弈问题

题目考查点:区间DP 博弈题目:排成一条线的纸牌博弈问题思路:两个数组,f表示先手的最大值s表示后手的最大值,最后求两个值的最大值。详情参考左程云的面试指南书籍。代码时间复杂度O(n2)O(n^2)O(n2)#include <bits/stdc++.h>using namespace std;const int N = 5010;int a[N], f[N][N], s[N][N];int main(){ int n; cin>>n; for(in

2021-10-04 13:22:49 290

原创 209. 长度最小的子数组

思路考查点:双指针达到目标值就开始滑动左边的指针代码class Solution {public: int minSubArrayLen(int target, vector<int>& nums) { int n = nums.size(); int len = n + 1; for(int i = 0, j = 0, s = 0; i < n; i++){ s += nums[i]; whil

2021-10-03 23:19:54 81

原创 1248. 统计「优美子数组」

思路考查点:哈希表题目:1248. 统计「优美子数组」思路: 从前往后统计奇数的个数,k = curOdd - preOdd目标奇数 = 当前前缀奇数总数 - 某个前面位置的前缀奇数总数。当我们把前缀奇数放入哈希表以后,等式转换为preOdd = curOdd - k只要这个preOdd存在,就说明是我们需要的一个答案,依次累加进最终结果。代码class Solution {public: int numberOfSubarrays(vector<int>& nu

2021-10-03 10:00:19 97

空空如也

空空如也

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

TA关注的人

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