自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 codeforce 954 div3 G2题

即找到每一个数字的倍数,再找到每一个数字的因数。质因子分解可以顺着分解,也可以逆着分解。

2024-07-13 09:12:43 246

原创 分治思想 +各种数据结构(线段树,归并排血)

很强,还没总结出来。

2024-06-11 15:03:56 373

原创 分块优化思想

适用场景n​n​。

2024-05-27 11:37:19 175

原创 python 绘图

【代码】python 绘图。

2024-04-18 15:22:19 386

原创 写代码易错点整理

这样的使用会导致presum1和presum2中下一次调用时的真正指向的数组已经swap,如果换成指针就可以避免下次调用时还是原来的。为了在使用引用时也可以swap,可以加一个bool变量,进入这个函数时看一下是否被swap过。会导致越界错误,结果错误等。调试时会发现某个值突然很大,有可能是重复声明导致的。

2024-01-01 14:49:46 471

原创 加速写代码的板子

s.substr(id,len) 表示从s字符串的下标id处开始的一个长度为len的子字符串。先说结论,无论数组总个数n为奇数还是偶数,都可以用下式表示。当n = 4时为nums[2]与nums[1]当n = 5时为nums[2]与nums[2]

2024-01-01 14:49:35 362

原创 中国剩余定理(CRT)

如何利用中国剩余定理求解非质数取模即注意事项,以及为什么可以这样做?

2023-10-16 09:38:22 178

原创 背包问题讨论

题目链接

2023-10-16 09:28:16 105

原创 树中的拓扑排序

注意事项(1)对于无向图,度为1的节点视为叶子结点,一般通过一个队列可以进行维护,清空一次队列内元素的过程相当于把最外围的叶子结点删除一波,对于队列内的结点,遍历其邻居,修改其度数减一,如果为1那么加入队列。注意:(a)不需要vis数组,因为我们只会把度数为1的节点加入队列,一个节点只有一次机会度数为1!(b)特殊情况下,可能图中只有两个叶子节点相连,这时候需要特殊处理,可以参见第二道例题。

2023-10-01 17:08:05 212

原创 树中的算法

(2)不经过a,那肯定是a的某个子孙c,c选择了众多儿子路径中的最长的两条组成的,这个最长路径经过了c。此时最长路径由于肯定到达了叶子结点,那么必然会走a最远儿子那条路,因为如果不走,我们就可以构造更长的一条路。随便找一个节点a开始bfs或dfs,找出以a为根节点的树中离a最远的节点b,那么b必然是直径上的一个端点,然后以b为根节点开始bfs/dfs,就很容易计算出直径了。以a为根节点的树中,直径对应的路径可以经过a,也可以不经过a。(1)经过a的话,很容易,b必然是端点。证明:为什么b为直径上的端点?

2023-09-30 12:19:20 33

原创 python读写各种文件

【代码】python读写各种文件。

2023-09-04 00:00:04 67

原创 双指针——力扣刷题

一般是滑动窗口,子数组类型做法:一般我们遍历右端点,然后根据条件滑动左端点。左右端点均只向右移动。要求:左端点向右滑动到某一位置后不可能在下一个枚举的右端点时,发生左移现象。

2023-09-03 23:53:32 327

原创 力扣的板子

【代码】力扣的板子。

2023-08-13 19:27:51 648 1

原创 并查集解决染色问题

倒着遍历染色区间,首先二分找出区间中第一个没有被染色的点,然后通过并查集枚举并merge所有没有被染色的点,merge操作为将点id连接到find(id)即可,这样每个点只会枚举一次,时间复杂度为O(n)。

2023-08-12 10:35:35 152

原创 OpenGauss ustore查询过程的流程

4、查看元组的TD字段,得到创建该元组时对应的事务槽号码。然后从对应的事务槽中不断按照链表的形式,从新往旧找(按照block pre pointer指针),直到找到第一个满足页块号和偏移量等于TID(1,2)的元组,执行第2步。事务槽是存在复用的,并不是一个事务槽始终被一个事务占据,所以一个元组在不断更新的操作中,可能会对应不同的事务槽,也就是需要从不同的undo链中跳来跳去,直到找到满足元组指针(偏移量)和可见性都满足的元组。2、计算其事务xid是否可见,在Map中计算其csn和快照csn的大小关系。

2023-07-12 15:56:33 174

原创 数据库基本概念

a、创建(create):create index,create tablespace……b、删除(drop,truncate):truncate删除整个数据,drop删除整个表(数据+表结构)两者都不用commit,也不能回滚c、修改(alter):alter table,alter database,alter tablespace……d、查看(show,desc),show parameter(查看参数的值),desc 对象-查看对象的结构。

2023-07-05 19:05:47 334

原创 线段树及动态开点

2.问题满足加法性质,这里的加法性质指一个大区间的答案可以通过其分割后的两个子区间的答案合并获得,例如最大值,最小值,区间和。以及本题中的绝对众数(区间老大)。但是像如区间众数、区间最长连续、最长不下降问题就不满足加法性质,也就不能用线段树。遇到绝对众数,就想摩尔投票,本质就是从一个个子区间中选出老大,老大可能这个区间中名副其实的绝对众数,也可能不是,所以最终得到答案后需要判断一下个数(二分)。2、lazyTag操作时,注意修改自身节点lazy置零。1.区间修改,区间查询问题。什么情况下使用线段树?

