自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lins

algorithm

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

原创 Qt的日志输出

在Qt中,一般习惯使用qDebug信息进行输出和打印调试信息到console或者文件中,在qDebug中,也有一些小技巧,可以帮助我们更好的使用qDebug打印日志记录,本文分享了qDebug使用的一些小技巧。

2023-11-17 16:49:27 547

原创 利用QT 的 Graphics View 系统实现一个 简易的 Graph Editor

QT 中的 Graphics View 系统. 是一个相对成熟的渲染引擎的上层框架,通常也可以会叫做 Scene - View。 本文,利用了Graphics View系统来实现了一个简单的图编辑器。

2023-01-16 19:34:48 2639 3

原创 利用setjmp和longjmp实现一个简单的协程

协程是什么呢,有人说是轻量级线程,有人说的用户级线程,其和线程的区别可能就是更轻量、操作系统无感的。其实从根本来说的话,协程本质上就是在一个进程上的程序而已,外部感知不到它的存在。协程其实我感觉对理解函数压栈入栈、进程的上下文切换也是非常有帮助的。以下内容均在 Linux的 x86_64 环境下实现。 这里不讨论其他的实现。对于汇编上的函数来说,就是一个过程。汇编执行的逻辑就是一条指令一条指令的去执行,去处理。这里分为两个地方,第一个是代码区,我们的pc指针指向当前指向的指令。在x86_64下,寄存器存放

2022-12-06 12:43:43 591

原创 用QT实现一个简单的桌面宠物

有时候桌面空空的,或者屏幕空旷了,我们就可以找一点东西来点缀一下,那么桌面宠物是一个不错的选择。作为一个程序猿,如何实现一个桌面宠物呢?本文就给大家带来的是如何用qt提供一种思路并写一个简单的桌面宠物。

2022-11-18 21:47:14 2890 1

原创 C++ 模板 - CRTP 技法

