- 博客(188)
- 收藏
- 关注
原创 Vagrant-io_uring
一个基于io_uring的服务器,可供学习。 https://github.com/fawkesLi-lhh/Vagrant-io_uring/ (ps:这大概是全网第一个demo吧,哈哈哈哈哈哈)
2021-04-14 14:37:46
241
原创 io_uring polling + pread 真正的异步编程
io_uring是Linux 5.1中引入的一套异步非阻塞的io接口 io_uring的系统调用只有三个io_uring_setup,io_uring_enter,io_uring_register。但实际使用起来非常复杂,所以io_uring作者基于上面三个系统调用封装了一个易于使用的库,liburing (https://github.com/axboe/liburing) 实际使用流程大致就是先初始化一个ring,先取一个sqe,然后把要做的事放入sqe,然后提交(如果有多个sqe也只需要提交一次),
2021-03-05 23:23:43
743
原创 Long Permutation
题意: A permutation is a sequence of integers from 1 to n of length n containing each number exactly once. For example, [1], [4,3,5,1,2], [3,2,1] — are permutations, and [1,1], [4,3,1], [2,3,4] — no. Permutation a is lexicographically smaller than permutatio
2020-11-25 23:24:33
230
原创 车
思路:对于每一次询问x y,我们要求的是x到y之间的一条路径,这条路径满足路径的权值最小值在所有路径中最大,所以我们可以直接构造最大生成树,在这颗树上求解,之后直接用lca求解即可。 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <q.
2020-10-15 21:51:33
191
原创 2020-09-01
计算机组成原理预习 概论 计算机的基本概念 冯·诺伊曼思想 二进制表示程序和数据 存储程序的工作方式 五大部件组成 信息的数字化表示 采用二进制代码表示各种信息 物理机制上用数字信号(脉冲、电平) 存储程序工作方式 事先编制程序 事先存储程序 自动、连续地执行程序 计算机系统地硬件组成 主要功能部件 CPU 运算器、寄存器组、控制器 运算器 算数运算和逻辑运算 由通用寄存器组、选择器、ALU、移位器组成。 ALU:全加器实现运算操作 通用寄存器组:提供操作数、存放结果 选择
2020-09-01 20:15:47
688
原创 2020-08-30
操作系统预习!!!求求你了 学快点吧 概念和目标 层次结构: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2UxuKLHa-1598797484401)(C:\Users\余伟\AppData\Roaming\Typora\typora-user-images\1597906019295.png)] 操作系统作用: 1.协调软硬件资源工作; 2.为上层应用程序提供服务; 3.是系统软件、不是硬件。 操作系统需要实现的功能和目标 进程:程序的执行过程,执行前需要将程序放入内
2020-08-30 22:25:01
331
原创 2020-08-11
时间复杂度:客观描述算法的好坏的量 3n O(2*n) = O(n) O(2*x2 +x) = O(x2) O(2n+n2) = O(2n) 1秒钟跑出答案。 x<=1000 O(x2) 1e6 1e7 1e8 (ab)%m = ((a%m)(b%m))%m (a+b)%m = ((a%m)+(b%m))%m (a-b)%m = ((a%m)-(b%m))%m b->-b 顶点和边构成的集合 INF 0x3f3f3f3f 表示无穷大 快速幂对dp优化, dp优化: 1.基于可变决策集合的优化
2020-08-11 12:04:53
152
转载 poj 1818
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-07-28 17:17:53
176
原创 poj 3290
这个题做了三个多小时, 前2个小时没用理解到这句话 Given a collection of symbols resulting from throwing a set of dice, 我以为是最优子序列问题,各种dp回溯都过不了,但是人家说a set of dice,就是输入的是一个集合,而不是一个序列。隐含的意思是没有顺序问题,可以乱序构造。 后面一个小时是没用理解到这句话 p, q, r, s, and t are WFFs 我光看到p, q, r, s,没用看到and t,然后一直wa。 读
2020-07-18 12:58:27
195
原创 bzoj 1911斜率优化
这个题为什么有个*??? 关于斜率优化又有了新的感悟 对于次优解的排除:假设对于i来说l是次优解。即满足k(q[l],q[l+1])<=k(i)时,l+1比l更优 k(q[l],q[l+1])表示这两个点连成一条线的斜率,k(i)表示在i处那根线的斜率,这个很容易就可以证明 对于提前排除不可能的解:假设r是考虑排除的点,now是考虑放入的点,即满足k(q[r-1],q[r])>=k(q[r],now)时,应该提前排除r 这个证明也特别简单,就是不等式换算一下 为什么要这样呢?因为这样两个式子都要
2020-07-10 22:34:35
199
原创 poj 3709 斜率优化
状态定义很简单, 然后经过一堆花里胡哨的运算,就可以算出方程 f[j]-sum[j]+a[j+1]*j = a[j+1]*i-sum[i]+f[i] 设 y(j) = f[j]-sum[j]+a[j+1]*j 然后经过一堆花里胡哨的证明就可以发现y(j), i, sum[i]都是单增的,然后就可以找出斜率优化的两个条件之一, 更优解比较 (y(q[l + 1]) - y(q[l])) <=i * (a[q[l + 1] + 1] - a[q[l] + 1]) (通过解方程:f[i] (从q[l+1]
2020-07-10 21:58:21
235
原创 ch 5e09 区间dp
区间dp模板 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include &l
2020-07-09 19:55:24
183
原创 ch 5e07多重背包
严重感觉二进制和单调队列的耗时差别不大(自我安慰) #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <
2020-07-09 17:12:36
208
原创 poj 1187 表示范围的线性dp
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-07-09 16:47:36
182
原创 ch 5e02 线性dp
偷奸耍滑之偷工减料 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include
2020-07-08 21:50:50
168
原创 ch 5e01 线性dp
把ka[tt]++写成ka[tt++],找半天没找到错误 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include &
2020-07-08 21:18:57
159
原创 poj 2104 主席树
自己敲一个模板以后用 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #includ
2020-07-06 11:29:40
138
原创 ch4901 带权并查集
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-07-02 23:30:42
218
原创 poj 3233 矩阵快速幂
构造一个左上角是A+A2+A3 …的矩阵,然后去算就可以了 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include
2020-06-28 15:17:28
162
原创 bzoj 2818 欧拉函数
第一种思路,就是对于某个数q,跟他互质的数p,kp和kq的最大公约数是k,那么这个数能组成的答案的数量就是phi[i]乘以某个质数,且乘积小于n 基于这种思路写下这个代码 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue>
2020-06-25 13:30:33
225
原创 ch 2907宽搜
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-06-21 22:04:34
159
原创 ch 2906 宽搜
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-06-21 21:41:44
180
原创 poj 3700 二分套dfs
先看第一个tle的思路,就是直接暴力的搜索,但是如果搜索的深度非常大,就会tle int n, a[55], ans; int nn[2][55][55], l[2][55], vis[55];//0为降序,1为升序 void dfs(int x, int dir, int now, int sum) { if (now == n) { ans = min(ans, sum); return; } if (sum + 1 >= ans)return; if (l[dir][x] ==
2020-06-21 21:03:50
233
转载 poj 1167 dfs
为什么启发式搜索的题书上说是迭代加深??? 思路跟大多数题一样,都是先把原问题进行处理,把处理过的数据再抽象成算法问题,因为原问题不好直接深搜,所以要先处理 注意启发式剪枝的>=ans就剪枝,而不是>才剪枝 注意题目上说了可以有多条线路的时间是一样的(两条线路间隔都是5) #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <c
2020-06-21 13:24:12
162
转载 ch 2901
#include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <algor
2020-06-20 15:22:24
230
转载 ch 1812 链表加优先队列
思路: 先把数据分成最长的连续小块,满足每个小块里面要么只有负数,要么只有整数,那么最大的ans就是每个正数小块的和。但是题目上规定了小块的数量,所以你需要将某些小块合成成一个小块,怎么合成呢? 就是每次把负数小块里面值最大的找到,然后把它和它左右两个正数小块合成,这样两个整数小块就变成了一个小块(中间有一个负数)。 这个我没做出来,抄的书上的代码 代码 #include <cstdio> #include <iostream> #include <iomanip> #i
2020-06-17 14:45:13
211
原创 poj 1442 优先队列
求长度为ui的区间的第i小的数,区间长度是递增的 为啥是priority_queue <int, vector, greater>呢,因为priority_queue<Type, Container, Functional>,要想指定仿函数,必须先指定容器,所以就这样写了 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include
2020-06-17 12:38:24
178
原创 ch 1809 kmp中f数组的应用
思路: 搞了一天了,好累啊。 就是kmp里面f[i]数组表示的是 :a串以i为结尾的字串,与b串的前缀的最大匹配长度。所以对于题上说的某些前缀,你不用管是那个前缀,你只需要知道前缀的匹配长度就行了啊,所以for (int i = 1; i <= n; i++) cnt[f[i]]++; 不过有可能f[i]既可以匹配5位字符,又可以匹配3位字符,那么你就应该都算上去啊,所以cnt[i]数组应该保存的是匹配长度大于等于i的有多少种情况,但是你刚刚少算了一些情况的嘛,所以for (int i = n; i.
2020-06-16 23:27:39
422
原创 ch 1807 最小表示法模板题
没啥好说的 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include <map> #include <
2020-06-16 22:06:21
218
原创 poj 1635 树的同构
思路: 因为题目要求的是O(n2)的算法,而且是树不是图,所以思路比较随意,先找每个节点的爸爸,然后记录每个节点有多少个子孙(包括儿子的儿子),然后只有排序之后每个都一样,那树就同构,如果题目要求O(n)的话,就不能找爸爸,直接找儿子,然后深搜。 你还是看代码吧,我感觉我说的不清楚 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cs
2020-06-16 21:35:54
145
原创 关于第二章的习题
应该直接看答案的题: 双栈排序 内存分配 其他都是可以自己做的,书上基本上都能找到参考 还有一件事,写单调栈个单调队列的时候最好自己写,别背模板,我觉得多想一想是能写出来的
2020-06-16 19:16:25
455
原创 poj 2823
题意: 你去看图就明白了,单调队列模板题 思路: 代码: #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include &
2020-06-16 18:42:58
145
原创 ch 1813
Tom最近在研究一个有趣的排序问题。如图所示,通过2个栈S1和S2,Tom希望借助以下4种操作实现将输入序列升序排序。 [IMG]http://www.tyvj.cn:8080/ProblemImg/1121-1.gif[/IMG] 操作a 如果输入序列不为空,将第一个元素压入栈S1 操作b 如果栈S1不为空,将S1栈顶元素弹出至输出序列 操作c 如果输入序列不为空,将第一个元素压入栈S2 操作d 如果栈S2不为空,将S2栈顶元素弹出至输出序列 [IMG]http://www.tyvj.cn:8080/Pr
2020-06-16 18:00:49
172
原创 poj 1964
读数据2小时,解题五分钟 思路: 把每一排都当成一个柱状图最大面积的问题,柱体的高度就是它头上最近的R的位置。(用h[i]表示高度的话赢应该这样写 if (mp[i][j] == ‘F’) h[j]++; else h[j] = 0; 我相信你看懂了吧) 如果你想通了上一句话,那么你就用柱状图最大面积的问题的单调栈思路去求解,很简单的。 我感觉我做题做多了,表达能力都不行了,说不出来,直接看代码把 (读数据的时候一定要用while读,不然会出问题) #include <cstdio> #incl
2020-06-16 16:55:54
203
原创 CH1801
括号画家 Candela是一名漫画家,她有一个奇特的爱好,就是在纸上画括号。这一天,刚刚起床的Candela画了一排括号序列,其中包含小括号()、中括号[]和大括号{},总长度为N。这排随意绘制的括号序列显得杂乱无章,于是Candela定义了什么样的括号序列是美观的: (1) 空的括号序列是美观的; (2) 若括号序列A是美观的,则括号序列(A)、[A]、{A}也是美观的; (3) 若括号序列A、B都是美观的,则括号序列AB也是美观的; 例如 (){} 是美观的括号序列,而 )({)[}]( 则不是。 现在
2020-06-16 11:28:36
534
原创 poj 1038 三进制状态压缩dp
跟1185思路一样,不过内存限制比较严格,需要用滚动数组 #include <cstdio> #include <iostream> #include <iomanip> #include <string> #include <cstdlib> #include <cstring> #include <queue> #include <set> #include <vector> #include &
2020-06-12 13:14:17
238
原创 cf edu 89 d 求一个数的因子和与自己互质
题意: 输入n(1≤n≤5*105) ,在输入n个数,问你对于ai(2≤ai≤107) ,是否存在ai的两个因数d1>1 and d2>1,且gcd(d1+d2,ai)=1。有就输出d1,d2,没有就输出-1. input 10 2 3 4 5 6 7 8 9 10 24 output -1 -1 -1 -1 3 -1 -1 -1 2 2 -1 -1 -1 -1 2 -1 -1 -1 5 3 (输出数据的每一列表示一个ai的答案,比如第5列,表示a5–即6的答案) 思路: 对于每一个ai,先保存
2020-06-12 12:06:12
405
原创 poj 1185 较难的状压dp
```cpp #include #include #include #include #include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3f #define IMAX 2147483646 #define LINF 0x3f3f3f3f3f3f3f3f #define ll long long #define ull unsigne
2020-06-11 17:55:30
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人