自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【学习笔记】各种错误记录

stack_overflow递归次数过多爆栈辣heap-buffer-overflow内存是否存在非法访问默认构造函数call to implicitly-deleted default constructor of ‘unordered_set<vector >’unordered_set基于hashtable实现,而我所使用的key_value是vector<int>没有hash键值这篇博客展示了如何自己写hash函数重载...

2020-10-05 09:53:43 510 1

原创 【每天更新】做题&复习列表

?:还有没解决的问题*:看了题解但没有未解决的问题y:没问题了【分类方法依照这个回答】分类情况题目备注回溯?LeetCode51 N皇后慢回溯yLeetCode77 组合回溯?LeetCode39 组合总和回溯?LeetCode40 组合总和II回溯?LeetCode216 组合总和III特别慢DFS*LeetCode 841 钥匙和房间DFSyLeetCode257 二叉树的所有路径BFS

2020-09-11 23:09:33 119

原创 MacOS安装openMP报错【已解决】

我以为是openmp还是没装对,又搜各种装openmp的指令,以及设置path啥的,但是不是已经装过了就是装不上。但是我照着gpt给出的解决方案和网上给的方法一通改,在cmakeLists里面加针对macos的一些指令,都不行。这种选项了,现在openmp是被包含在libomp里的,而libomp又回被brew在安装gcc的时候装上。最开始是报这个错,我以为是cmakeLists出错了,target_link_libraries里面加了。但是我是用的qt,尝试在qt里面加上,路径是。不行,还是报一样的错。

2024-04-11 00:33:27 365

原创 【无标题】

【代码】【无标题】

2023-09-07 05:15:24 52

原创 leetcode 04

【代码】leetcode 04。

2023-09-05 05:19:40 57

原创 【无标题】

【代码】【无标题】

2023-09-05 05:18:29 52

原创 【leetcode 03】【滑动窗口】

用了unordered_set复杂度是n^2logn,看来leetcode可以多用stl少考虑复杂度,先写最暴力的试试。leetcode对于max要求两个参数类型一致,卡的比较紧。这是最开始写的错误版本,对于题目的具体问题理解不足。加了n = 0和1时的特判。

2023-07-31 22:56:32 214

原创 【牛客contest16806 C】【状态压缩】【bitset】