2023-06-05 23:51:10 233

原创 重载运算符三个const的作用

这里可以看到,重载运算符函数不匹配“const Point”与“Point”的相加类型,因为如果不加第三个const时,调用此运算符的对象是变量,而在C++中 const object-> 变量是不允许的,因为一旦变为变量,那么就意味着可以修改这个对象的内容,也就违背了const的定义,故报错。2.第二个const 的位置后面是函数参数,表明读取参数时,将其视为常量,保证当传参为const类型时也可接受,否则如果只是接受变量,那么就无法处理+常数的操作。对象可以是const类型。

2023-06-05 20:32:55 1140 2

原创 快速求质因子

在后续构建并查集时,可以通过索引来构建并查集,nums数组中点的索引作为一个点集,所有(质因子+n)作为一个点集,这样可以避免对1的特判,因为当数组中全为1时,那么对于并查集来说是连通的,但是实际上并不符合题意。首先明确,1不是质数,故质因子中不包含1。时间即可得到所有的质因子,那么时间复杂度为。,预处理得到每个数字的最小质因子后,[1~n]范围内的质数个数为。

2023-05-29 18:29:36 609

原创 回溯递归的剪枝模版

主要看灵神的二分模版,如何使用递归实现在Omk时间内,实现对于二分中每个条件的判断。

2023-05-29 16:20:08 1039

原创 常用python语法总结

原因,python中的string不支持下标访问,和c++不一样。range(a,b),循环中包含a,不包含b。题目:删除字符串中的所有“AB”,“CD”

2023-05-23 09:13:21 504

原创 时间复杂度:根号n一般来说大于log(n)

对这函数求导后,比较分母大小,可以得到结论。两个函数的图像如下,只在。当n>16时,就必然。

2023-05-15 00:28:56 2650 5

原创 python读取xml文件

python解析xml

2022-09-09 15:34:55 953

原创 C++ 刷题板子

、、、

2022-06-01 08:31:52 130

转载 C++树状数组板子

树状数组适合类型:区间查询和单点修改,都为log(n)复杂度如果原数组长度为n,那么树状数组长度为n+1两个操作:(1)query(i+1),结果为数组下标【0,i】的前缀和(2)add(int x,int u),给数组下标为x-1的值加u题目链接:https://leetcode.cn/problems/range-sum-query-mutable/板子:class NumArray {public: vector<int> tree; int lowb

2022-05-31 18:59:48 104

原创 C++ sort和stable_sort函数的理解

题目传送门自定义sort题目注意,本题中由于都是数字日志时保证原相对顺序,那么就要求有以下两种思路:1、 使用稳定的排序算法,如归并排序或者插入排序这种。(一般不用冒泡,太慢了)。2、我们自己封装一个类,保存string,和原id下标,直接调用sort函数就行,比较简单。在实现思路1的过程中,就需要使用stable_sort函数,在使用lambda表达式写比较函数时,需要注意:1、comp比较函数对象(即满足比较 (Compare) 概念的对象),若第一参数小于(即先序于)第二参数则返回 ​tr

2022-05-03 15:46:11 829

原创 C++ 内存泄漏