在c++里面,若是要实现多态的话,实现多态利用的虚表来实现的迟绑定(类似于std::function),虚表中存放好对应函数的调用地址,以此来实现运行时选择。由于是运行时决定,而不是早绑定,需要通过虚表去寻找调用地址,中间存在一个过程(虽然可以忽略不计,但是不计较今天怎么说CRTP呢?多样化让c++变得可以选择的方式变多了(比如上述的直接利用std::function来搞,你只管实现,剩下的交给编译器)父类在实例化时只需要有子类的声明的就ok了,由于传入的模板类会继承自己,所以自己可以向下转这个指针。

2022-11-06 23:05:48 711

原创 C++模板 - index_sequence

`integer_sequence` 是 c++ 14中新增加的一个元编程工具其衍生出来的还有如 `index_sequence`、`make_index_sequence`、`index_sequence_for`等辅助工具

2022-10-30 17:51:23 2212

原创 C++ 自定义新的运算符

可是,我们可以通过已有运算符和运算符重载来达到假装添加新的运算符的效果。在C++中,我们可以对已有运算符进行重载,但是我们却不能新增加运算符~当然,可以实现得更加复杂,支持运算符优先级,这是后话。就是说,其实是通过一种取巧的方式来达到这一目的的。其实如果不介意使用宏的话,可以让其变得更加的 简洁。一样的技巧(特化),把返回值和参数类型确定。我们现在要实现这样的效果,嗯,就类似于。现在的代码,嗯,怎么看怎么有点不想C++现在就可以简单的使用其进行算子定义了!以尖括号括起来的就是我们的运算符。

2022-10-28 12:28:32 3153

原创 重载 — c++ name mangling

在c++ 中,众所周知,为了和c语言向下兼容,c++做出了很多的牺牲和让步,在这里面,函数,比c语言中的函数更要复杂和麻烦。

2022-10-24 21:01:13 623

原创 浅尝C++ 的日期时间库

在C++中, 包含对二类时间操作的支持:- `chrono` 库,以各种精度跟踪时间的类型的灵活汇集。- C 风格日期和时间工具(如 [std::time]

2022-10-22 20:12:23 917

原创 并行化算法 - 归并算法

由于我们的操作是通过新建线程来完成的,C++的线程开销还是比较多,所以,对于归并排序里面小块内存,不见得继续并行化,会有好的结构,不如设定一个阈值,在阈值之上才进行异步操作。为最佳复杂度了,那么,很多算法还是串行化的,单线程的算法,现在,我们是多线程的机器,我们可以对算法做并行化处理,使其可以更快的解出答案。在日益增长的数据量的爆炸之下,对于多核处理器来说,我们应该尽可能的多压栈机器多个核的性能,当然,也不是绝对的,这个是。在排序算法中,我们学习了很多的排序算法,对于这些排序算法,所能够做到的便是。

2022-10-21 19:20:36 682

原创 基于 modern C++ 实现的线程池

其实本质上来说,线程池做的事情就是一个生产者、消费者模型没错,就是你在操作系统书上所看见的那个,最基本的,最实在的模型我们这个东西究其本质不过是一个 多生产者、多消费者模式而其用途呢?其实还是比较多的,特别是高吞吐的情况下,处理逻辑尽可能的让cpu吃满,这个时候,线程池这个组件就有用武之地了小技巧:分配线程池的大小和 cpu的核数有关,具体分配多少根据实际情况调优[amjieker]

2022-10-10 17:19:38 415

原创 玩转C语言指针~

数组和指针是非常灵活的东西,我们的C/C++程序员,尽可能用好指针最好使用typedef和using来简化我们的操作现代语言,比如golang、rust这种现在都已经采用后置类型的方式了,就我而已,我任务后置类型是比c/c++这种形式要来的好的当然,C++也可以做到一点保持统一风格}但不可忘记这些东西,举个例子:你不理解函数指针,你就搞不懂 c++ 中的function是如何实现的,有没有其他实现方式C++的类型萃取更是离不开类型的分辨甚至你可以使用 模板来给类型添加指针这样的操作。

2022-10-04 22:28:55 665

原创 io_uring 之 liburing 的简单使用

io_uring是Linux内核在v5.1引入的一套异步IO接口,和aio不同的是,它可以提供更高的性能io_uring 具体有三个系统调用分别是,,,我们可以通过这三个系统调用来完成异步事件提交,收割,自己处理的流程异步io的优点在于,不用我们自己去等待 io操作的完成,我们只需要告诉内核,我们的任务,内核来帮我们完成。这样就可以让我们的进程去干其他的事情,实现更高的吞吐量。io_uring 利用 mmap 开辟出一块空间,让用户态和内核态的程序都可以共享的一块区域。

2022-09-30 21:43:53 1783

原创 最长上升子序列 + 优化(线段树、树状数组)

最长上升子序列 + 优化(线段树、树状数组)

2022-09-13 21:25:24 1087 4

原创 手撕xxx数据结构系列

数据结构: 跳表

2022-07-26 16:50:16 96

原创 关于二分和双指针的使用

关于二分和双指针的使用

2022-06-24 23:52:24 133

原创 记录一些cf的题

E. ANDfinity CF div2 798 E一道二进制 + 并查集 检查连通性 贪心的题目Lena and Matrix CF div2 798 D 一道 奇奇怪怪的题目 推一下公式 枚举答案

2022-06-22 22:08:47 108

原创 Codeforces Round #800 (Div. 2)

Codeforces Round #800 (Div. 2)

2022-06-17 11:49:34 321

原创 Codeforces Round #797 (Div. 3)

Codeforces Round #797 (Div. 3)

2022-06-15 23:22:55 139

原创 Codeforces Round #799 (Div. 4)

Codeforces Round #799 (Div. 4) 题解

2022-06-15 13:40:11 191

原创 CodeCraft-22 and Codeforces Round #795 (Div. 2)

codeforces 795场比赛 A-D题

2022-06-01 17:44:15 113

原创 [刷力扣] 71-80 (Golang 版)

71. 简化路径72. 编辑距离73. 矩阵置零74. 搜索二维矩阵75. 颜色分类76. 最小覆盖子串77. 组合78. 子集79. 单词搜索80. 删除有序数组中的重复项 II

2022-05-07 14:14:53 103

原创 [刷力扣] 61-70题

61. 旋转链表62. 不同路径63. 不同路径 II64. 最小路径和65. 有效数字66. 加一67. 二进制求和68. 文本左右对齐69. x 的平方根70. 爬楼梯

2022-05-04 13:11:42 747

原创 用Go来写的 codeforces 784 div4

CF 真有 div4了 最近看到了,用刚学的go 语言来打一发div4A - Division?// @Title// @Description// @Author// @Updatepackage mainimport ( "fmt")func main() { var n int fmt.Scanln(&n) for i := 0; i < n; i++ { var s.

2022-04-22 19:40:55 428

原创 [刷力扣] 51-60题

51. N 皇后52. N皇后 II53. 最大子数组和54. 螺旋矩阵55. 跳跃游戏56. 合并区间57. 插入区间58. 最后一个单词的长度59. 螺旋矩阵 II60. 排列序列

2022-04-20 20:41:47 64

原创 C/C++ 札记(modern C++11/14/17/20 的东西)

一些c/c++ 有趣的东西

2022-04-11 10:18:03 818

原创 [刷力扣] 41-50题

41. 缺失的第一个正数42. 接雨水43. 字符串相乘44. 通配符匹配45. 跳跃游戏 II46. 全排列47. 全排列 II48. 旋转图像49. 字母异位词分组50. Pow(x, n)

2022-04-03 17:51:59 4171

原创 [刷力扣] 31-40题

31. 下一个排列32. 最长有效括号33. 搜索旋转排序数组34. 在排序数组中查找元素的第一个和最后一个位置35. 搜索插入位置36. 有效的数独37. 解数独38. 外观数列39. 组合总和40. 组合总和 II

2022-03-29 13:11:07 63

原创 [刷力扣] 21-30题

21. 合并两个有序链表22. 括号生成23. 合并K个升序链表24. 两两交换链表中的节点25. K 个一组翻转链表26. 删除有序数组中的重复项27. 移除元素28. 实现 strStr()29. 两数相除30. 串联所有单词的子串

2022-03-27 10:42:58 50

原创 [刷力扣] 11-20题

11. 盛最多水的容器12. 整数转罗马数字13. 罗马数字转整数14. 最长公共前缀15. 三数之和16. 最接近的三数之和17. 电话号码的字母组合18. 四数之和19. 删除链表的倒数第 N 个结点20. 有效的括号

2022-03-20 17:09:15 1080

原创 [刷力扣] 1-10题

文章目录1. 两数之和2. 两数相加3. 无重复字符的最长子串4. 寻找两个正序数组的中位数5. 最长回文子串6. Z 字形变换7. 整数反转8. 字符串转换整数 (atoi)9. 回文数10. 正则表达式匹配

2022-03-15 13:38:02 80

原创 模仿pstree 打印进程树

一个查看进程树的小栗子准备工作step 1想办法找到所有当前进程在Linux下proc 文件系统 (procfs) 是类 Unix 操作系统中的一种特殊文件系统,它以分层文件结构呈现有关进程的信息和其他系统信息,为动态访问内核中保存的进程数据提供了一种更方便和标准化的方法。传统的跟踪方法或直接访问内核内存。 (翻译自维基百科)所以说,我们每一个进程其实存放在Linux下的/proc文件夹下,以进程号作为文件夹名称接下来,我们要想办法读取这个文件夹下的所有文件夹这里我们需要用到Linu

2022-03-15 12:45:19 1791

原创 L2-039 清点代码库

去年团体天梯赛的题目, 当时有一个点wa了,就没管了,今天突然想起来了,这道题就是一道语法题题目代码#include <bits/stdc++.h>using namespace std;int n, m;unordered_map<string, int> mp;vector<pair<int, vector<int>>> ans;int main() { cin >> n >> m; .

2022-03-07 23:07:13 347

原创 Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)

