memset函数

poj_3281Dining(网络流+拆点)

删除回忆录丶 提交于 2020-04-07 06:27:53
poj_3281Dining(网络流+拆点) 标签: 网络流 题目链接 题意: 一头牛只吃特定的几种食物和特定的几种饮料,John手里每种食物和饮料都只有一个,问最多能够满足几头牛的需求(水和食物都必须和他们的胃口)。 题解: 网络流 建图:从源点向每个食物连一条边,容量为1, 将牛拆成两个点牛,牛',中间连边,容量为1 从食物向牛连边,容量为1 连牛'和饮料,容量为1 连饮料和汇点,容量为1 网络流三种算法的理解和代码实现以及相应的模板 先介绍一个定理: 最大流最小割定理: 割:去掉某几条边使得源点和汇点不再联通,那么这几条边就叫一个割,这几条边的边权和最小的就叫做最小割。 一个图的最大流就是这个图对应的最小割,可以看做是一个沙漏,最大流是要求这个沙漏每个时刻最大的流量,那就相当于是求沙漏最细的地方的流量。而最小割就相当于是用一个刀子将这个沙漏一分为二,然后找横截切面最小的就是这个沙漏最细的地方。 再介绍一些网络流的一些基本性质 流网络G的流(flow)是一个实值函数 f :V ×V → R,且满足下列三个性质 (1) 容量限制:对于∀u,v∈V ,要求 f (u,v) ≤ c(u,v)。 (2) 反对称性:对于∀u,v∈V ,要求 f (u,v) = −f (v,u)。 (3) 流守恒性:对于∀u,v∈V −{s,t},要求∑f (u,v) =0。 f(u,v)即为u到v的流

C语言字符串

本秂侑毒 提交于 2020-03-15 18:00:54
目录 一、字符串的概念 二、占用内存的情况 三、字符串的初始化 四、字符串与指针 五、字符串的结尾标志 六、字符串的输出 七、字符串越界 八、字符串常用的库函数 1、获取字符串的长度(strlen) 2、字符串复制或赋值(strcpy) 3、字符串复制或赋值(strncpy) 4、字符串拼接(strcat) 5、字符串拼接(strncat) 6、字符串比较(strcmp、strncmp) 7、字符查找(strchr、strrchr) 8、字符串查找(strstr) 九、应用经验 1、留有余地 2、变量初始化 3、位置(地址)偏移的用法 4、不要在子函数中对字符指针用sizeof 十、课后作业 十一、版权声明 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表示字符串末尾的空字符\0,则该数组中的内容就构成了一个字符串。 因为字符串需要用\0结尾,所以在定义字符串的时候,字符数组的长度要预留多一个字节用来存放\0,\0就是数字0。这是约定。 char strname[21]; // 定义一个最多存放20个英文字符或十个中文的字符串 字符串也可以存放中文和全角的标点符号

二分匹配模板

和自甴很熟 提交于 2020-03-05 06:02:16
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <vector> 5 #include <algorithm> 6 using namespace std; 7 /****************************************************** 8 * 二分图匹配(匈牙利算法得邻接矩阵+dfs实现) 9 * 初始化:g[][]两边顶点的划分情况 10 * 建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 11 * g 没有边相连则初始化为0 12 * //un是匹配左边的顶点数,vn是匹配右边的顶点数 13 * 调用:res = hungray():输出最大匹配 14 * 优点:适用于稠密图,dfs找增广路,实现简洁易于理解 15 * 时间复杂度:O(V,E)。 16 * 顶点编号从0开始 17 const int maxn = 500 + 5; 18 int un, vn;//二分图中u, v的数目,使用前必须赋值 19 int g[maxn][maxn]; 20 int linker[maxn];//每个结点的匹配结点 21 bool used[maxn]; 22 23 bool dfs(int u) { 24 for(int v = 0;

HDU-2093考试排名

