- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 并查集
并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合 $S = \left\{ {{S_1},{S_2}, \cdots ,{S_k}} \rig
2015-08-31 21:35:10 550
原创 简单的快速幂取模
HDU1097本题为快速幂取模运算,直接套用模板即可//题目描述:给你数a,b,让你输出a^b的最后一位#include #include using namespace std;#define LL long long LL pow_mod(LL a, LL b){ LL ans = 1; a = a % 10; while (b > 0) { i
2015-08-26 16:21:02 551
转载 线段树
线段树转载请注明出处,谢谢!http://blog.csdn.net/metalseed/article/details/8039326 持续更新中···一:线段树基本概念1:概述线段树,类似区间树,是一个完全二叉树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操
2015-08-26 10:37:27 634
原创 哈希表
EqsTime Limit:5000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionConsider equations having the following form: a1x1 3+ a2x2 3+ a3x3 3+ a4x4
2015-08-24 09:33:03 592
原创 数据结构_散列表
散列表的查找技术 我们学过的查找技术都是通过一系列的给定值与关键码的比较,查找效率依赖于查找过程中进行的给定值与关键码的比较次数。而散列表的查找不用比较,通过关键码直接确定存储位置。在存储位置和关键码之间建立一个确定的对应关系。 散列表的基本思想:在记录的存储地址和他的关键码之间建立一个确定的对应关系。这样,不经过比较,一次读取就能得到所查元素的查找方法。
2015-08-23 23:18:16 1323
原创 数据结构_链表_单向链表
链表(Linked List)是由一连串的结构(称为结点)组成的,其中每个结点都包含指向链中下一个结点的指针。链表中的最后一个结点包含一个空指针。链表与数组不同,数组的线性序是由数组的下标决定的,而链表中的顺序是由各结点的指针域所决定的。链表可以灵活地表示动态集合。 采用链表表示线性表,无论向表中插入或删除元素,都不需要移动数据。与顺序表示法不同,链表的结点不再是连续且等距离地存放
2015-08-23 16:14:07 531
原创 数据结构_队列
队列是一种有序的线性表,队列的两端分别称为队首和队尾。队列只允许在队尾进行插入操作,在队首进行删除操作。插入元素称为入队,删除元素称为出队。 队列常用链表或数组来实现。#include #include using namespace std;#define max 1000//队列定义struct element{ int key;};
2015-08-23 15:13:34 680
原创 动态规划_数字三角形
问题描述:在下面的数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字之和最大,路径上的每一步都只能往左下或右下走。只需要求出这个最大和即可,不必给出具体路径。输入数据的要求:三角形的行数大于1小于等于100,数字为0——99.输入格式:5 //三角形的行数,下面是三角形73 88 1 02 7 4 44 5 2 6 5#include using
2015-08-19 10:00:18 1809 3
原创 动态规划_拦截导弹
被拦截的导弹应该按照飞来的高度组成一个非递增序列。求最长非递增序列的长度。#include using namespace std;int main(){ int h[2000], d[2000], c; //h表示 高度值, d表示最优值, c是能拦截的最多导弹数 int count = 0; //统计飞来的导弹数 while (cin >> h[count
2015-08-19 09:28:13 873
原创 栈
栈是一种线性表,其插入和删除操作都只能在表的一端进行,这一端称为栈顶,而另一端称为栈底! 直接上代码!#include #include using namespace std;#define max 10000struct element{ //定义栈 int key;};element stack[max];int top = -1;bo
2015-08-15 15:29:46 598
转载 写给软件学院的本科生
本人今年北软研究生毕业,本科是35所示范性软院之一,在毕业之际,回顾软院的7年学习生活,很感慨,写点东西给软件学院的师弟师妹们。今年软件工程被提升至一级学科,没有挂在计算机科学之下了,而且软件学院开始招收工程博士生了,真是可喜可贺。我读软件学院本科的时候,软院才刚成立不久,35所示范性软院之一,那个时候想找个师兄问一问大学该怎么度过,软院第一届的师兄们都还没毕业呢,也很懵懂,咋给我
2015-08-13 09:38:31 516
原创 a*b(mod m)的实现过程
/*a*b (mod m) 的实现过程*//*当a,b很大的时候mod m就会产生溢出, 故运用乘法原理转换为加法求解*/LL multi(LL a, LL b, LL m){ LL exp = a %m, res = 0; while (b) { if (b & 1) //b的最低位是否为1 { res = res + exp; if (res >= m)
2015-08-03 08:19:55 2032
原创 素数筛法
/*给定一个正整数N,求出[2,N]中的所有素数*/#define maxn 1000000boool vis[maxn];void getprime(int n, int &tot, int ans[]) //筛法将合数筛掉,留下的则是素数 ,用于快速判断一个区间内的所有素数 { fot = 0; //记录素数的个数 for (int i = 2; i<= n; i++)
2015-08-03 08:07:39 561
原创 数论——同余
HDU 1212 题目链接 点击打开链接description:给定一个大数a, 求模b的结果。题目分析:由于a很大,因此需要引入字符串进行处理!算法分析: 同余定理1. ( m + n ) % c = (m % c + n% c) % c2. (m* n ) % c =( (m % c ) * ( n% c)) % c3. (m ^ n) % c = ((m
2015-08-01 09:10:08 910
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人