自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 github团队合作教程(使用gitkraken)

[预施工] github团队合作教程(使用gitkraken)0. 前期工作创建github组织、创建仓库、forkstep1. fork团队项目为自己的远程仓库 1. clone项目到本地step1. File -> Clone Repo step2. 设置本地路径、待clone的远程仓库的URL2. 创建本地分支devstep1. 在local的master分支上右键,选择create b

2017-11-12 21:34:45 948

原创 2016.12.05 蓝桥杯校赛题解

(搬一下ak小锋的题解)ProblemA 神秘的三位数(代码填空)问题描述 有这样⼀一个3位数,组成它的3个数字阶乘之和正好等于它本身。即:abc =a! +b! +c! 下⾯面的程序⽤用于搜索这样的3位数。请补全缺失的代码。解题思路 模拟,将所有三位数的数字阶乘算出来和原数字⽐比较即可找出,题中阶乘数组已给,因此空 格部分代码为sum+=jc[x%10];Problem B 用一个正整数产⽣生一个

2016-12-31 18:37:30 2496

原创 [数据结构]第十一章-图论

图的概念图:由V和E两个集合组成的二元组 G(V,E)子图:V’是V的子集,E’是E的子集,且E’中的边所关联的顶点均在V’中,则G’ = ( V’ , E’ )也是一个图,称其为G的子图生成子图: V’ = V连通分支:无向图G的极大连通子图称为G的连通分支。任何连通图都只有一个连通分支,而非连通图有多个连通分支。通俗来讲,一个图被分成几个小块,每个小块是联通的,但小块之间不联通,那么每个小块称为

2016-12-27 17:10:39 730

原创 [数据结构]第十章-并查集

**并查集** : 以**不相交集合**为基础的抽象数据类型**·** **支持运算**:1.UFunion(A,B,U):将并查集U中的集合A和B合并,其结果取名为A或B2.UFfind(e):找出包含元素e的集合,并返回该集合的名字**·** **实现思想**:每个集合用一棵树表示,树的结点用于存储集合中的元素名和一个指向其父节点的指针,树根结点的元素代表该树所表示的集合。**·** **用

2016-12-27 17:05:04 391

原创 [数据结构]第九章-优先队列

优先队列:以集合为基础的抽象数据类型· 支持运算: 1.Min(H):返回优先队列H中具有最小优先级的元素 2.Insert(x,H):将元素x插入优先队列 3.DeleteMin(H):删除并返回优先队列中具有最小优先级的元素· 与字典的区别:字典插入运算仅当要插入的x与当前所有元素线性序值都不同时才插入。而优先队列中不同的元素可以有相同的优先级。· 优先队列的实现如果用字典实现有限队列:若

2016-12-26 17:09:35 860

原创 [数据结构]第八章-字典

当集合中的元素有一个线性序,即全集合是一个有序集时,涉及到与这个线性序有关的集合运算的时候,用符号表表示时会很难实现或效率不高,因此引入字典这一抽象数据类型,字典中元素有一个线性序,且支持涉及线性序的一些集合运算。字典:以有序集为基础的抽象数据类型。·支持运算:1.Member(x,S):成员运算 2.Insert(x,S):插入运算 3.Delete(x,S):删除运算 4.Predeces

2016-12-23 20:36:27 707

原创 [数据结构]第七章-集合与符号表

集合 · 用位向量实现ADT集合并进行集合的并、交等运算: 用一个n位的向量v来存储集合A的特征函数值(为1为属于集合,为0不属于集合)可以唯一地表示集合A。优点是判断元素是否属于集合、元素的插入和删除都只要用O(1)的时间。缺点是当n很大时占空间很大,有一个办法是一个数组位置存放一个大数而非只放一位0或1,大数的二进制串就是A中一段元素的特征函数值。符号表 ·符号表是以集合为基础,支持成员运

2016-12-21 16:37:29 1189

原创 [数据结构]第六章-树

