Fluid
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于

Hash优化

题库 给定相同长度的两个数组,问有几个区间,使得两个数组在这个区间中的异或值相同? 目标是al^…^ar = bl^…br, 可以得出 al^…ar^bl^…br = 0, 于是可以定义 ci = ai^bi,有cl^…^cr = 0, 然后是比较熟悉的问题了, 用map 存c的前缀异或出现的次数; 字符串哈希操作 2430. 对字母串可执行的最大删除
2024-09-01
刷题记录

非贪心算法

局部推全局时,局部最优不一定得不到全局最优 给定一个数组,平滑值的定义如下:相邻两个数的差值的绝对值的最大值。有k次操作,可以随意插入任意一个数字,求k次操作后数组的平滑值最小是多少? 局部最优:[0, 10]允许两次插入时,先后两次插入则得到[0, 3, 5, 10],而最优结果应该是 全局最优:[0, 3, 6, 10]
2024-09-01
刷题记录

前缀和

一维前缀和 2430. 对字母串可执行的最大删除数 通过记录字符串前缀哈希值,及对应的底数幂次 -> 快速计算任意一个连续子字符串的哈希值 二维前缀和 1878. 矩阵中最大的三个菱形和 cpp前缀和模拟 计算公式sum[i][j] = sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j] 2552. 统计上升四元
2024-09-01
刷题记录

作用更高效的初始化: 对于某些类型的成员变量,特别是具有常量、引用类型或没有默认构造函数的类类型成员,使用初始化列表进行初始化比在构造函数体中赋值更高效。这是因为对于这些类型,初始化必须在对象创建时进行,而不能通过赋值来完成。 例如,对于引用类型成员,必须在初始化列表中进行初始化,因为引用一旦绑定就不能再重新绑定到其他对象。保证初始化顺序: 成员变量的初始化顺序是按照它们在类定义中的声明顺序进行
2024-08-31

c-cpp中的序列点

c/cpp中含有序列点,规范规定:编译器指令重排优化时,不能跨过序列点 常见的序列点有: 函数调用 volatile 关键字相关的内存访问
2024-08-30
嵌入式-开发

类中特殊成员变量的初始化

类中特殊成员变量初始化const 成员,引用成员必须使用初始化列表的方式初始化,即A(int& a, B& b) : m_a(a), m_b(b) {} 普通静态变量必须在类外通过::进行显示的初始化 静态整型常量可以直接在类内定义时初始化 静态非整型常量不能直接在类内定义的时候初始化;必须在类外通过::进行显示的初始化 其它类对象且没有默认构造函数 必须在初始
2024-08-30
cpp基础
#面经 #cpp

优先级翻转

参考文档 RTOS—优先级翻转与优先级继承 简介涉及到三个任务 A 10 需要获取资源锁 t B 20 无需获取资源锁 C 30 需要获取资源锁 t在某一时刻,线程A获得资源锁,进行执行; 在A获得锁期间,任务B准备就绪,由于其优先级较高因此可以抢占A进行运行; 在B运行期间,C准备就绪开始运行,但是由于C也要获取资源锁t,而且此时t已经被锁住,因此C只得让出CPU 之后B重新获得CPU进
2024-08-30
嵌入式-开发

enable_shared_from_this

参考博客
2024-08-28
cpp基础

cpp - weak_ptr

参考博客 深入理解C++ weak_ptr 关于std::weak_ptr使用的理解 总结 抽象出一个对立的概念 ==内存所有者==:用于管理内存的创建/释放 ==内存观察者==:可以访问内存; 但是访问前需要变为临时的内存所有者 或者锁住对内存的创建/释放/修改等操作 weak
2024-08-28
cpp基础

对话-内存屏障

一IT知识刺客:你好,欢迎关注IT知识刺客! 深蓝:老师您好,最近看了您的《HPC-一文彻底搞懂并发编程与内存屏障》系列文章,收获颇多。有个问题想请教一下您,考虑在X64架构下手动实现一个多核使用的自旋锁。 这应该是一个load store的访存顺序模型; 考虑初始时自旋锁变量为0; core 0 load 发现是0 (t0);判断为0(t1);继续执行store 1(t2);1被写入主存(t3
2024-08-27
1…45678…13

搜索

Hexo Fluid