Codeforces Round #775 (Div. 2, based on Moscow Open Olympiad in Informatics)

2022-03-07 10:33:22 278

原创 CF 1323 B Count Subrectangles

题目题意给定长为 nnn 的数组 aaa 和长为 mmm 的数组 bbb,数组中的元素均是 000 或 111。有 n×mn\times mn×m 的矩阵 c,ci,j=ai×bic,c_{i, j} = a_i \times b_ic,ci,j​=ai​×bi​。请求出矩阵 ccc 面积为 kkk 的全 111 子矩阵数量。思路本题数据范围比较大,考虑直接暴力是不行的。我们可以选择一个数组,统计其中子段[1−n][1 - n][1−n] 出现的次数对于这个子矩阵,是 x×yx \times

2022-03-06 17:53:01 114

原创 atcoder abc242 c题 1111gal password

题目思路当前位的1 - 9 推出下一位的个数。累加计数求和每一个位置都可以推出 {−1,0,−1}+x\{-1, 0, -1 \} + x{−1,0,−1}+x的值代码#include <bits/stdc++.h>using namespace std;const int Mod = 998244353, N = 1e6 + 111;int n, m, f[N][10];int main() { cin >> n; for (int i =

2022-03-05 22:16:26 681 3

原创 CF 1646C Factorials and Powers of Two

