C++
文章平均质量分 50
木喃的井盖
这个作者很懒,什么都没留下…
展开
-
重载运算符三个const的作用
这里可以看到,重载运算符函数不匹配“const Point”与“Point”的相加类型,因为如果不加第三个const时,调用此运算符的对象是变量,而在C++中 const object-> 变量是不允许的,因为一旦变为变量,那么就意味着可以修改这个对象的内容,也就违背了const的定义,故报错。2.第二个const 的位置后面是函数参数,表明读取参数时,将其视为常量,保证当传参为const类型时也可接受,否则如果只是接受变量,那么就无法处理+常数的操作。对象可以是const类型。原创 2023-06-05 20:32:55 · 1250 阅读 · 2 评论 -
质因子、因子专栏
在后续构建并查集时,可以通过索引来构建并查集,nums数组中点的索引作为一个点集,所有(质因子+n)作为一个点集,这样可以避免对1的特判,因为当数组中全为1时,那么对于并查集来说是连通的,但是实际上并不符合题意。首先明确,1不是质数,故质因子中不包含1。时间即可得到所有的质因子,那么时间复杂度为。,预处理得到每个数字的最小质因子后,[1~n]范围内的质数个数为。原创 2023-05-29 18:29:36 · 694 阅读 · 0 评论 -
回溯递归的剪枝模版
主要看灵神的二分模版,如何使用递归实现在Omk时间内,实现对于二分中每个条件的判断。原创 2023-05-29 16:20:08 · 1069 阅读 · 0 评论 -
C++ 刷题板子
、、、原创 2022-06-01 08:31:52 · 137 阅读 · 0 评论 -
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 · 115 阅读 · 0 评论 -
C++ sort和stable_sort函数的理解
题目传送门自定义sort题目注意,本题中由于都是数字日志时保证原相对顺序,那么就要求有以下两种思路:1、 使用稳定的排序算法,如归并排序或者插入排序这种。(一般不用冒泡,太慢了)。2、我们自己封装一个类,保存string,和原id下标,直接调用sort函数就行,比较简单。在实现思路1的过程中,就需要使用stable_sort函数,在使用lambda表达式写比较函数时,需要注意:1、comp比较函数对象(即满足比较 (Compare) 概念的对象),若第一参数小于(即先序于)第二参数则返回 tr原创 2022-05-03 15:46:11 · 849 阅读 · 0 评论 -
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 · 854 阅读 · 0 评论 -
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 · 223 阅读 · 0 评论 -
BFS,找出选择图中哪个点开始bfs轮次最少
题目链接点燃木棒点燃木棒专场题解我的代码最小高度数原创 2022-04-10 22:09:33 · 255 阅读 · 0 评论 -
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 · 2148 阅读 · 0 评论 -
C++ 怎样输入字符串
按行输入字符串,不遇空格不停的那种,需要用到这个函数string strgetline(cin,str);否则如果单单只是cin>>str,那么一旦遇到空格就会停。容易出错的案例在读取字符串前会先读入两个数字的话,遇到‘\n’停止,实际上回车符还在IO字符读缓冲区,直接运行getline()会先读进来一个回车符,第二次才是读到真正的字符串。正确写法如下:#include<stdio.h>#include<iostream>#include<bit原创 2022-04-06 20:23:26 · 2953 阅读 · 0 评论 -
字符串哈希
题目传送门解题思路:二分+双模哈希记忆出错的几个点: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 · 282 阅读 · 0 评论 -
求解有向图中的最大环问题
题目链接思路:主要分为两种情况:1.两个人互相喜欢,那么就可以在这两个人两边各自不停地添加座位,选择一个最长的链即可。然后把所有两个人互相喜欢得到的链拼在一起是第一种最大的选法。2.选出一个长度大于等于三的有向环,这里使用hash_map来保存之前节点的深度,一旦找到一个新的节点他的深度保存过,那么相减+1就是一个环,遍历所有的环取最大就是另外一种选法。代码如下:class Solution { int n,a,b,tmp=0; int ret = 0; vector&l原创 2022-01-03 23:46:37 · 1740 阅读 · 0 评论 -
并查集模板
// 并查集模板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 · 73 阅读 · 0 评论 -
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 · 199 阅读 · 0 评论 -
C++ 面试准备
1. 多线程能否优化一般来说是不能提升的,同样的两份工作给一个CPU(劳动力)去做,开单线程和双线程所消耗的时间是一样的,为啥呢比如说一个工人干一份工作要10分钟,两份工作,先干完一个再干一个,总共要20分钟,这就是单线程。如果这个工人1~5分钟干工作1,6 ~ 10分钟干工作2,11 ~ 15分钟继续干工作1,16 ~ 20 分钟再去干工作2, 那么就是双线程。可以发现双线程和单线程在同样的资源下花费的时间是一样的,但是为啥还要发明这么个东西?因为计算机在运行时,工作的时间不是全部花费在CPU上原创 2021-09-28 15:13:03 · 196 阅读 · 0 评论 -
二分dp
最小left,最大right如果题意可以用二分搜索来求解,这个并不难,稍微麻烦的是最后return left还是right,如果题目是最小满足条件的值,那么输出left,如果是最大,那么输出right.参考例题:return left你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。原创 2021-06-15 11:52:55 · 261 阅读 · 1 评论 -
西交2021校赛 J题校赛质量
彩彩在视频网站上拥有N个粉丝,并且发布了M个视频,编号为0,1,…,M-1 。粉丝会为编号连续的视频点赞,其中第 i 个粉丝选择为 (表示大于等于 并且严格小于 的整数范围)的视频点赞。该网站对视频质量有两个评价指标 x和 y 分别表示:最小的整数 ,x表示从作者的N个粉丝中 可以选出 x 个粉丝,使得全部的视频都被选中的粉丝点赞过;最小的整数 ,表示从作者的N个粉丝中 任意选出y 个粉丝,使得全部的视频都被选中的粉丝点赞过。现在彩彩想要计算 x 和 y,以此来判断自己的视频质量。可是彩彩不会算原创 2021-05-27 11:35:18 · 128 阅读 · 1 评论 -
5349安排电影院座位(学习ezoixx130大神)
5349安排电影院座位(第22场双周赛)题目传送门参照了这场比赛国内第一ezoixx130大神的部分,主要是迅速减少时间复杂度方法,利用map工具,仅仅处理题目给出的对应行即可,没必要对所有的n行进行遍历,那样势必会超时,我就是卡在这里死活过不去,然后对每一行进行处理,最垃圾的方法判断+1还是+2,大神的方法我没看懂。。不过这道题我觉得主要难点就是时间复杂度,只要做到仅处理给出数据的对应行就...原创 2020-03-22 19:18:08 · 565 阅读 · 2 评论