浪尽此生 提交于 2020-03-01 17:34:46
题目链接 HDU-2093 题意 实时评测系统根据提交时间和对错误次数罚时进行排名。 思路 结构体存储学生信息 采用字符串读入,遍历字符串,计算每道题的提交时间和错误次数,存入结构体。 计算所有同学的AC题目以及所用时间,一定要注意罚时的计算规则,没有AC的题目不计算罚时,对结构体进行排名。多要素排序可以重载 < 运算符 bool operator < ( student & p ) { if ( scoresum != p . scoresum ) return scoresum > p . scoresum ; //降序 if ( timesum != p . timesum ) return timesum < p . timesum ; //升序 return name < p . name ; } 注意memset函数的使用方法,头文件 <cstring> , 用法为 void* memset( void* dest, int ch, std::size_t count ); 转换值 ch 为 unsigned char 并复制它到 dest 所指向对象的首 count 个字节。若该对象是潜在重叠的子对象或非可平凡复制 ,则行为未定义。若 count 大于 dest 所指向的对象大小,则行为未定义。 可平凡复制的:(TriviallyCopyable) (例如标量、 C

2018-2019 ACM-ICPC, China Multi-Provincial Collegiate Programming Contest

 ̄綄美尐妖づ 提交于 2020-02-25 01:46:47
宁夏邀请赛的题,网络赛出锅之后来补了一下,还蛮有意思。题目地址: https://codeforces.com/gym/102222 A、给你一个栈和一堆pop、push操作,每次操作之后询问栈中的最大值,如果栈为空输出0 输入是给定的一个随机数生成器 每一次有元素进栈就把他与当前最大值比较,更新最大值之后把最大值压入另一个栈,pop时两个栈同时操作,每次输出另一个栈的栈顶即可 (这就是单调栈?) 代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; int t,n,p,q,m,Case=1; unsigned int SA,SB,SC; stack<unsigned int> mx; ll ans; unsigned int rng61(){ SA^=SA<<16; SA^=SA>>5; SA^=SA<<1; unsigned int t=SA; SA=SB; SB=SC; SC^=t^SA; return SC; } void Push(unsigned int v){ if(mx.empty()) mx.push(v); else mx.push(max(mx.top(),v)); } void Pop(){ if(mx.empty()) return; mx.pop(); } void

Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2)

∥☆過路亽.° 提交于 2020-02-25 01:43:57
二进制专场,还被FST一题。 A、签到,题意是,给定a,b,c f(0)=a,f(1)=b,f(n)=f(n-1)^f(n-2) 求f(n) 稍微化简就看得出f(x)是按照a,b,a^b这样在循环出现 因为a^b^a=b,a^b^b=a 代码: #include <bits/stdc++.h> #define int long long #define sc(a) scanf("%lld",&a) #define scc(a,b) scanf("%lld %lld",&a,&b) #define sccc(a,b,c) scanf("%lld %lld %lld",&a,&b,&c) #define schar(a) scanf("%c",&a) #define pr(a) printf("%lld",a) #define fo(i,a,b) for(int i=a;i<b;++i) #define re(i,a,b) for(int i=a;i<=b;++i) #define rfo(i,a,b) for(int i=a;i>b;--i) #define rre(i,a,b) for(int i=a;i>=b;--i) #define prn() printf("\n") #define prs() printf(" ") #define mkp make_pair

2020 HZNU Winter Training Day 10