题目思路只有2的指数阶和n的阶层所构成数据范围是101210^{12}1012,恰好在2402^{40}240和15!15!15!以内总所周知,每一个整数都可以转换为相应的二进制数,对应这道题,最坏的情况下,我们的答案就应该是二进制1的个数然后我们来看15内的阶层,意味着我们能够省下多少数就看这个我们去枚举每一个阶层数取不取即可,这样子即可不重不漏的判断完所有情况最后时间复杂度即T∗214∗40T * 2 ^ {14} * 40T∗214∗40 不会超时代码#include "bi

2022-03-05 15:16:25 340

原创 矩阵切割 完全背包

一个大矩形,要你分割成小矩形(只能水平和竖直切割),每个小矩形都有一个价值,问如何分割能得到最大总价值。思路代码#include "bits/stdc++.h"const int N = 1111;using namespace std;int f[N][N];int main() { int t; cin >> t; while (t--) { int n, X, Y; cin >> n >> X

2022-03-02 17:35:40 178

原创 构造题集合

CF 1630 A 构造 二进制k 在 0 ~ n - 1 之间而我们可以很轻松的构造出 为0的时候把数分成两半,前一半和后一半反向与的值,都刚好为00,是万精油,可以消去任意一个数,所以就有 n - 1 种数可以表示出来了 即 [0, n - 2]最后再构造一下 n - 1 即可https://codeforces.com/problemset/problem/1630/A#include "bits/stdc++.h"using namespace std;int t, n, m

2022-02-22 14:48:30 373

原创 观光奶牛 spfa

spfa + 二分题目01分数规划设 ansansans 为 最大值求: ∑i=1kf[i]∑i=1kt[i]≤ans\frac {\sum ^ k _ {i = 1} f[i] } {\sum ^ k _ {i = 1} t[i]} \leq ans ∑i=1k​t[i]∑i=1k​f[i]​≤ans等价于: ∑i=1kf[i]−t[i]∗ans≤0\sum ^ k _ {i = 1} f[i] - t[i] * ans \leq 0i=1∑k​f[i]−t[i]∗ans≤0则: ∑i=1kt

2022-02-19 14:44:35 120

空空如也

空空如也

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

TA关注的人

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