树的基本概念 节点的度:节点的儿子数 树的度:Max{节点的度} 节点的高度:节点到各叶节点的最大路径长度 树的高度:根节点的高度 节点的深度(层数):根节点到该节点的路径长度树的遍历 ·前序遍历:根左右(x,Tl,Tr) ·中序遍历:左根右(Tl,x,Tr) ·后序遍历:左右根(Tl,Tr,x)树的表示法1.父节点数组表示法 (寻找父节点O(1),寻找儿子

2016-12-02 10:12:35 1141

原创 八种常见排序算法

初学数据结构,记录下接触到的一些常见排序算法的个人理解。以下根据算法是否基于比较分为两类,其中包括有基于比较的排序: 冒泡排序 插入排序 选择排序 快速排序 合并排序 非基于比较的排序: 计数排序 桶排序 基数排序 以下论述的时候为描述方便默认待排序元素是整型且要求从小到大排序,数组a从0存到n-1。1.1冒泡排序冒泡排序的基本思想是,将待排序

2016-10-15 17:03:16 766

原创 [数据结构]第五章-排序与选择

排序   就地/非就地   稳定/不稳定(如 5’, 3 , 5 排序后变为 3 , 5 , 5’为不稳定)·O(n^2) 的排序:·简单排序算法 (但 直接插入排序最好情况(有序时)为O(n))·O(nlogn)的排序:·快速排序 (Partition操作复杂度O(n) -> 借鉴此操作的算法,如O(n)时间将负数放左边正数放右边等) (若每次划分都恰好得到两个大小相等的区域则复杂

2016-10-10 10:32:30 430

原创 [数据结构]第四章-队列

·队列是一种特殊的表,只在表首删除,只在表尾插入。又称先进先出表(FIFO表)。(表首->队首;表尾->队尾)·支持的运算:1.QueueEmpty(Q):队列Q是否为空 2.QueueFull(Q):队列Q是否已满 3.QueueFirst(Q):返回队首元素 4.QueueLast(Q):返回队尾元素 5.EnterQueue(x,Q):在队尾插入元素x 6.DeleteQueue(Q

2016-10-08 17:18:17 437

原创 [数据结构]第三章-栈

·栈是一种特殊的表,只在表首进行插入和删除操作(表首->栈顶;表尾->栈底)(后进先出表/LIFO表)·支持的运算:1.StackEmpty(S):栈S是否为空(top = -1) 2.StackFull(S): 栈S是否已满 3.StackTop(S):返回栈S的栈顶元素 4.Push(x,S):元素x入栈 5.Pop(S):删除并返回栈顶元素·应用实例:0.后缀算术表达式求值

2016-09-28 12:05:37 560

原创 [数据结构]第二章-表

**表**是由n个同一类型的元素a1,a2,...,an组成的有限序列。(元素不可对调,顺序表示了逻辑关系)**·支持的运算:**1.ListEmpty(L):表L是否为空2.ListLength(L):表L的长度3.ListLocate(x,L):元素x在表L中的位置(若x在表中重复出现多次,则返回最前面的x的位置)4.ListRetrieve(k,L):返回表L的位置k处的元素(若表中没有位置k时,

2016-09-28 11:38:13 376

原创 [数据结构]第一章-思维题

作业题:1.3 相亲大会(最大连续子串和问题)#include<cstdio> #include<iostream> #include<algorithm> using namespace std; int arr[100010]; int main() { int n; cin >> n; int i; for(i = 0; i

2016-09-28 11:01:50 301

原创 大二辣

暑假在acm集训不得不承认确实是受挫以及超大的强度磨掉了不少打题的乐趣..orz真的觉得这不是我想要的.. 导致刚开学看到题都觉得啊好颓..现在还在思考要怎么再让自己重新希望起来。 也许真的只有不带功利不去紧张成绩的打题才会快乐吧.. orz 还是很难逃怪圈。 不懂自己能做什么应该做什么.. 大二加油。

2016-09-28 10:21:08 237

原创 16.7.29

//今日代码 2016-07-29 trainingA. Dress’em in Vests!(n个士兵m件背心,每个士兵有给定适配值,满足 适配值-x 到 适配值+y 区间的背心可供该士兵穿。因为是已经排好序的所以直接开len1,len2两个指针遍历士兵和背心两个数组,若刚好落在区间内ans++指针后移,若小于区间,背心指针后移,大于区间,士兵指针后移。)#include<iostream>

2016-07-29 17:04:25 349

原创 16.7.28

//今日代码 FZU 2016 summer trainA. Tram(公交车停靠在n个站点,每次下去a人上来b人,问全程中在车上人数最多的时候为多少。for一遍每次更新max即可。)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cmath>#include<cstring>

2016-07-28 17:03:41 330

原创 16.7.27

//今日代码 fzu 7月27日专题练习A - 最少拦截系统(拦截系统发射拦截弹的规则是每一套系统发射出的导弹高度都会低于发射的前一个导弹。问地方按序飞来的这些导弹需要几套系统才能全部拦截。比如5 4 2 3 1这样至少需要两套系统,无论最后一个1被哪个拦下。直接想过去感觉有点复杂,不妨可以想成对于一套从低到高的导弹,一定是用不同的系统拦下的,于是变成了一个求最长不降子序列的问题。)#includ

2016-07-28 16:46:33 237

原创 16.7.26

//今日代码 2016-07-26 trainingA. Queue on Bus Stop(有n群人排队坐车,车的最多载客数为m,每群人要一起上车,坐不下的话一起等下一趟车。做法是把上车人数加一下,加到不能加则清空,ans++)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cm

2016-07-26 16:20:43 243

原创 16.7.25

数论基础快速乘(转载)快速乘法的思想和快速幂的思想一样,快速幂是求一个数的高次幂,快速乘法是求两个数相乘,什么时候才用得到快速乘法呢,当两个数相称可能超过long long 范围的时候用,因为在加法运算的时候不会超,而且可以直接取模,这样就会保证数据超不了了。LL fast_multi(LL m, LL n, LL mod)//快速乘法{ LL ans = 0;//注意初始化是0,不是1

2016-07-25 10:39:12 295

原创 16.7.23

邻接表(转载)(1.无向图)邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服~但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。 因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。邻接表的处理方法是这样: 图中顶点用一个一维数组存储,当然,顶点也可以用

2016-07-23 16:48:06 224

原创 16.7.22

//今日代码 2016-07-22 trainingA. I Wanna Be the Guy(两个人玩游戏各能通过一部分,问1~n是否都能通过。对1~n有出现过的数字标记下,若其中有未被标记的则游戏失败。)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cmath>#inclu

2016-07-22 15:58:11 259

原创 16.7.21

//今日代码 2016-07-21 trainingB. Falling Anvils(保证方程有实根则有p - 4q >= 0,答案即给定坐标范围内的几何概率)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cmath>#include<cstring>#include<ma

2016-07-21 16:57:04 262

原创 16.7.20

//今日代码 2016-07-20 personal trainingA. I_love_\%username\%(求惊讶值,对每个数每次和max和min对比顺带更新下最大最小值)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cmath>#include<cstring>#i

2016-07-20 16:44:16 248

原创 16.7.19

树状数组通常用于维护区间和,也可以变形完成其他作用。查询和修改的时间复杂度均为O(logN)。相对于线段树来说,树状数组能完成的功能线段树均能完成,反之不成立,但是树状数组的代码短,方便调试。题目:现给定N <= 100000个数,进行M <= 100000次操作,操作分两种:1.询问区间[l,r]的和。 2.修改位置i的值为V,即ai=V。显然不可能每次都循环计算区间l到r的和。 在二进制下

2016-07-19 14:57:27 349

原创 16.7.18

[STL]set(转载)set能根据待定的排序准则自动将元素排序。不允许元素重复。 构造set集合主要目的是为了快速检索,不可直接去修改键值。 set的默认比较方式是less。常用操作:1.元素插入:insert() 2.中序遍历:类似vector遍历(用迭代器) 3.反向遍历:利用反向迭代器reverse_iterator set < int > s; set< int >:

2016-07-18 10:40:58 275

原创 16.7.16

//今日代码 2016-07-16 personal trainingA. Gravity Flip(问改变重力方向之后的按列个数,其实只是简单的排序而已)#include<iostream> #include<cstdio>#include<string>#include<algorithm>#include<cmath>using namespace std;int arr[1001

2016-07-16 17:00:16 272

原创 16.7.15

gcd递归求最大公约数int gcd(int a,int b){ if(a>=b) return a%b==0?b:gcd(b,a%b); else return gcd(b,a);}RMQ区间最值查询(ST算法)(转载)RMQ(Range Minimum/Maximum Query),即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若

2016-07-15 10:37:09 272

原创 16.7.14

优先队列 priority_queue<int> qi;//普通的优先级队列,按从大到小排序 for(i = 0; i < len; i++) qi.push(a[i]); for(i = 0; i < len; i++) { cout<<qi.top()<<" "; qi.pop(); } cout<<e

2016-07-14 12:45:57 295

原创 16.7.13

动态规划(转载)动态规划算法通常基于一个递推公式及一个或多个初始状态。当前子问题的解将由上一次子问题的解推出。使用动态规划来解题只需要多项式时间复杂度,因此它比回溯法、暴力法等要快许多。 首先,我们要找到某个状态的最优解,然后在它的帮助下,找到下一个状态的最优解。状态 - 要求解的问题。 状态转移方程 - 描述状态之间是如何转移的(如何由子问题得到)。eg:一个数的序列bi,当b1 < b2 <

2016-07-13 09:45:03 742

原创 16.7.12

(转载)算法题1 数组中唯一出现1次的数|唯一出现2次的数if(num&0x01) —> ox01就是十六进制的1, //判断num 与 0x01的按位与运算结果, //其实就是 求num二进制的最后一位, //等价于 求num除以2的余数 //等价于 判断num是否为奇数//c语言的按位运算符(转载自) & 按位与 | 按位或 ^ 按位异或1. 按位与运算

2016-07-12 13:55:34 288

原创 [STL]MAP

1.构造map<string , int >myMap;2.添加数据Mymap["April"]=4;3.查找元素 map<string,int>::iterator it;; it=Mymap.find("April"); if(it==myMap.end()) cout<<"do not find"<<endl; else cout<<it->

2016-05-22 17:28:20 244

原创 foj部分题解

1001 Duplicate Pair#include<cstdio>#include<iostream>#include<string>#include<string.h>using namespace std;bool arr[1000010];int main(){ freopen("xx.in","r",stdin); freopen("xx.out","w",st

2016-05-19 10:16:32 443

原创 字符串处理(库函数)

字符串处理

2016-05-11 20:59:12 491

原创 第六章-数据结构入门

6.1 forest #include<iostream> #include<stdio.h> #include<string> #include<algorithm> using namespace std; struct person { int number; int streng;//体力 int seat;//站位 }pe

2016-04-24 07:09:20 2231

原创 广搜(BFS)学习笔记

(Board First Search) (图为二叉树的层序遍历) BFS得到顺序:ABCDEFG与DFS的区别:深度优先(优先往深处走),用的数据结构是栈, 主要是递归实现;广度优先(优先走最近的),用的数据结构是队列,主要是迭代实现;bfs通过检测边发现点,被发现点(但未探索)入队。(被探索是指是否检测过与该点相关联的临近顶点)一个顶点被完全探索当且仅当他的所有边被检测。一个顶点探

2016-04-23 00:01:16 1689

原创 第五章-算法入门

5.1 equation #include<iostream> #include<stdio.h> #include<string> using namespace std; double calcul(double x) { return 8*x*x*x*x + 7*x*x*x + 2*x*x +3*x + 6; } int main() { d

2016-04-22 15:08:57 237

原创 第四章-结构体

4.1 scores #include<iostream> #include<stdio.h> #include<string> using namespace std; struct student { int classnum; int number; int score; }stu[2010]; int main() {

2016-04-16 22:55:09 241

原创 第三章-指针

3.1 OCD #include<iostream> #include<stdio.h> #include<string> using namespace std; int arr[5050]; char cha[5050][150]; int n; int re() { int min = 15000; int minid = -1;

2016-04-07 21:05:05 265

原创 第二章-函数

2.1 prime #include<iostream> #include<stdio.h> #include<string> using namespace std; bool check(int n) //判断是否为质数 { if(n == 1) return false; if(n == 2) return

2016-04-07 20:53:48 2215

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除