memset

memset()函数及其作用

旧城冷巷雨未停 提交于 2020-01-31 09:50:32
我曾天真的以为 memset(a,0,sizeof(a))中的0可以用任意数替换 但是~ 实际上这是错误的 memset的功能 : 是将一快内存中的内容以 单个字节 逐个拷贝的方式放到指定的内存中去. 对于这一点我们拿memset(a, -1, sizeof a), 和memset(a, 1, sizeof a) (a为int类型)两个表达式进行举例. 先看memset(a, -1, sizeof a): 1个int是四个字节: -1 的补码是 11111111 11111111 11111111 11111111 (int) memset中的-1之占据一个字节 11111111 () memset()函数每次拷贝 拷贝一个字节,即: 11111111, 由于int中-1的四个字节都是相同的,所以最终结果能正确的输出-1; 表达式换成memset(a, 1, sizeof a)的话, 1 的源码和补码相同都是 00000000 00000000 00000000 00000001(int) memset中的1占据一个字节 00000001 memset()执行过后,每次拷贝一个字节,即 00000001 ,一个int就是4个字节合并到一起 就是 00000001 00000001 00000001 00000001 进行输出的话就是 16843009 所以这段代码执行过后会输出

缩点

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-29 19:08:47
//kosaraju #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<ctime> using namespace std; const int N=10005; int n,m,cnt,head[N],rhead[N],t,rt,q[N],top,ans,rcnt,Cnt[N],sum[N],number; bool vis[N],rvis[N]; struct Node{ int u,v,next; }edge[N]; struct rNode{ int u,v,next; }redge[N]; void push(int u,int v){ ++cnt; edge[cnt].u=u; edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt; } void rpush(int u,int v){ ++rcnt; redge[rcnt].u=u; redge[rcnt].v=v; redge[rcnt].next=rhead[u]; rhead[u]=rcnt; } void kosaraju(int u){ vis[u]=true; for(int

kosaraju

依然范特西╮ 提交于 2020-01-29 18:56:15
#include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<algorithm> #include<ctime> using namespace std; const int N=10005; int n,m,cnt,rcnt,head[N],rhead[N],t,rt,ans; bool vis[N],rvis[N]; struct Node{ int u,v,next; }edge[N]; struct rNode{ int u,v,next; }redge[N]; struct Node1{ int id,val; }f[N]; bool cmp(Node1 p,Node1 q){ return p.val>q.val; } void push(int u,int v){ ++cnt; edge[cnt].u=u; edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt; } void rpush(int u,int v){ ++rcnt; redge[rcnt].u=u; redge[rcnt].v=v; redge[rcnt].next=rhead[u]; rhead[u]=rcnt; }

memset()函数

試著忘記壹切 提交于 2020-01-29 17:58:42
函数原型 extern void *memset(void *buffer, int c, int count) // buffer:为指针或是数组 //c:是赋给buffer的值 //count:是buffer的长度 实例运用 long long f[2000][3][2]; memset(f, -1, sizeof(f)); //这样把这个三维数组中所有元素都初始化为-1 来源: CSDN 作者: 陈&sl 链接: https://blog.csdn.net/qq_41985293/article/details/104105432

Tarjan & LCA 套题题目题解

拟墨画扇 提交于 2020-01-29 17:21:42
刷题之前来几套LCA的末班 对于题目 HDU 2586 How far away 2份在线模板第一份倍增,倍增还是比较好理解的 #include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <stack> #include <queue> #include <cctype> #include <cstdio> #include <string> #include <vector> #include <climits> #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> #define LL long long #define PI 3.1415926535897932626 using namespace std; int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);} const int MAXN = 40040; const int MAXM = MAXN * 2; const int INF = 0x3f3f3f3f; struct Edge { int

2018-2019-1 20165307 20165327 20165332 实验五 通讯协议设计

谁说胖子不能爱 提交于 2020-01-29 01:46:54
2018-2019-1 20165307 20165327 20165332 实验五 通讯协议设计 Linux下OpenSSL的安装与使用 1.两人一组 2.基于Socket实现TCP通信,一人实现服务器,一人实现客户端 3.研究OpenSSL算法,测试对称算法中的AES,非对称算法中的RSA,Hash算法中的MD5 4.选用合适的算法,基于混合密码系统实现对TCP通信进行机密性、完整性保护。 实验步骤 在OpenSSL下载地址下载OpenSSL 解压OpenSSL源代码 tar xzvf openssl-1.1.0j.tar.gz 进入源代码目录后 $ ./config $ make $ make test $ make install 编写测试代码 test_openssl.c #include <stdio.h> #include <openssl/evp.h> int main(){ OpenSSL_add_all_algorithms(); return 0; } 编译和执行 结果打印0则表示安装成功 实现TCP通信 server.c: #include<stdlib.h> #include<pthread.h> #include<sys/socket.h> #include<sys/types.h> //pthread_t , pthread_attr_t and so

