- 博客(42)
- 收藏
- 关注
转载 DPDK介绍
什么是dpdkDPDK是INTEL公司开发的一款高性能的网络驱动组件,旨在为数据面应用程序提供一个简单方便的,完整的,快速的数据包处理解决方案,主要技术有用户态、轮询取代中断、零拷贝、网卡RSS、访存DirectIO等。内核协议栈 vs dpdk内核收包的两种方式中断模式网卡收到包提醒CPU发生中断处理包轮询模式CPU主动持续检查网卡是否有数据包到来内核协议栈收包流程 TX/RX rings ● Circular queue ...
2022-04-21 22:41:08
34593
原创 编译和链接
1、编译和链接1.1 预编译 (-E命令)1.1.1 gcc -E hello.c -o hello.i 或者cpp hello.c > hello.i1.2 编译1.2.1 gcc -S hello.i -o hello.s1.3 汇编1.3.1 gcc -c hello.s -o hello.o 或者 as hello.s -o hello.o预编译、编译、汇编可以归结为一个过程:gcc -c hello.c -o hello.o1.4 链接1.4.1 模块
2020-09-17 19:36:36
124
转载 计算几何的一些模板
求凸包的Graham模板:#include#include#include#includeusing namespace std;struct node{ int x,y;} a[105],p[105];int top,n;double cross(node p0,node p1,node p2)//计算叉乘,注意p0,p1,p2的位置,这个决定了方向{ ret
2017-10-30 09:05:03
255
原创 hdu3709 枚举
#include#define ll long longusing namespace std;ll m,n;ll dp[20][2005][20];int digit[20];ll dfs(int pos,int state,int pivot,bool limit){ if(pos<=0)return state==0; if(state<0)return 0;
2017-10-26 09:09:37
191
原创 poj3252注意前导0的影响
#include#define ll long longusing namespace std;int n,m;int dp[50][50];//dp[i][j]表示枚举到第i位,前面0的个数和1的个数差,为了防止中间出现dp[i][j]为负数但有可能是合法结果,此处hash一下,dp[i][j]+32//最后判断结果是否>=32判断该方案是否合法int digit[50];int
2017-10-26 09:07:02
242
原创 hdu4734
int dp[20][10005];int digit[20];int getvalue(int a){ int i=0; int ans=0; while(a){ ans=ans+((a%10)*(1<<i)); i++; a/=10; } return ans;}int dfs(int pos,
2017-10-26 09:05:19
357
原创 数位dp 模板 poj 2089
#include#define ll long longusing namespace std;int n;int m;int dp[20][10];int a[20];int dfs(int pos,int pre,int state,bool limit){ if(pos==-1)return 1; if(!limit&&dp[pos][state]!=-1)r
2017-10-26 09:04:33
381
转载 树状数组模板
#include#include#include#include#define ll long long using namespace std;const int N = 5010;int bit[N];int n;void add(int i){ while (i <= n) { bit[i] += 1; i += (i&-i); }}int sum(i
2017-10-20 17:57:02
181
转载 区间修改,区间查询
//区间修改,区间查询#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#define ll long longusing namespace std;const int maxn = 100005;struct node { ll sum; int lazy;}T[maxn<<
2017-10-20 17:56:06
428
转载 线段树 单点修改,区间修改
//单点修改,区间查询#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;const int maxn = 50005;int sum[maxn<<2];void push_up(int root){ sum[root] = sum[root
2017-10-20 17:55:18
304
转载 字典树模板
#include#include#includeusing namespace std;typedef struct Trie_node { int count;//统计单词前缀出现的次数 struct Trie_node*next[26];//指向各个子树的指针 bool exist;//标记该结点处是否构成单词}TrieNode,*Trie;TrieNode* crete
2017-10-20 17:53:00
204
原创 数论的模板
//欧拉筛#include#include#include#include#define ll long long using namespace std;const int maxn = 1000010;bool visited[maxn];vectorprime;//欧拉筛模板void isprime(){ for (int i = 2; i < maxn; i
2017-10-20 17:51:42
258
转载 RMQ 的ST表做法
//做法一:ST表查询#define _CRT_SECURE_NO_WARNINGS#include#include#includeusing namespace std;const int N = 100010;int maxsum[20][N], minsum[20][N]; //优化1void RMQ(int num) //预处理->O(nlogn){ for (i
2017-10-20 17:50:41
235
转载 kmp 模板
#include#include#include#includeusing namespace std;#define MAXN 1000005int Next[MAXN];char p[MAXN], s[MAXN];//p为模式串,s为原串 //next数组的求法void GetNext(char *p, int *next) { int pLen = str
2017-10-20 17:49:44
189
转载 LCA模板 Tarjan
#include#include#include#include#includeusing namespace std;const int maxn = 50005;int n, m, num,qnum, ans;int head[maxn], qhead[maxn], fa[maxn], dis[maxn], f[maxn][20], a[maxn][3];bool vis
2017-10-20 17:49:07
198
转载 spfa模板 hdu2544
//hdu2544#include#include#include#include#include#define INF 0x3f3f3f3fusing namespace std;const int maxn = 100010;struct edge { int to, w, next;}e[maxn];int head[maxn], dist[maxn], visit
2017-10-20 17:47:56
238
原创 快速幂模板
#include#include#include#include#include#define ll long longusing namespace std;ll M;const int maxn = 100;struct Matrix { int arr[maxn][maxn]; Matrix operator*(const Matrix &m)const { Mat
2017-10-20 17:46:44
162
转载 Tarjan求强连通分量 缩点
#includeusing namespace std;const int N=5005;const int M=100005;struct Edge{ int v,next;}edge[2*M];int head[N],low[N],dfn[N],belong[N],degree[N],sta[N];bool vis[N];int index,cnt,top,scc;
2017-10-17 21:47:53
304
转载 Dinic()模板
#include#include#include#include#includeusing namespace std;#define MAXFLOW 0x3f3f3f3fint G[300][300];//用邻接矩阵存储图bool visited[300];int n, m;//m为顶点数,从1~m,n为边数int Layer[300];//计算每个点的层数,从源点到汇
2017-10-14 11:00:35
187
转载 最小费用流模板
#define INFINITE 1 << 26#define MAX_NODE 1005#define MAX_EDGE_NUM 40005#includeusing namespace std;struct Edge{ int to; int vol; int cost; int next;};Edge gEdges[MAX_EDGE_NUM];
2017-10-14 10:44:40
185
转载 sgu194 无源汇带有下界的网络流
#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include #include #include #include #include #include #include #include #include #include #include using
2017-10-12 20:41:06
224
转载 poj2112 二分+网络流
3.5借助水流解决问题的网络流 二分图匹配一看到最小化最大值(或者最大化最小值),当然是二分搜索了。先将两点间最短路预处理出来,可以简单warshall_floyd搞定。接着构建网络流,从s到牛引一条容量1的边,从挤奶机到t引一条容量M的边,然后对最大路径二分,在二分图匹配建图的时候,牛到挤奶机间距离大于limit的边忽略掉。二分判断条件是,最大流的流量是否等于牛量(南方人你能
2017-10-12 20:36:46
242
转载 poj3436 网络流
#include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;int g[105][15], p, n, q[55];int G[105][105], G_copy[105][105], layer[105], vis[105];struct node{ int
2017-10-12 20:34:17
205
转载 poj1637 判断一个混合图是否存在欧拉回路
#include#include#include#include#include#define V 220using namespace std;struct node{ int to; int c; int f; int next;}a[3000];int head[V];int tot,vi[V],vo[V];int leve[V];v
2017-10-12 15:15:18
305
转载 hdu1878 判断一个无向图是否存在欧拉回路模板
#include #include#includeusing namespace std;const int N=1001;int n,m,fa[N];int degree[N],sum;void init(){ for(int i=0;i<N;i++) fa[i]=i;}int find(int x){ if(x==fa[x])ret
2017-10-11 23:55:06
1326
转载 二分图的最大匹配模板
//二分图的最大匹配 poj1469#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;const int V = 500;const int E = 1000;vectorg[V];bool flag, vis[V];int match[V];int p,
2017-10-11 11:06:04
244
转载 判断一个图是不是二分图
判断一个图是否是二分图#include#include#include#includeusing namespace std;const int N = 50005;int col[N];vectorV[N];bool BFS(int start){ col[start] = 1; queueq; q.push(start); while (!q.empty())
2017-10-10 21:50:56
1188
转载 hdu5361 最短路+并查集
#define _CRT_SECURE_NO_WARNINGS#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include #include #include #include using namespace std;typedef long long ll;t
2017-10-10 20:00:35
247
转载 一个智障的求逆序对的问题
#include#include#include#include#define ll long long using namespace std;const int N = 5010;int bit[N];int n;void add(int i){ while (i <= n) { bit[i] += 1; i += (i&-i); }}int sum(i
2017-09-16 21:33:28
154
转载 hdu5289ST表+二分
#include #include #include #include #include #include #include #include #define mod 1000000007using namespace std;int t,n,k;int a[100100],minn[100010][20],maxn[100010][20],mid;long long an
2017-09-16 15:52:23
239
转载 hdu5289单调队列
#include #include #include #include using namespace std ;#define LL __int64deque deq1 , deq2 ;//单调队列,deq1最大值,deq2最小值LL a[100010] ;int main() { int t , n , i , j ; LL k , ans ; sc
2017-09-16 15:50:38
201
转载 线段树求某值之前或之后与其差值不小于k的最近位置
#include #include #include #include using namespace std;#define maxn 100000 + 10#define lson L, mid, rt<<1#define rson mid+1, R, rt<<1|1int n, k;int a[maxn];int ans;struct Node{ int
2017-09-16 15:48:17
248
转载 区间修改区间查询 lazy标记
//区间修改,区间查询#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#define ll long longusing namespace std;const int maxn = 100005;struct node { ll sum; int lazy;}T[maxn<<
2017-09-14 19:24:55
333
原创 hdu1166 单点修改区间查询
#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#includeusing namespace std;const int maxn = 50005;int sum[maxn<<2];void push_up(int root){ sum[root] = sum[root << 1] + sum
2017-09-13 21:33:28
214
转载 离散化+线段树 poj2528
//离散化+线段树#include #include #include #define CLR(A) memset(A,0,sizeof(A))using namespace std;const int N = 20005;int col[N * 4], vis[N];int le[N], ri[N], c[N * 2], ans;void pushdown(int p)
2017-09-13 17:45:53
212
转载 poj1741 树分治
//poj1741/*给一棵边带权树,问两点之间的距离小于等于K的点对有多少个。将无根树转化成有根树进行观察。满足条件的点对有两种情况:两个点的路径横跨树根,两个点位于同一颗子树中。如果我们已经知道了此时所有点到根的距离a[i],a[x] + a[y] <= k的(x, y)对数就是结果,这个可以通过排序之后O(n)的复杂度求出。然后根据分治的思想,分别对所有的儿子求一遍即可,但是这会出
2017-09-07 21:34:43
254
转载 codeforces 448C 分治
#include#include#define INF 0x3f3f3fusing namespace std;const int maxn = 5005;int h[maxn];int solve(int l, int r){ int Min = INF; int sum, flag = l; for (int i = l; i <=r; i++) { Min = m
2017-09-06 19:28:46
332
转载 poj 3714 分治加剪枝
//A#define _CRT_SECURE_NO_WARNINGS#include #include #include #includeusing namespace std;const double MAX_DIST = 1e100;const int MAXN = 200010;struct Point { double x, y; bool flag;};
2017-09-04 13:05:37
219
转载 折半搜索 poj3977
// B subset#include#include#include#include#include#includeusing namespace std;#define ll long long #define MAX 1000000000000020ll ll__absolute(ll x){ if (x < 0)return -x; return x;}
2017-09-01 10:17:22
217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人