- 博客(45)
- 收藏
- 关注
原创 Day3算法训练(简写单词,dd爱框框,3-除2!)
本文总结了三个编程问题的解题思路:1)利用getline处理带空格的字符串输入,使用字符串处理函数实现大小写转换;2)滑动窗口算法解决子数组和问题,通过双指针动态调整窗口大小;3)优先队列(堆)实现贪心算法,通过反复操作最大偶数来优化总和。文章强调了对输入输出的处理技巧,常用算法的适用条件,以及全局变量的使用注意事项,建议通过模块化训练提升算法敏感度。
2025-11-15 21:41:12
527
2
原创 Day2算法训练(牛牛的快递,最小花费爬楼梯,数组中两个字符串的最小距离)
本文总结了三个编程问题的解决思路:1)快递费用计算,通过向上取整处理重量不足1kg的情况;2)爬楼梯最小花费问题,采用动态规划方法计算到达终点的最小成本;3)字符串数组最小距离问题,通过贪心算法优化查找过程。文章强调了审题和分析问题的重要性,指出思路清晰是解决问题的关键,建议加强算法专题练习和题目理解能力。
2025-11-14 22:00:41
470
原创 Day1算法训练(数字统计,两个数组的交集,点击消除)
本文整理了三道编程题的解题思路和代码实现。第一题采用数字统计解法,通过枚举和数字拆分统计指定范围内数字2的出现次数。第二题求两个数组的交集,正解利用哈希表标记元素存在情况,遍历比较后排序输出;作者反思了自己未考虑重复元素的问题。第三题要求消除相邻相同字符,正解使用栈结构高效处理;作者对比了自己暴力解法导致超时的情况。最后总结了应熟练掌握数据结构和STL库的使用,并计划复习哈希表和栈相关内容。
2025-11-10 22:32:51
319
原创 数据库基础-01Mysql库和表的操作
数据库:一般指的是,在磁盘或者内存中存储的特定结构组织的数据(将来在磁盘上存储的一套数据库方案)mysql:数据库服务的mysqld:数据库服务的服务器端mysql本质:基于C(mysql)S(mysqld)模式的一种网络服务。
2025-11-09 22:20:11
484
原创 操作系统整体理解(进程,冯诺依曼系统,PCB)
本文摘要:文章首先介绍了计算机的冯诺依曼体系结构,指出所有程序运行时必须从磁盘加载到内存的原因,解释了内存作为CPU与外设之间缓存的重要性。其次阐述了操作系统的核心功能是对软硬件资源的管理,采用"先描述再组织"的原则,通过驱动程序管理硬件,并提供系统调用接口。最后讨论了进程概念,说明进程是程序执行实例,由内核数据结构(task_struct)和程序代码数据组成,操作系统通过进程控制块(PCB)来管理和调度进程。全文系统性地介绍了计算机体系结构、操作系统和进程管理的基础知识。
2025-11-06 11:14:36
837
原创 Linux-自动化构建make/makefile(初识)
本文介绍了Makefile与make命令的基本概念与使用方法。Makefile是包含编译规则的文件,通过make命令自动执行编译,提高开发效率。文章重点阐述了:1)Makefile包含依赖关系与依赖方法,使用.PHONY声明伪目标;2)make命令会自上而下扫描Makefile,自动推导依赖关系并执行编译;3)通过对比文件修改时间决定是否需要重新编译;4)介绍了Makefile中的特殊符号如%、$<、$^等;5)说明了如何定义变量及一次性生成多个可执行程序。这些功能共同构成了自动化编译的基本原理和应用
2025-10-30 17:15:27
686
原创 Qt--命名,快捷键及坐标系
本文介绍了Qt编程中的变量命名规范和坐标系知识。在命名风格上,建议使用有描述性的名称,C++常用蛇形命名法(student_count),Qt偏好驼峰命名法(studentCount小驼峰用于变量,QWidget大驼峰用于类)。Qt采用左手坐标系,y轴向下递增,单位是像素。控件位置是相对于父控件的坐标,如QPushButton的父控件是QWidget,若无父控件则相对于整个显示器。
2025-10-19 16:30:10
155
原创 C++ 多态(1)
本文介绍了C++多态的核心概念和实现方式。多态是指不同继承关系的类对象调用同一函数时产生不同效果,通过虚函数重写实现。虚函数用virtual修饰,派生类需保持与基类虚函数完全相同的签名才能重写。特例包括协变(返回值类型不同)和析构函数重写(需基类虚析构)。实现多态需满足虚函数重写和父类指针/引用调用两个条件。文章对比了重载、覆盖和隐藏的区别,并介绍了C++11的final(禁止重写)和override(强制重写检查)关键字。最后强调析构函数应声明为虚函数以确保正确调用。
2025-10-17 21:52:03
573
原创 C++ 继承(2)派生类的默认成员函数
本文摘要: C++类默认成员函数包括构造函数、析构函数、拷贝构造和赋值重载等。派生类拷贝构造需显式调用父类拷贝构造。友元关系不可继承,静态成员在整个继承体系中唯一。菱形继承存在数据冗余和二义性问题,可通过虚拟继承解决。继承与组合都是类复用方式:继承是"是"的关系(白箱复用),组合是"有"的关系(黑箱复用),后者耦合度更低。建议优先使用组合以提高代码维护性。
2025-10-17 19:10:41
758
原创 C++ 继承(1)
C++继承机制解析:继承是面向对象编程中实现代码复用的重要方式,子类(派生类)可以继承父类(基类)的成员变量和函数。继承方式(public/protected/private)会影响基类成员的访问权限,其中基类私有成员在子类中不可直接访问。子类对象可以赋值给父类对象、指针或引用,但反之不可。当子类和父类存在同名成员时,子类成员会隐藏父类成员,可通过作用域运算符显式访问。值得注意的是,不同作用域的同名函数不构成重载,而是形成隐藏关系。
2025-10-16 20:29:13
359
原创 Qt初识(对象树,乱码问题,小结)
本文摘要:Qt开发中,对象树(类似DOM树)用于连接界面控件,便于统一释放资源。乱码问题源于编码方式不匹配:GBK(双字节)与UTF-8(变长)是主流汉字编码方案。解决方案包括1)使用QString自动处理编码,2)用qDebug()替代cout输出日志(含自动编码处理)。查看文件编码可通过记事本另存为界面确认(ANSI=GBK)。
2025-10-15 21:52:35
288
原创 codeforces round1057(div2)AB题解
文章摘要: 苹果树圈问题:通过统计排序后数组中不同元素的数量,确定最多可吃的苹果数量(相同美丽程度的苹果只能吃一次)。算法复杂度为O(nlogn)。 比特翻转问题:判断三个数x,y,z是否存在对应的a,b,c满足按位与关系。关键条件是三者同一位上不能恰好有两个1出现。 对称多边形问题:利用成对的小棒构建对称边,剩余单数小棒作为边时需满足多边形封闭条件:最长边小于其余边长之和(即小于总长一半)。 三题分别涉及排序统计、位运算特征分析和几何条件判断,展示了不同领域的算法解决方法。
2025-10-13 16:41:50
393
原创 Linux系统学习----指令篇
本文介绍了Linux常用指令及其功能:ls显示目录文件(-a显示隐藏文件,-l显示详细信息);pwd显示当前路径;cd切换工作目录;mkdir创建目录(-p递归创建多级目录)。Linux采用树形目录结构,文件通过绝对/相对路径定位。还讲解了rm/rmdir删除文件/目录、man联机手册、cp复制文件等命令,以及tab补全、ctrl+c终止等热键操作。其中重点说明了目录结构特点、文件类型标识(d为目录,-为普通文件)和路径规则(./当前目录,../上级目录)。
2025-09-19 16:01:18
711
原创 vector的使用及介绍
本文简要介绍了C++中vector容器的特性与使用方法。vector是可变大小的序列容器,采用连续存储空间,并会预留额外空间(capacity)以适应增长。文章重点讲解了vector的构造函数实现,包括无参构造、初始化构造、拷贝构造和迭代器构造。同时介绍了迭代器使用、空间管理函数(size/capacity/empty/resize/reserve)以及常用操作(push_back/pop_back/insert/erase等)。值得注意的是,不同编译器下capacity的增长策略不同(VS为1.5倍,g+
2025-09-18 09:54:01
268
原创 C++模板初阶
泛型编程通过编写适用于不同数据类型的代码来提高复用性。函数模板代表一个函数家族,根据实参类型生成特定版本,定义格式为template<typename T>。模板在编译时由编译器根据实参类型生成具体函数,分为隐式和显式实例化。模板与非模板函数共存时,优先匹配非模板函数,除非模板能更好匹配。类模板通过template<class T>定义,实例化后才是真正的类型(如Vector<int>)。泛型编程将重复的类型处理工作交由编译器完成,增强了代码的通用性和可维护性。
2025-06-26 17:33:16
234
原创 c++、static成员、友元、构造函数2、内部类
类的静态成员:声明为static类的静态成员静态成员变量:用static修饰的成员变量(一定要在类外进行初始化,属于整个类,属于所有对象静态成员函数:用static修饰的成员函数。
2025-06-25 20:13:16
671
原创 C++的构造函数和析构函数
构造函数:一种特殊成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,以保证每个数据成员都有一个合适的初始值,并且在对象整个生命周期内只调用一次。//引入:为什么需要提出构造函数这个概念class Datepublic:_day = day;int _month;int _day;d1.print();return 0;
2025-03-21 17:34:35
382
原创 牛客小白月赛110
思路:用group表示是第几个大写英文字母,以A为基础,(n-1)/500为几则往上加几,从而得到应有的字母,用number表示当前组内的编号,(n-1)%500+1表示,至于最后的前导0,在输出的时候控制就行了。
2025-02-15 15:52:27
386
原创 牛客周赛round80 BC&&codeforces1003(div4)
思路:先把这i名成员的实力排序,然后相邻的两个实力右减左得到n组不和谐度,最后相加。因为我用的C语言qsort排序,学的时候是按int学的,所以我在写cmp函数的时候不小心用成了int,应该用成longlongint,与C++相比,还是后者的sort函数比较好用,要学会!
2025-02-10 19:35:09
458
原创 at coder ABC 392
题意:给一个整数序列(A1,A2,A3),这三个数进行排序后形成(B1,B2,B3)问是否存在排序使B1*B2=B3?思路:因为一共就三个数,只有三种排列方式,我直接全部都列出来判断的,不用管B。
2025-02-09 18:45:28
995
原创 C++03内联函数,auto关键字,基于范围的for循环(c++),nullptr
使用auto定义变量时必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导auto的实际类型。因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换成变量实际的类型。
2025-02-08 15:01:32
550
原创 At coder beginner contest 290AB
思路:只有4中情况:A1,A2翻转,其他正常,A2A3翻转其他正常.....为了下标与数字对应我开了6个空间,然后从1开始循环,到4截止,因为循环中有i+1害怕数组越界,如果索引出的数与下标不相等了,那就看看和下一个数是否是相反的关系,如果是就cnt++,i++,其中还要判断是否是唯一的一个相反的两个相邻的数,还要考虑特殊情况就是几不符合下标又不相邻的数互换位置达到升序。看完官方题解后,其实不用那么麻烦,可以开两个数组,然后交换一下判断是否与标准输出相等即可。
2025-01-26 18:21:54
372
原创 牛客周赛round78 B,C
题意:就是输出n个数(1-n),使输出的序列中任意选连续的小序列(小序列长度>=2&&<=n-1)不符合思路:读懂题意后,我举了几个例子然后我认为要把这n个数用一个数组左右存,就是左边存奇数,右边存偶数,反正1-n都要存,为了对应合适,我从数组下标为1时开始存,同时积累奇数和偶数的数量奇数的个数就是对应输出数组的下标,输出的数字就是i,偶数的下标是n-even+1;然后从1-n开始依次打印此数组。
2025-01-26 17:15:04
368
原创 codeforces-div2-round1000A
因为虽然[1, 1]属于,但是[1, 2]却因包含[1, 1]而不属于了。3.对于左边界为1的情况,如果右边界为1结果就是1,右边界大于1为r,那么结果为r - 1,思路: 1.相邻数组成的区间互质,那么一段区间的互质区间数就为R-L。2."1"自己单独有个最小互质区间。是边界互质,边界内无互质区间。求这个区间最小互质区间个数。
2025-01-23 21:48:55
205
原创 Codeforces round 998-div3,AB题解
1 3 2 1,先让i=1时满足斐波那契性质,此时a3=4,如果a3等于4,i=2和i=3是不能满足斐波那契性质的,这里的斐波那契性质就为1,此时再让i=2满足斐波那契性质,此时a3=-1,同时对于i=3也满足斐波那契性质,所以最多有两个性质....这个题目对于我来说有点读懂,题目意思大概就是有n头牛,每头牛分m张牌,然后我给出一个顺序p,每次都让让pi的牛出牌(出最小的牌),出的牌放在一个中央牌堆中,要保证新放上去的牌是比下面牌大的,问m轮游戏中,是否每个牛都能把牌出完?能则输出排列p,不能则输出-1.
2025-01-21 20:32:27
455
原创 牛客周赛round77B,C题解+牛客小白月赛C题题解
1.emmmmmm怎么说呢,结合最近这几天做的算法题给我的启示就是,做算法题一定要动脑子取想,多列样例多找规律,不要被题目带着跑,题目说什么我就做什么不动脑子跟着题目跑,其实很多题要善于从题目中提取出简单信息,结合思考简化程序。2.最近题目一般还是都用C解题,但是包括力扣,洛谷等一些题解都是C++的,很多容器语法什么的还是要抓紧时间补起来,要不然感觉解题会麻烦许多o(╥﹏╥)ofighting!!!!
2025-01-20 20:40:30
801
原创 2025-01-17牛客小白月赛AB题解
所以,我只要找到满足这两条条件的x的个数即可又因为n的数量级是10的9次方,而longlongint的数量级是正负2的63次方-1。所以我们可以使用longlongint这个数据类型进行存储数据。如果使用for循环挨着找的话,时间复杂度太高了所以过不了。所以我就从数学角度简化做法,我们把n-19375331用x来定义,我发现如果x是一个小于等于0的数,那么本题就转化为了有多少个正整数小于等于n,大于等于x(一个非正数)。很显然有n个。
2025-01-19 22:03:44
438
原创 初识C++(命名空间namespace,cin,cout,缺省参数)
在C/C++中,变量,函数以及后续要学的类都是大量存在的,这些变量,函数和类的名称都将存在于全局变量中,可能会造成很多冲突。使用命名空间的目的就是对标识符的名称进行本地化。使用方法就是:namespace+项目名字+{}我们用命名空间域中的数据时是这样用的:需要用到::在这两个冒号的左边是我们定义的命名空间域的名字,如果不写,那就默认是全局域cout为标准输出对象(控制台),cin为标准输入对象(键盘),endl表示换行输出==C语言‘\n’<<是流插入运算符,>>是流提取运算符。
2024-12-16 19:55:01
880
原创 C语言--水仙花数
到这里有一个问题,就是只要走出while循环,那么i的值就是0;这对我们后面要进行的比较打印操作是非常不利的,所以在这里我们就要找一个替罪羊temp;首先,分析题目理解什么是水仙花数,然后根据定义分析其中的变量有两个,一个是该数的位数,一个是该数字每一位的数字。所以,我们的任务就有两个,1.求出该数有几位。当余数为0的时候,正好做了3次除法运算,利用一个count在循环中计数即可。还是以153为例,153%10,得到个位,153/10得到前两位;15%10得到十位,15/10得到第一位;
2024-03-04 09:50:51
409
1
原创 C语言打印菱形(图形规律热身小题for循环)
对于所有的打印图形问题,唯一原则就是找规律,首先分析图形,这个图形显然是由空格和*组成的,可以先把图形切割开来分成两个三角形,分成上下两部分进行打印,值得一提的是,窃以为要关注一下空格数量,因为一开始我把他当成一个正方形,然后去里面挖空格,后来我发现,我们只需要关注*前面的空格数量就好了,后面直接换行即可。这样,我们就完成了上半部分的操作,接下来完成下半部分。
2024-03-04 09:02:00
323
1
原创 C语言--使用函数逆置数组(入门)
对于一个一维数组,想要逆转数组元素,我们只需要找到起始位置,和数组的最后位置,是两者之间进行元素的交换,然后左侧往右,右侧往左,直到左侧和右侧相遇。题目:设计两个函数,1.使之内容初始化为1-9;2.使之实现数组逆转。所以此时我们需要改变调用Init函数中的len的值。首先,这是对数组都初始化一个值并打印。
2024-03-03 16:57:33
435
原创 深入理解指针2
一般情况下,,但是有两个特殊情况。接下来,我们谈arr和&arr的区别因为&arr[0]和arr都表示首元素的地址,所以他们+1是跳过4个字节而&arr是表示整个数组的地址,所以他+1是挑个整个数组的字节即40个。
2024-02-26 11:18:53
421
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