参考链接里面的示例代码typedef struct DATA_{ DATA_(int size = 10){ pVoid = new char[nSize]; this->size = size; } virtual ~DATA_() { if (pVoid){ delete pVoid; } } int nSize;

2022-04-19 22:22:32 816

原创 C++中map,set有序查找的一些技巧代码

auto it1 = st.lower_bound(ops[i][1]);auto it2 = st.upper_bound(ops[i][2]);res += distance(it1, it2);题目链接class Solution {public: set<int> st; void dfs(TreeNode* root) { if(root) { dfs(root->le

2022-04-19 11:03:41 204

原创 面试智力题

1.五个人知道自己的成绩,但是不能告诉其他人自己的成绩,就是不能让别人知道自己的成绩,问怎样可以得到这五个人的平均成绩。(1)把每个人的成绩分成乱分成4份,告诉别人,这样总共20份,加起来除以5就行。(2)每个人随便想一个数加上自己的成绩告诉其他人,然后另一个人再加上自己的成绩和自己的随机数,这样循环五次之后的数字是总成绩加上每个人想的随机数,然后把每个人的随机数减去除5就可以知道了。2.25匹马,每场比赛只能跑5匹,跑出前三名,最少比几次。至少7场比赛...

2022-04-16 21:28:15 86

原创 BFS,找出选择图中哪个点开始bfs轮次最少

题目链接点燃木棒点燃木棒专场题解我的代码最小高度数

2022-04-10 22:09:33 248

原创 C语言读取字符串的一点研究

关于怎么读取char a[100]这样一个字符串,一般来说scanf(“%s”,a)是可以解决的,但是这样读进来会导致一旦遇到空格就停了,不能达到我们读取一行才停的效果。接下来开始如下研究第一版代码:char str[100];char ch;int id = 0;while(ch = getchar() && ch!='\n'){ str[id++] = ch;}我们先来一个知识,所以如果先计算ch = getchar()获取到了字符,左值不为零,且该字符不是回车符就

2022-04-06 22:53:24 2113

原创 C++ 怎样输入字符串

按行输入字符串,不遇空格不停的那种,需要用到这个函数string strgetline(cin,str);否则如果单单只是cin>>str,那么一旦遇到空格就会停。容易出错的案例在读取字符串前会先读入两个数字的话,遇到‘\n’停止,实际上回车符还在IO字符读缓冲区,直接运行getline()会先读进来一个回车符,第二次才是读到真正的字符串。正确写法如下:#include<stdio.h>#include<iostream>#include<bit

2022-04-06 20:23:26 2878

原创 字符串哈希

题目传送门解题思路:二分+双模哈希记忆出错的几个点:p和h数组都为long类型p[0] = 1必须加上求固定长度为k的cur子串哈希值时,记得long cur1 = ((h1[i][t]-h1[i][j-1]*p1[k])%mo1+mo1)%mo1;当前计算的是字符串path[i]中下标为j-1开头,长度为k的字符串的哈希值,同时为了防止相减后出现负数,需要取模后加模再取模。class Solution { int m; int max_len = 0; lon

2022-01-31 18:17:32 255

原创 求解有向图中的最大环问题

题目链接思路:主要分为两种情况:1.两个人互相喜欢,那么就可以在这两个人两边各自不停地添加座位,选择一个最长的链即可。然后把所有两个人互相喜欢得到的链拼在一起是第一种最大的选法。2.选出一个长度大于等于三的有向环,这里使用hash_map来保存之前节点的深度,一旦找到一个新的节点他的深度保存过,那么相减+1就是一个环,遍历所有的环取最大就是另外一种选法。代码如下:class Solution { int n,a,b,tmp=0; int ret = 0; vector&l

2022-01-03 23:46:37 1713

原创 怎样将YOLOv5部署到移动端 报错:name ‘SPPF‘ is not defined

问题描述:ultralytics发布的yolov5 6.0版本中已经加入了export.py文件可以将训练好的模型.pt转换为.tflite格式的轻量化模型部署在Android端,但是注意6.0版本当前代码只能转换5.0版本的。我在使用6.0版本的export.py代码时报错 name ‘SPPF’ is not defined,找了半天报错的位置才发现,6.0版本模型文件中model/commen.py文件夹中多了一个SPPF模块来代替5.0版本中的SPP模块,当然旧的SPP模块依旧还在,而在将模型转

2021-12-20 11:10:33 5668 2

原创 写DFS的加速写法

这里写目录标题1. 递归函数里自带字符串,字符串长度不能过长。2. 递归的结束条件最好是写在下面的循环中开始出现分叉的时候,如果写在刚刚进入递归的时候,那么每次进来都要判断一下,其实不需要每次进来都判断的。题目题目11. 递归函数里自带字符串,字符串长度不能过长。两种不同的写法,第一种就TLE(time limited error),第二种才可以,不知道为啥,我推测和dfs的深度有关,如果深度在100以内我觉得都是可以用的,超过的话最好用第一种。因为第二种写法相当于当字符串长度为100之后,每次调用

2021-12-05 14:01:49 301

转载 并查集模板

// 并查集模板class UnionFind {public: vector<int> parent; vector<int> size; int n; // 当前连通分量数目 int setCount;public: UnionFind(int _n): n(_n), setCount(_n), parent(_n), size(_n, 1) { iota(parent.begin(), parent.end

2021-11-29 13:57:56 67

原创 On到O1的方法

1. 单调栈(队列)Leetcode 题目----含特定字母的最小子序列class Solution { struct node{ int id; char ch; node(int a,char c):id(a),ch(c){} }; bool compare(node n1,node n2){ return n1.ch > n2.ch; }public: string smallestS

2021-10-07 19:16:41 173

原创 C++ 面试准备

1. 多线程能否优化一般来说是不能提升的,同样的两份工作给一个CPU(劳动力)去做,开单线程和双线程所消耗的时间是一样的,为啥呢比如说一个工人干一份工作要10分钟,两份工作,先干完一个再干一个,总共要20分钟,这就是单线程。如果这个工人1~5分钟干工作1,6 ~ 10分钟干工作2,11 ~ 15分钟继续干工作1,16 ~ 20 分钟再去干工作2, 那么就是双线程。可以发现双线程和单线程在同样的资源下花费的时间是一样的,但是为啥还要发明这么个东西?因为计算机在运行时,工作的时间不是全部花费在CPU上

2021-09-28 15:13:03 192

原创 C++ static关键字的作用

参考链接作用一可以保存局部变量的值,在该函数调用结束后仍能保存该值不变。void test(int a) { char ch = 'a'; cout << ch << endl; ch += a;}int main(){ test(3); test(2); return 0;}调用两次test()函数后,打印结果为aa但是如果加上static关键字,void test(int a) { static char ch = 'a'; cout &

2021-07-22 20:09:40 80

空空如也

空空如也

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

TA关注的人

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