- 博客(30)
- 资源 (2)
- 收藏
- 关注
原创 UDP收发示例
在这个例子中,主线程创建一个UDP套接字,并将套接字文件描述符传递给工作线程。工作线程使用DPDK来配置和管理网络接口,并在一个无限循环中接收和发送UDP数据包。主线程创建多个工作线程并等待它们完成。请注意,在DPDK中,每个工作线程都运行在一个独立的核心上。
2023-03-14 20:49:01 295
原创 根据中后序构建树的代码实现
1.理论部分知识树的前序中序后序遍历2.中后序构建树的代码实现class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public class In_Post { public TreeNode re...
2020-04-25 15:05:00 236
原创 根据前中序构建树的代码实现
1.理论部分知识树的前序中序后序遍历2.前中序构建树的代码实现class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; }}public class Pre_In { public TreeNode reC...
2020-04-25 14:40:41 209
原创 树的前序中序后序遍历
1.前序遍历前序遍历是指输出当前节点,再输出左子树,最后输出右子树。对于上图的前序遍历顺序为:先输出1,1的左子树2存在 --> 输出2,2的左子树4存在 --> 输出4,4的左子树不存在,右子树6存在 --> 输出6,6的左子树不存在,右子树7存在 -->输出7,7的左子树不存在,右子树不存在。此时我们观察到4的左右子树都已经遍历完(即2的左子树遍...
2020-04-25 14:07:38 927
原创 KVM is required to run this AVD. /dev/kvm device: permission denied.
在linux系统中Android Studio软件启动虚拟安卓设备失败。在终端输入:sudo chown username -R /dev/kvm
2020-03-19 09:12:40 97
原创 ubuntu系统安装TeamViwer远程控制软件
1.下载TeamViwer软件https://download.teamviewer.com/download/linux/teamviewer_amd64.deb2.安装sudo dpkg-iteamviewer_amd64.deb如果执行发生错误,说明你的系统是64位。需要添加32位框架。添加32位框架输入以下三条命令:sudo dpkg--add-archi...
2020-03-07 09:46:09 598
原创 最长上升子序列(LIS)
暴力会达到的复杂度,这里我们采用贪心+二分的算法,将时间复杂度降到。思路a数组存放当前输入的数,新建一个b数组用于维护最长上升子序列,b[i]表示现在最长上升子序列长度为i,它的最后一位元素为b[i]。我们每次都希望b数组的最后一位元素最小,这样我们就能加入更多的数进入b数组。所以,如果新加入元素大于b数组最后一位元素,直接加入;否则,我们用a[i]更新b数组,在b[i]中找到第一个大于等...
2019-09-28 14:30:24 175
原创 反素数
定义对于任意正整数n,其约数个数为f(n),例如6的约数有1、2、3、6,所以f(6)=4。对于任意正整数i(0<i<n),都有f(i)<f(n),则称n为反素数。常见问题1.给出约数个数n,求出约束个数为n的最小整数x。2.给出正整数n,求1~n中约束个数最多的数。性质1.一个反素数的因子一定是从2开始的连续质数,必须保证约数个数相同时n越小。比...
2019-08-17 12:19:59 288
原创 1035 最长的循环节
推荐一篇有关循环节很有意思的科普文章:https://w3.math.sinica.edu.tw/math_media/d253/25311.pdf关于循环节,有定理如下:1.如果1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/a的循环节长度恰好等于min()2.如果1<=b<a,a没有2或5的质因子,并且a与b互质,那么b/a的循环节长度必整除...
2019-08-13 15:24:26 238
原创 网络流之最大流
含义这里就不详细解释网络流的含义了。最大流解决的是从源点到汇点所能传送的最大容量。算法分析类似于这个图,我们要求从源点s到汇点t的最大容量。我们可以先选择从s-a-b-t这条路,这条路称为增广路,此时的容量为100,但实际我们可观测到最大容量为200。那么我们只需要在上一次增广路所经过的路径减去minzg,同时在反方向增加容量minzg,这样就可找到第二条增广路。经...
2019-08-10 17:02:58 318
原创 日常收纳
1.如果一个数各位数之和是3的倍数,则这个数一定是3的倍数证明:∵abcd=1000a+100b+10c+d=999a+99b+9c+a+b+c+d因为999可被3整除,99能被3整除,9能被3整除所以a+b+c+d能被3整除的话abcd就能被3整除题目链接:51Nod_1068 Bash游戏V32.如果 1 <= b < a ,a没有2或5的质因数,且a,b互质,...
2019-08-04 16:16:34 2031
原创 数码游戏
今天状态不好,应该是没睡醒,先简写记录大致思路,具体细节过两天再补。数码游戏即从左边网格布局通过0的上下左右移动交换,最终变为右边网格的状态,一般询问是否可达。对于N*M的矩阵。我们只需要考虑列数的奇偶性即可。当M为奇数时,逆序对数必须为偶数才可达;当M为偶数时,逆序对数必须与0所在位置保持相同的奇偶性。例题:HDU6620 Just an Old Puzzle题目...
2019-08-02 17:27:24 831
原创 归并排序-逆序数对
暂时没时间写过程,先附上代码。#include <iostream>using namespace std;int ans=0;void merge(int p[],int l,int mid,int r){ int t[r-l+1]; int p1=l,p2=mid+1; int i=0; while(p1<=mid&&am...
2019-08-02 16:46:02 129
原创 Lucas定理
简介Lucas定理用于解决数据较大时的组合数学问题。其中C(n,m)mod p中的模数p为素数。公式C(n,m)%p=C(n/p,m/p)*C(n%p,m%p)%p 。就是不断递归求C(n%p,m%p)%p ,每次更新n=n/p,m=m/p。C(n,m)%p=(n!/m!*(n-m)!),这里的除法需要转换为乘法逆元来计算。算法实现逆元的计算这里用的是费马小定理算快速幂,也...
2019-08-01 12:55:56 235
原创 浅谈线段树
概念线段树是一棵二叉搜索树,主要用于数组区间查询,更改等;他需要储存区间的左右端点,以及题目所需特定功能。建树(借用一下大佬的图)由图可知,每个点左半区间为[l,mid],[mid+1,r];每个节点左子树为2*k,右子树为2*k+1这里建树的结构体只包含左右端点l,r,此节点的值w,和更新信息fstruct node{ int l,r,w,f;}tr...
2019-07-30 16:40:39 129
原创 威尔逊定理
如果p为素数,则以HDU 2973为例。题意给出正整数n,求分析1.如果p为素数:,,所以有(此处的p为3k+7,下同)2.如果说p为合数,则p=ab,(p-1)!必定包含a和b,所以所以只需要统计k从1-k一共有多少个素数就行。代码较简单就不附了。...
2019-07-30 14:14:47 161
原创 最小生成树(kruskal算法)
好久没写了,简单一下回顾回顾。kruskal算法适合简单的最小生成树,利用并查集的思想将点不断加入到父节点中。算法实现:#include<iostream>#include<algorithm>#include<cstring>using namespace std;int fat[107];struct node//结构体记录一对节点及...
2019-07-28 16:22:03 150
原创 最短路径(Dijkstra算法)
简介Dijkstra算法实际上就是不断的贪心,每一次都通过中转点更新其他点到所求点的位置,即每一次都找到最优解。算法详解(1)初始时,S只包含起点s;U包含除s外的其他顶点,且U中顶点的距离为起点s到该顶点的距离。(2)每一次从U中选出距离源点最近的顶点k,并将顶点k加入到S中;同时,从U中移除顶点k。(3)通过把顶点K作为中转点,更新U中各个顶点到起点s的距离。...
2019-07-28 15:12:21 328
原创 0-1背包,完全背包,多重背包
避免遗忘,对这三种问题简单写下思路,没有具体分析。0-1背包:解决选择物品放入背包价值最大化,各种物品只有一件v=V....0(必须满足f[i][j]的值来自于f[i-1][j-w[i]],如果从小到大顺序,f[i-1]就变为了f[i])for(int i=1;i<=n;i++)//顺序,取自dp[j]而不是dpj[j-1]{ for(int j=v;j>...
2019-07-27 15:49:14 205
原创 乘法逆元
介绍:如果,且gcd(x,y)=1,(a与p互质),则称a关于模p的乘法逆元为x。乘法逆元可解决(b/a)%p的问题。由同余定理知a*b%m=( (a%m) * (b%m) )%m则有 a*x*(b/a)%m=( (a*x%m) * ((b/a)%m) )%m=(b/a)%m (x是a的逆元所以a*x%m=1)故 a*x*(b/a)%m=x*b%m=(b/a)%m所以原式子...
2019-07-25 14:42:31 122
原创 欧几里得算法(最大公约数、最小公倍数,拓展欧几里得算法)
这三种算法都是由欧几里得算法得出的。欧几里得算法又称为辗转相除法。1.最大公约数:GCD(x,y)=GCD(y,x mod y),x>y算法实现:int gcd(int x,int y){ if(y==0) return x; return gcd(y,x%y);}2.最小公倍数定理:x、y 两个数的最小公倍数乘以它们的最大公约数...
2019-07-25 11:19:29 2029
原创 快速幂+快速乘法+矩阵快速幂模版
快速幂算法可迅速求出x^n。其主要理论依据如下: 1,当n为偶数时,x^n可以转为x^2的n/2次方。 2,当n为奇数时,x^n可以转为x^2的n/2次方,再乘以n。typedef long long ll;ll mod=maxn;ll mod_pow(ll x,ll n){ ll res=1; while(n>0) ...
2019-07-24 10:56:05 180
原创 素数线性筛——欧拉Euler筛
时间复杂度O(n)prime[]数组中的素数是递增的,当i能整除prime[j],那么i*prime[j+1]这个合数肯定被prime[j]乘以某个数筛掉。因为i中含有prime[j],prime[j]比prime[j+1]小,即i=k*prime[j],那么i*prime[j+1]=(k*prime[j])*prime[j+1]=k’*prime[j],接下去的素数同理。所以不用筛下去了。...
2019-07-24 10:20:14 415
原创 2019 Multi-University Training Contest 1 —— Operation(贪心+区间线性基)
2019HDU多校第一场B题目链接题意给你一个序列,有两种操作:1.求出区间[l,r]的异或最大值;2.在序列后加一个x。思路求异或和的最大值,用线性基来做,关于线性基的定义和常用函数,见我的博客。此题用贪心+线性基来做,和传统的线性基相比,这里需要维护区间,以及数的位置,所以我们用两个二维数组来表示。v[i][j]代表第i个数为右边界时的线段基,j总是从高位开始更...
2019-07-23 17:17:46 128
原创 浅谈线性基
当给出多个数据,求异或时,通常会使用线性基进行处理。线性基是什么?对于原数组,我们试图用最少个数作为基础,用这些数之间的异或就可以表示子集合的异或和,而这些数即基础,称为线性基。这种特殊的基通常是由32位数字或64位数字构成。具体多少位取决于题目中所给数字集合中二进制下最高位位数。例如int范围需要32位线性基,而long long范围需要64位基解决。------------...
2019-07-23 14:04:19 184
原创 2019 Multi-UniversityTrainingContest1 DVacation 思维
题目链接先简化题目,假设只有两辆车,有两种情况:(1)不论那辆车快,后车追不上,所以时间是后车距离终点距离/后车速度;(2)后车能追上,这样前车限制了后车速度,所以后车的时间是前车的时间+前车车身长度/前车速度(前车过线了只是车头过线,车身还没过线)。所以只需要枚举N+1辆车最长时间即可。//#include<bits/stdc++.h>#include<...
2019-07-23 11:23:31 120
集装箱_0.1.8_chrome.zzzmh.cn.crx
2020-03-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人