ac自动机

安稳与你 提交于 2020-01-28 03:46:28
https://www.cnblogs.com/sclbgw7/p/9875671.html 讲的好的博客。 只有fail指针的模板,好像用不到,一般都是用last指针的模板。 void build() { queue<int>q; q.push(1); while(!q.empty()) { int x=q.front();q.pop(); for(int i=0;i<26;++i) { int c=ch[x][i]; if(!c){ch[x][i]=ch[fail[x]][i];continue;}//关键,把子节点改成fail节点的子节点 q.push(c); int fa=fail[x]; while(fa&&!ch[fa][i])fa=fail[fa]; fail[c]=ch[fa][i]; } } } https://cn.vjudge.net/contest/301351#problem/A 习题 最基础的模板,即求一个文本串有多少个匹配的模式串。 #include<queue> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn = 5e5 + 5; const int N = 1e6 + 5; int tree[maxn][27];

c语言memset()函数

南楼画角 提交于 2020-01-27 12:34:13
1)名称:memset()函数 2)别称:char型初始化函数 3)功能: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作 4)用法: void *memset(void *s, char ch, unsigned n); 5)作用:在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。 6)代码示例: #include    #include    #include    int main(void)    {    char buffer[] = "Hello world/n";    printf("Buffer before memset: %s/n", buffer);    memset(buffer, '*', strlen(buffer) );    printf("Buffer after memset: %s/n", buffer);    return 0;    }    输出结果:    Buffer before memset: Hello world    Buffer after memset: *********** 7)memset()的深刻内涵:用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为

LCA的一些算法

人盡茶涼 提交于 2020-01-27 03:36:26
  LCA,就是求树上任意两点的最近公共祖先   (本题图片与代码均为Luogu3379)   方法我好像讲过一个,这次把主要的三个一起讲一讲   <1> 倍增(O(n log n))   我们先考虑最基本的LCA,记录每一个点的父节点和深度。   对于两个点x,y,先将它们调到同一高度(令dep[x]>dep[y],即把x向上移(dep[x]-dep[y])步即可,然后一起往上走就可以了。   这复杂度是O(nq)的,所以在此基础上优化。   用father[i][j]表示点j向上走2^i步时的点是多少(没有就是-1),然后每次上移只要走log n次即可。   预处理的话 father[i][j]]=father[i-1][father[i-1][j]];递推即可。   CODE #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N=500005,P=25; struct data { int to,next; }e[N*2+10]; int head[N*2+10],dep[N],father[P][N],i,j,n,m,x,y,root,k; inline void read(int &x) { x=0; char ch=getchar(); while

有上下界的网络流问题

不羁岁月 提交于 2020-01-26 20:53:16
有上下界的网络流问题分为无源汇和有源汇两种。 根据周源的《 一种简易的方法求解流量有上下界的网络中网络流问题》 无源汇上下界网络流 的做法是: 设边u->v的下界是B(u,v),上界是C(u,v)。 设M(i)为对于i结点的流入i的下界总和-流出i的下界总和。 增设源点s和汇点t。 如果M(i)>=0 连边s->i,容量为M(i)。 如果M(i)<0 连边i->t,容量为-M(i)。 对于图中的原来的边u-v,连边u->v,容量为C(u,v)-B(u,v)。 然后求最大流。如果对于源点出发的所有边都满流,则说明存在一个可行流满足条件。 有源汇有上下界网络流 的具体做法是: 1.求可行流 从汇点到源点连一条边,容量为INF,其他与无源汇有上下界网络流的建图方法相同。然后以超级源点和超级汇点为网络流的源和汇求一次最大流。 判断起始于超级源点的边是否全部满流即可。 2.求最大流 从汇点到源点连一条边,容量为INF,其他与无源汇有上下界网络流的建图方法相同。然后以超级源点和超级汇点为网络流的源和汇求一次最大流。 判断起始于超级源点的边是否全部满流,若满流,说明存在可行流。 然后去掉汇点到源点连的边,在原来的基础上以原图中的源点和汇点为网络流的源和汇再求一次最大流即可。 ZOJ 2314 Reactor Cooling 无源汇有上下界求最大流 题目链接: http://acm.zju.edu