题目链接题目描述一共有 n个数,第 i 个数是 xixi 可以取 [li , ri] 中任意的一个值。设 S=∑xi2S = \sum{{x_i}^2}S=∑xi​2,求 S 种类数。n, l, r 都是1~100首先考虑暴力做法,因为n很小,暴力枚举是10^6用dp[100][10^6] 这样一个数组来存结果。第一维i表示用了i个数,第二维j表示要凑出j这个数,dp[i[][j]取值只有0和1,表示这个数能不能凑出来。首先bool数组可以用bitset来节省空间,bitset每位数只占1b

2021-06-14 21:37:01 144

原创 【学习笔记】博弈论

博弈论的题比较重思路,代码都比较好写,所以我打算脑内做题不写代码,梳理一下遇到的博弈论题目的思路。Codeforces 1215D Ticket Game题意是给一个由数字0~9和问号构成的字符串,长度为N,N为偶数【需要注意可能没有问号】,B和M两人轮流用数字替换问号,M先手,若所有问号都被替换后前一半的数字之和等于后一半的数字之和,B胜,否则M\胜。考虑三种情况:没有问号。只要判断两边数字之和即可。数字之和大的那边问号多,则一定是M胜。剩下的情况,若问号的数量除以二等于两边的差值,则B胜,

2021-03-01 10:42:14 115

原创 【CodeForces 1183H】【dp】【容斥】

题目链接题目大意是给一个字符串s,找出最长的k个互不相同的子串需要注意这道题里子串的定义,是可以不连续的几个字母,例如“asdf”有2^4个子串,分别是“asdf” “asd” “asf” “adf” “sdf” “as” “ad” “af” “sd” “sf” “df” “a” “s” “d” “f” “”(空串)n的范围是1~100, k的范围是1~10^12最开始没好好看这道题里什么是子串,我以为必须是连续的字母,n的数据范围又小,暴力枚举就行唉,不好好看题就急着写的下场这样的话,我们考虑

2021-02-06 15:49:24 132

原创 【CodeForces 1003F】【map编码+暴力kmp】

题目链接题目大意是给一个单词序列,里面如果出现重复的单词组(两个及以上连续单词),就可以将单词组里面的单词用一个字母替换,总长度就会减小。每次只有一个重复出现的单词组可以替换,求总长度的最小值。例如“to be or nor to be”就可以替换成"TB or not TB",总长度就由18变为12。我一开始想的是用“.”替换空格,然后在新的字符串中找最长重复子串。上网搜了一下可以用后缀数组求,也可以二分最长重复子串的长度。但是写着写着发现不可行,这样有可能最后得到的子串不是完整的单词。看了一篇题

2021-02-06 11:35:18 145

原创 【PAT a1052】【静态链表】

题意是给你一条静态链表,让你根据键值排序有两点需要注意:一是题目里可能会给不在给定链上的节点,给节点加一个onlist值,在写cmp函数的时候判断,把不在链上的放到后面去二是有可能出现给定链上没有节点的情况,做题一定要多想一下为0的情况,需要特判输出#include <cstdio>#include <algorithm>#include <iostream>#include <climits>using namespace std;con

2021-02-02 16:07:01 81

原创 【PAT a1032】【静态链表】

又是一道非常简单的题 但是小细节出了问题TvT输入数据中给了当前节点的地址和下一个节点的地址,一看就是静态链表,这道题甚至不需要排序,只需要两条链扫一遍就行。但是很重要的一点是静态链表一开始是用地址来作为数组下标的,这样才能方便找到下一个节点。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MAXN = 1e6 + 5;struct

2021-02-01 13:01:21 97

原创 【POJ2406】【KMP】next数组用于求循环节

这篇博客解释的很清楚,比我讲的要好得多有个结论就是串的长度size能整除size - next[size],这个串就存在循环节,循环节的长度就是size - next[size]#include <cstdio>#include <iostream>#include <cstring>using namespace std;char a[1000005];int nextval[1000005];int main(){ while (scan

2021-01-31 15:45:05 68

原创 【HDU 2087】【KMP】

一道kmp模板题,发现我还是有一些细节没有理解到位先简述一下kmp算法:给定一个文本串和一个模式串,求模式串在文本串中不重叠地出现了几次。若文本串和模式串中有许多部分是一样的,那么采用传统的方法就会有一些浪费。简单一点来说,kmp算法就是对模式串进行预处理,用一个next数组,next[j]的数值表示模式串的第j位之前的串中前多少位与最后多少位相等再加一,也就是如果第j位不匹配的话应该从第next[j]开始匹配。例如,abcabx 对应的next数组的值为011123于是在匹配时abcabc…a

2021-01-31 14:45:33 106

原创 【PAT A1056】【队列】

恶心!!这道题太恶心了!!为什么题面要写的这么难懂,为什么输入数据成心给你添麻烦!本来很简单很裸一看就能想到的一道队列题,非得写这么复杂哼在老鼠的顺序和体重之间,我本来打算用一个map来通过体重得顺序,通过顺序得体重,后来出了bug我才发现,它无法判断你给的int是key还是value = =再细细一想,这不是用数组下标就能解决的事吗 = =||在算排名的时候我不太会,看了题解才知道,由于每组晋级一只老鼠,所以每轮一共晋级group只老鼠,未晋级的老鼠排名就是group+1#include &lt

2020-12-16 21:11:23 70

原创 【PAT A1051】【栈/模拟】

题目大意:给你栈的容量M和k个长度为n的序列,问你将1,2,…,n依次入栈,这k个序列所代表的出栈顺序是否可行。我一开始觉得可行序列可能遵循某种规律,但是找了半天没有发现。看了题解之后才惊觉模拟就可以解决。TvT在将n个元素依次入栈的过程中,判断当前要入栈的元素是否与需要判断的出栈序列里的元素相同,如果相同的话就依次出栈。栈满,或者最后栈中仍有元素则输出“NO”,否则就是“YES”【我实在是个很差的讲题人TvT 这个模拟感觉挺裸的,不知道该咋个描述】#include <cstdio>

2020-12-16 19:42:35 115

原创 【PAT b1025】【静态链表】

Ahhhh回来啦!最近可能集中做一波题www之前去浅尝辄止了半天别的,现在学不下去了再回来做做题TvT在看程杰老师的《大话数据结构》以及胡凡老师的《算法笔记上级训练实战指南》,想多做点题巩固一下我相当于没有的数据结构基础。【p.s.大话数据结构真的讲的通俗易通,程杰老师是用好几个生动的例子来分布讲解一个数据结构,我之前想的是能不能把数据结构具象化、模拟化,串成一个完整的情景和故事讲出来,还是有点难quq】这道题的题意很简单,链表节点信息是由一个五位数构成的地址、数据以及下一个节点的地址构成的。要求是给

2020-12-15 11:31:38 135

原创 【LeetCode834】【树形dp】每日一题day35

道题要求每个节点到其他所有节点的距离之和先考虑一个节点到其他所有节点的距离之和的问题。看到距离首先我想到的就是最短路,但是树上没啥最短路_(:з」∠)_然后我就没想出什么行之有效的方法_(:з」∠)_看了题解是树形dp,那么问题来了,为什么呢?这道题也没有什么最值,看起来距离之和是一个很固定的东西,一点都不动态。其实我觉得,与其说是dp,不如说是递推。这里的中心思想就是从叶子往上推,处理距离distSum[root] = sigma(distSum[root'sChild] + childSum[

2020-10-16 11:16:13 173

原创 【LeetCode24】【链表/递归】每日一题day34

这道题写是能写,就是又臭又长,看了题解的递归写法之后恍然大悟。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, List

2020-10-16 10:21:56 85

原创 【LeetCode416】【DP】每日一题day33

好久不见~我一开始看到,元素和是一个定值嘛,我觉得可以转换成LeetCode40 组合总和II,找nums里面和为一个定值的元素,就写了回溯,结果超时了class Solution {public: bool recall(int cnt, int sum, map<int, int> appearNumber, vector<int> nums) { if (sum == 0) return true; if (sum <

2020-10-12 10:36:27 77

原创 【LeetCode18】【双指针】每日一题day32

题面:给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。这道题我一看,和组合总和差不多嘛,十分钟就写了个回溯,结果一堆bugTvT 虽然它最后还是超时了,但是有一些写回溯的心得我要写一下class Solution {public: void recall(vector<int> nums, vector&l

2020-10-05 11:36:55 81

原创 【LeetCode2】【链表】每日一题 day31

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next)

2020-10-04 19:35:12 65

原创 【LeetCode1】【哈希】每日一题 day30

给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { map<int, int> cha; vector<int> ans; int size = nums.size();

2020-10-03 21:30:32 984 2

原创 【学习笔记】编程规范

参照这个文档变量变量命名用英文小写【禁用拼音】,名词或形容词_名词;类名和结构体名用驼峰左值一定是可以改变的,右值一定是初始化过的变量首次使用之前一定要初始化,初始化的地方离使用的地方越近越好。标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解int error_number;int number_of_completed_connection;常用缩写argument 可缩写为 argbuffer 可缩写为 buff

2020-10-02 12:04:14 101

原创 【LCP19】【DP】每日一题day29

天哪!LeetCode的每日一题终于不是树啦!前几天觉得题目类型有些重复,都是一看就会写的_(:з」∠)_ 开始了动态规划!字符串!!正是我薄弱的地方,希望接下来一个月都是这些能让我好好学习学习这道题一眼就能看出来是我不会的dp。因为[红,黄,红]每一块的长度不固定,真的不知道该怎么设定它的状态,如何状态转移也毫无头绪,好像当前叶子和它的前一片叶子关系不大。我们试着按照动态规划的思路来分析一下:一、...

2020-10-02 11:02:59 154

原创 【LeetCode235】【LCT】每日一题day28

这道题是要找二叉搜索树的最近公共祖先,就是从根往下搜的第一个在两个值中间的数,如果当前根比两个值都大,就递归搜左子树,都小就右子树。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} *

2020-09-29 09:44:47 68

原创 【LeetCode113、106】【递归、DFS】每日一题day26、27

LeetCode113…太裸了,实在没啥好说的,但是我写的程序有点慢,就先把代码贴在这看看以后能不能优化一下。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */cla

2020-09-26 17:13:53 57

原创 【LeetCode501】【中序遍历】每日一题day25

/** * 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: void bianli(TreeNode *t, int &a

2020-09-24 20:48:23 74

原创 【LeetCode617】【递归】每日一题day24

很简单的一个递归嘛,我就建了一颗新树/** * 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: void hebing(

2020-09-23 17:46:18 53

原创 【学习笔记】杂七杂八字符串

字符串的东西好杂,感觉每次用到的时候都在查,就记录一下叭char数组,和数组一样,不能重复赋值,但可以改变单个位置上的值如果你这样初始化char myword[] = "hello";编译器会自动在结尾补上'\0'char数组和string的不同之处在于:数组的大小会在声明的时候确定【不管是像上面那样,还是char s[20];】但是string的大小是在程序运行的时候确定的Strings have a dynamic size determined during runtime, while t

2020-09-23 16:45:10 73

原创 【LeetCode968】【贪心】每日一题day23

题面:给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。一遇到这种题我就一点办法没有TvT一开始觉得,是dp吧,很明显是要从子节点推上来。但是子节点就那么几种情况,而且每种情况下当前节点要做出什么选择也是确定的,因此当前节点的选择与子节点是如何走过来的无关,所以不是dp是贪心。那么考虑状态,放相机和没放相机,但是没放相机的时候又要分为需要放和不需要放。于是:0 表示当前节点需要被监控1 当前节点没放

2020-09-22 10:22:39 62

原创 【学习笔记】《深入理解C指针》

作者:[美] Richard Reese出版社:人民邮电出版社出版日期:2014年很多都是自己的理解,如果有不准确的地方烦请指出来!第1章 认识指针指针实际上就是保存地址的变量内存分类特点全局内存静态内存只在声明它的函数内部能访问,但是内存在程序开始使分配,直到程序终止才消失局部内存在函数被调用时才创建,函数结束就消失动态内存内存分配在堆上,直到释放才消失我以前总有种感觉int a;是一个变量,那么int *a;就是指向a的指针。但是实际上略

2020-09-21 20:50:55 242

原创 【LeetCode78】【位运算/递归】每日一题day21

这个是在补之前的题。这道题就是让你输出一个无重复数字的序列的全部子集,听起来hin简单,但是我却想不出来怎么做。看了题解之后两种方法都很简单,但是我自己又不会写。方法一:每一个数字有取和不取两种状态,想到了什么?二进制。于是每次+1就可以枚举出所有情况class Solution {public: vector<int> t; vector<vector<int>> ans; vector<vector<int>>

2020-09-21 19:29:39 93

原创 【LeetCode538】【中序遍历】每日一题day22

天哪这道题大有文章哈哈哈哈哈哈哈题目里面很重要的一点是二叉搜索树,而我对这一点完全没有在意…二叉搜索树是左儿子小于自己,右儿子大于自己,左右子树又都满足这个条件的一棵树。那么知道这个之后就能发现如果反向中序遍历,得到的就是一个由大到小的序列,直接累加求前缀和就行了。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *r

2020-09-21 10:25:34 71

原创 【LeetCode404】【递归】每日一题day20

/** * 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: void diGui(TreeNode *t, int &am

2020-09-19 19:02:10 53

原创 【LeetCode47】【全排列】每日一题day19

含有重复数字的数组的全排列class Solution {public: void permutation(vector<int> &nums, int cnt, vector<int> &res, vector<bool> &used, set<vector<int>> &pre) { if (cnt == nums.size()) { p

2020-09-18 09:26:41 107

原创 【LeetCode37】【回溯】每日一题day18

这道题是补的前几天的题,是我在写LeetCode79单词搜索的时候错过的【社团出去聚餐了quq】这道题又零零散散写了三天。一眼就能看出来是回溯,但是具体要怎么写一时间我还想不出来,感觉限制条件太多,比N皇后还要复杂。之后看了一眼题解,维护三个bool数组col[9][10], row[9][10], block[3][3][10]。col[i][j]表示j这个数字在第i行用没用过。之后按行来遍历回溯【按列或者块都是可以的】。思想是非常简单直白的。class Solution {public:

2020-09-17 22:18:25 78

原创 【LeetCode685】【并查集】每日一题day17

昨天day16做了一道二叉树的翻转,迭代或者递归都行,很简单没啥好说的。今天这个并查集…我反省,我没看出来。给你一棵有n个节点,n条边的树,让你找出那条多余的边。考虑有两种情况:1、冲突。即有一个点有两个父亲。这个可以统计每个点的入度,也可以在union的时候判断一下是不是已经有父节点了2、成环。这里用到并查集,连接两个点的时候看看它们是不是已经连上了【这里应该能看出来是并查集的】那么就可能出现三种情况:1、只成环。删掉最后一条成环的边即可。2、只冲突。删掉最后一条起冲突的边即可。3、既冲

2020-09-17 21:01:39 79

原创 【LeetCode94】【迭代】每日一题day15

二叉树的中序遍历,递归很好写,但是用迭代要怎么写呢?迭代就是知道了初始条件之后一步步往下推,获得新的条件,继续推。这道题需要用栈储存信息我想到的需要标记它是否访问过,但是我不会改leetcode里面结构体的definition,自己电脑上也还没配leetcode环境【对我一直在它的网页里写题TvT】就先把代码放在这,回头来再试试/** * Definition for a binary tree node. * struct TreeNode { * int val; * T

2020-09-15 23:57:26 75

空空如也

空空如也

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

TA关注的人

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