摘要: 关于C++memory_order的理解 看了c++并发编程实战的内存模型部分后,一直对memory_order不太懂,今天在知乎发现了百度的brpc,恰好有关于原子操作的文档,感觉解释的很好。为了加深理解,再次总结一遍。 在多核编程中,我们使用锁来避免多个线程修改同一个数据时产生的竞争条件。但是, 阅读全文
posted @ 2020-08-23 18:05 ManateeFan 阅读(1789) 评论(0) 推荐(1) 编辑
摘要: 深度探索C++对象模型读书笔记 第一章 关于对象 影响C++继承体系对象的内存布局和存取时间的因素 虚函数 虚基类 class member 类型 data member: static, nonstatic member function: static, nonstatic C++对象模型 每个 阅读全文
posted @ 2020-12-02 21:07 ManateeFan 阅读(241) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round #686 (Div. 3) E.ArrayPartition 题目大意:找到x、y、z三个数,将数组分成3部分,使得第一部分的最大值、第二部分的最小值、第三部分的最大值全部相等。 思路 查询区间的最值,但并不修改数组,这使我们想到了ST表这个数据结构,可以O(nlo 阅读全文
posted @ 2020-11-30 23:57 ManateeFan 阅读(89) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round #686 (Div. 3) E题求简单路径的个数 大意:给一个n个节点n条边的无向图,求简单路径的个数。 思路:先拓扑排序,我们从度为1的叶节点开始,把除环上的节点全部标记成已访问(环上的节点的度>=2,不会变成1),然后依次从环上的每一点,dfs它的子树,得到每一 阅读全文
posted @ 2020-11-30 21:15 ManateeFan 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 图与链表的深拷贝 都用到了unordered_map:原节点->拷贝节点,在遍历的过程中完成复制。 图:leetcode 133.克隆图 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 cla 阅读全文
posted @ 2020-11-29 21:08 ManateeFan 阅读(227) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round #686(Div.3) C- Sequence Transformation 题目大意:一个数组,选定数组中一个数x,每次可以删掉不包含x的一段,使得最终数组只剩下x,求最小的删除次数。 可以将一段连续相同的数看成一个数字,然后记录它的出现次数。最小值就是出现次数+ 阅读全文
posted @ 2020-11-29 14:52 ManateeFan 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 地图上有 N 个目标,用整数Xi,Yi表示目标在地图上的位置,每个目标都有一个价值Wi。 注意:不同目标可能在同一位置。 现在有一种新型的激光炸弹,可以摧毁一个包含 R×R 个位置的正方形内的所有目标。 激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆炸范围,即那个正方形的边必须和x,y轴平 阅读全文
posted @ 2020-11-09 16:55 ManateeFan 阅读(101) 评论(0) 推荐(0) 编辑
摘要: #include <iostream> #include <stack> using namespace std; int n, m; // void dfs(int u, int sum, int state) // { // // 0 // if(sum + n - u < m) return; 阅读全文
posted @ 2020-11-09 16:27 ManateeFan 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 第二章 空间配置器(allocator) 空间配置器标准接口(allocator) allocator配置器是SGI STL提供的标准接口,但它只是对operator new()和operator delete()做了一层简单封装,效率不高,所以SGI并没有使用它。 高效的空间配置器结构std::a 阅读全文
posted @ 2020-10-27 10:51 ManateeFan 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 第六章 进程 本章关注进程虚拟内存的布局和内容。 进程和程序 进程是一个可执行程序的实例。 程序是包含了一系列信息的文件,这些信息描述了如何在运行时创建一个进程,内容如下: 二进制格式标识:用于描述可执行文件格式的元信息。 机器语言指令:对程序算法进行编码。 程序入口地址:标识程序开始执行指令的起始 阅读全文
posted @ 2020-04-02 13:54 ManateeFan 阅读(166) 评论(0) 推荐(0) 编辑