只谈情不闲聊 提交于 2020-02-07 17:13:01
B CodeForces 1091D 题意:给n!个n的排列,按字典序从小到大连成一条序列,例如3的情况为:[1,2,3, 1,3,2, 2,1,3 ,2,3,1 ,3,1,2 ,3,2,1],问其中长度为n,且和为sum=n*(n+1)/2的序列有多少个? 思路:我们考虑一下next_perumation函数产生字典序递增的全排列的过程: 假设某一个序列长度为n,最长的递减的后缀长度k,那么它的下一个排列是这样产生的:选取序列第n-k个数,与后k个数中比第n - k个数大的最小的数交换,然后将后k个数按从小到大排序。 例如序列1,2,5,4,3的下一个排列为1,3,2,4,5。我们观察发现:这种时候1,2,(5,4,3,1,3,)2,4,5不满足和为sum了,因为在产生下一个排列的过程中,第n-k个位置的数被替换了。 也就是说,假设一个序列存在长度为k的递减后缀,那么这个后缀不能产生一个长度为sum的序列。例如,1,2,(5,4,3,1,3,)2,4,5不行,但是1,(2,5,4,3,1,)3,2,4,5可以。 所以,我们的任务是找出每个长度为k的递减后缀有多少个?应该为C(n,n-k)*(n-k)!=A(n,n-k)=n!/k!个。因为只要选了前面n-k个数,后面长度为k的递减的序列是固定的,所以我们只需要选n-k个数全排列就行了。 我们可以得到最终的答案了:一共有n*n!-

高精度算法(C/C++)

送分小仙女□ 提交于 2020-01-28 15:36:13
高精度算法 (C/C++) 做ACM题的时候,经常遇到大数的加减乘除,乘幂,阶乘的计算,这时给定的数据类型往往不够表示最后结果,这时就需要用到高精度算法。高精度算法的本质是把大数拆成若干固定长度的块,然后对每一块进行相应的运算。这里以考虑4位数字为一块为例,且输入的大数均为正整数(也可以考虑其他位,但要注意在每一块进行相应运算时不能超出数据类型的数值范围;有负整数的话读入时判断一下正负号在决定运算)。 1. 高精度加法 以3479957928375817 + 897259321544245为例: 3479 9579 2837 5817 +897 +2593 +2154 +4245 = = = = 4376 12172 4991 10062 进位0 进位1 进位0 进位1 4377 2172 4992 0062 C语言实现代码如下: #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 200 //整数乘幂运算函数 int Pow(int a, int b) { int i = 0, result = 1; for(i = 0; i < b; ++i) { result *= a; } return result; } //High Precision Of Addition int main() {

网络流

早过忘川 提交于 2020-01-22 21:05:39
一个网络 \(G=(V,E)\) 是一张有向图,图中每条有向边 \((x,y)\in E\) 都有一个给定的权值 \(c(x,y)\) ,称为边的容量。特别地,若 \((x,y) \notin E\) ,则 \(c(x,y)=0\) 。图中还有两个指定的特殊节点 \(S,T \in V(S \neq T)\) 分别被称为源点和汇点。 设 \(f(x,y)\) 是定义在节点二元组 \((x \in V,y \in V)\) 上的实数函数,且满足: 容量限制: \(f(x,y) \leq c(x,y)\) 斜对称: \(f(x,y)=-f(y,x)\) 流量守恒: \(\forall x \neq S,\ x \neq T,\ \sum_{(u,x)\ \in E} f(u,x) = \sum_{(x,v)\ \in E}f(x,v)\) \(f\) 称为网络的流函数,对于 \((x,y) \in E\) , \(f(x,y)\) 称为边的流量, \(c(x,y)-f(x,y)\) 称为边的剩余流量 \(\sum_{(S,v)\ \in E} f(S,v)\) 称为整个网络的流量( \(S\) 为源点) 最大流 Edmond—Karp算法 若一条从源点 \(S\) 到汇点 \(T\) 的路径上各条边的剩余容量都大于 \(0\) ,则称这条路径为一条增广路 \(EK\) 算法为用 \

memset函数的用法

血红的双手。 提交于 2020-01-15 07:38:09
memset是计算机中C/C++语言函数。将s所指向的某一块内存中的后n个字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为s。 来源: CSDN 作者: 张同学1111 链接: https://blog.csdn.net/weixin_45655152/article/details/103654940