
==复习汇总==
LOI_Q
“愿我们合上笔盖的刹那,有着侠客收剑入鞘的骄傲。”
展开
-
近期“贪心”题目总结
“贪心”实际上就是找一种方法,使我们想要得到的更多,更优挂缀:重量最小(每一个挂坠承重有限),求挂缀最长(有限制因素) 建筑抢修:(每一个任务)时间有限,求任务最多//特点:从做法(用到优先队列)及思路中都能看出,“挂缀”与“建筑抢修”实际上是一类题,有一个或者几个限制因素,阻止我们达到最优的状态(比如说:所有挂缀都用上,所有任务都完成),限制因素有大小之分,如果有多个限制因素,不妨试一下样例,原创 2017-10-17 17:24:38 · 537 阅读 · 2 评论 -
【总结】队内互测 + 近期刷题
//【输入输出】1.scanf别忘写“&”,有时编译不出问题,写的时候就要注意2.输入输出文件名或是输出yes等,一定要从题目中复制,以免有诈(比如:洛谷的“负环”这个题!!!)3.可以学一下读入优化(背板子)//【变量赋值以及初始化问题】1.有些量是必须要初始化的,但不一定都得用memset2.不要有重复的或是有歧义的变量名,比如:next[]原创 2017-10-24 10:52:56 · 340 阅读 · 0 评论 -
C/C++如何整行读入字符串?
方法一:scanf()读入char[]使用方法:char str[1024];scanf("%[^\n]",&str);getchar();说明:在scanf函数中,可以使用%c来读取一个字符,使用%s读取一个字符串, 但是读取字符串时不忽略空格,读字符串时忽略开始的空格,并且读到空格为止,因此只能读取一个单词,而不是整行字符串。 其实scanf函数也可完成这样的功能,而且还更强大。这里主要介转载 2017-10-25 08:14:32 · 1684 阅读 · 0 评论 -
C语言中的单引号和双引号的区别
首先肯定地说,二者是有区别的,不是说用谁都一样。1、实质区别,代表的含义不同‘A’代表的是一个整数,而且这个整数对应的是编译器所采用的字符集中的字符序列对应的数值。所以’A’跟ASCII中的65意义是相同的。# include <iostream>using namespace std;int main(int argc, char const *argv[]){ char str1 =转载 2017-10-25 17:00:01 · 11060 阅读 · 0 评论 -
最近公共祖先:LCA及其用倍增实现 +POJ1986
原网址:http://www.cnblogs.com/sllr15/p/5164996.html (侵权请告知,必删)Q:为什么我在有些地方看到的是最小公共祖先?A:最小公共祖先是LCA(Least Common Ancestor)的英文直译,最小公共祖先与最近公共祖先只是叫法不同。Q:什么是最近公共祖先(LCA)?A:最近公共祖先的概念是很好理解的。首先,你需要脑补出一棵树(它可以是二叉树,也可转载 2017-11-03 07:31:52 · 361 阅读 · 0 评论 -
刷版子·总结(待补全......)
最短路最短路: spfa//期望的时间复杂度为o(ke),k为所有顶点的进队次数,k一般<=2 #include<iostream>#include<cstdio>#include<queue>#include<cstring>#define maxn 1000001#define inf 0x7ffffffusing namespace std;//尽量用nxt别用next,有原创 2017-10-21 19:43:10 · 345 阅读 · 0 评论 -
树+最小生成树
**树 ** 树: 不包含回路的连通无向图(从一个点到达另一个点,若想回去,只能原路返回),即任意两个节点间有且只有一条路径的无向图特性: 1.一条树中的任意两个节点有且仅有唯一的一条路径连通 2.一棵树中如果有n个节点,那么它一定恰好有n-1条边 3.在一棵树中加一条边将会构成一个回路部分定义: 根结点(祖先):没有父结点 叶结点:没有子结点 内部结点:既不是根结点,也不是叶结点原创 2017-09-29 09:48:33 · 473 阅读 · 0 评论 -
“家族”“团伙”小总结 (简称"小""家""伙") +再来一波关押罪犯
家族:纯裸并查集,版子题 只需要知道谁与谁有亲戚关系,只合并是亲戚的,保证他们一个祖先即可,其他的不用管,祖先是谁不影响最后“yes or no”的判断。 if x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。 but 若xy不是亲戚,xz不是亲戚,那不能确定yz是不是亲戚 只需要一种关系即可确定答案团伙: 给出一系列关系原创 2017-09-24 20:41:27 · 372 阅读 · 0 评论 -
Codevs 1073 家族
题目描述 Description 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。输入描述 Input Description 第一行:三个整数n,m,p,(n<=5000,m<=5000,p<=50原创 2017-09-24 09:54:49 · 348 阅读 · 0 评论 -
并查集 (不相交集数据结构)
来源于《啊哈!算法》//给出几个人的联系,求有几个团伙 #include<cstdio>using namespace std;int f[1000]={0},n,m,k,sum;//sum:团伙数 //初始化,数组里面存自己数组下标的编号 void init(){ int i; for(int i=1;i<=n;i++) f[i]=i; return ;}原创 2017-09-24 08:34:13 · 596 阅读 · 0 评论 -
2017.9.9 图论 — 最短路(修邻接表bug---10.20)
Dijkstra://不能解决有负边权的图//从起点一层层向下更新//与spfa(靠队列实现)相似,源点是一定的,but 实现方式不同 #include<cstdio>#define Max 0x3fffffffint map[1005][1005];int dis[1005];void dijkstra(int n){ int visit[1001]={0}; int原创 2017-09-09 08:58:53 · 342 阅读 · 0 评论 -
2017.9.9 图论 — 最小生成树
Kruskal: 按照边的权值的顺序从小到大查一遍,若不产生圈(重边等),则把当前边加入生成树中。 O(|E|log|V|)#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int n,m;int fa[10005];struct bian{ int f,t,d;}e[10005];原创 2017-09-09 08:49:39 · 337 阅读 · 0 评论 -
C/C++数组初始化的一些误区
以前我这样初始化一个数组,并自我感觉良好: int a[5] = { 0 }; // 全部初始化为0 这种简单的写法让我非常爽,于是我又想把数组全部初始化为1: int a[5] = { 1 }; // 我想全部初始化为1 直到十分钟前,我都以为这句代码确实能够将5个元素全部初始化为1,但事实跟我想的完全不同!(基础的东西革命的本钱,疏漏不得啊)全部初始化为0的那行代码确转载 2017-10-23 11:40:35 · 352 阅读 · 0 评论 -
memset对于int、long long、float、double 的极值怎么清
出处[辗转山河弋流歌 by 空灰冰魂] 原网址:blog.youkuaiyun.com/vmurder/article/details/46537613int ”较“的原则:加法不爆。 极大值:0x7f 较大值:0x3f 较小值:0xc0 极小值:0x80long long ”较“的原则:加法不爆。 极大值:0x7f 较大值:0x3f 较小值:0xc0 极小值:0x80float ”较转载 2017-10-23 11:33:51 · 1817 阅读 · 0 评论 -
2017.9.6 复习之 toposort
codevs 2833(For example:选课问题:在学习一门课前,必须先学另一门课(基础课)) Ⅰ.普通#include<iostream>#include<cstdio>#include<cstring>#define maxx 105using namespace std;int indegree[maxx],mapp[maxx][maxx],n,m;void find(int原创 2017-09-06 19:51:40 · 295 阅读 · 0 评论 -
KMP-字符串匹配
模式匹配算法,不退化地在线性时间内完成模式匹配目的:在目标串中找到模式串 作用:预处理出模式串的匹配信息,节省不必要的匹配时间比如:有两个串 aacdeeaacc aacc 先匹配第一位,发现匹配,再匹配第二位,第三位,直到第四位不符合,此时,将搜索词aacc后移一位,重复上述操作,可以看出,后面的a【acdee】aacc acdee是没有必要比较的,可以直接匹配后面的aacc,所原创 2017-10-07 19:59:50 · 248 阅读 · 0 评论 -
图的存储结构之邻接表(详解)
原地址:http://www.cnblogs.com/ECJTUACM-873284962/之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。4 51 4 94 3 81 2 52 4 61 3 7第一行两个整数n m。n表示顶点个数(顶点编号为1~n),转载 2017-10-09 19:49:00 · 10911 阅读 · 1 评论 -
C语言函数的递归和调用实例分析
原网址:http://www.jb51.net/article/39918.htm一、基本内容: C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。 要点: 1、C语言函数可以递归调用。 2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。二、递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1、可以把要解决的问题转化为一转载 2017-10-19 20:03:13 · 4720 阅读 · 0 评论 -
图解归并排序
原网址: 作者: dreamcatcher-cx 出处: http://www.cnblogs.com/chengxiao/ 基本思想 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即转载 2017-10-19 20:07:40 · 461 阅读 · 0 评论 -
归并排序求逆序对
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define ll long longusing namespace std;const ll maxn=100000+10;ll a[maxn],b[maxn];ll n,total;void msort(ll l,ll r){ ll原创 2017-10-19 20:27:30 · 538 阅读 · 0 评论 -
C++中break语句和continue语句讲解及使用实例
原址:http://blog.youkuaiyun.com/qilihechuncai/article/details/6134079break语句的作用是:结束当前正在执行的循环(for、while、do…while)或多路分支(switch)程序结构,转而执行这些结构后面的语句。在switch语句中,break用来使流程跳出switch语句,继续执行switch后的语句。在循环语句中,break用来从最近的转载 2017-10-11 14:02:03 · 1376 阅读 · 0 评论 -
常见编译错误提示附解决方法
(1)error C2001: newline in constant 编号:C2001 直译:在常量中出现了换行。 错误分析: 1.①字符串常量、字符常量中是否有换行。 2.②在这句语句中,某个字符串常量的尾部是否漏掉了双引号。 3.③在这语句中,某个字符创常量中是否出现了双引号字符“””,但是没有使用转义符“\””。 4.④在这句语句中,某个字符常量的尾部是否漏掉了单引号。 5转载 2017-10-11 16:59:08 · 5776 阅读 · 0 评论 -
Codevs 3286&&洛谷 P1966 火柴排队
题目描述涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距离,最少需要交换多少次?如果原创 2017-10-29 17:44:19 · 321 阅读 · 0 评论 -
int,long long,double,float等的范围(和精度)
名称 全称类型说明符 缩写类型说明符 位数 范围 整型 int int 16位 -32768至+32767 无符号整型 unsigned int unsigned 16位 0 至 65,535 短整型 short int short 16位 -32768至原创 2017-10-31 07:04:38 · 22656 阅读 · 1 评论 -
“无穷大”值的设置
原网址 :http://blog.youkuaiyun.com/jiange_zh 在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具体问题取一个99999999之类的数(显得很不专业啊!)在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇怪为什么设一个这么奇怪的十六进制数,一查才知道,因为这是32-bit int的最大值。如果这个无穷大只用于一般的比转载 2017-10-23 11:28:41 · 2445 阅读 · 0 评论 -
【总结】图论 · 知识点
最短路:1.spfa:/从原点开始,每次找相邻的点入队,更新它的最短路 注意:要初始化:nxt,head(first),dist,vis至于为什么进队两次:因为有些点左右都有邻点,可能会被邻点更新两次,所以入队次数<=2//(自己的理解)而且每次更新完dist点入队后又以它开始spfa更新邻点,所以一定会出队一次 /适用范围:无负环但可以有负边的有向图, 不带负边的无向图/+SLF优化:使用原创 2017-11-04 10:00:11 · 869 阅读 · 0 评论