算法与数据结构/ACM
文章平均质量分 56
Bill_Utada
这个作者很懒,什么都没留下…
展开
-
POJ2386 Lake Counting 图DFS
找出有多少个”水洼”(W的联通块)Sample Input10 12 W……..WW. .WWW…..WWW ….WW…WW. ………WW. ………W.. ..W……W.. .W.W…..WW. W.W.W…..W. .W.W……W. ..W…….W.Sample Output3解题思路DFS代码#include <cstdio>#include <cstring>#incl原创 2015-03-01 14:20:36 · 856 阅读 · 0 评论 -
【数据结构】第6章 树(下)
数据结构第6章 树(下)§6.4 树和森林6.4.1 树的储存结构①父亲表示法(利用每个(除根)结点只有唯一的父亲的性质) ②孩子表示法(用广义表实现) ③孩子兄弟表示法(二叉链表指向第一个孩子结点和下一个兄弟结点)6.4.2森林与二叉树的转换二叉树和树都可以用二叉链作为储存结构(分别是孩子表示法和孩子兄弟表示法),给定一棵树,可以找到唯一的一棵二叉树与之对应。两者的物理结构是相同的,只是解释不原创 2015-02-09 01:13:31 · 1296 阅读 · 0 评论 -
POJ2362 Square 搜索
题目描述给n个木棒问能否拼成正方形(不许弯折)Sample Input34 1 1 1 15 10 20 30 40 508 1 7 2 6 4 4 3 5Sample Outputyesnoyes解题思路1.总长度必须是4的倍数 2.最长边不能大于边长 3.满足1 2后找到了3条边就可以了将所有的木棒递减排列从头开原创 2015-02-04 17:18:08 · 607 阅读 · 0 评论 -
【数据结构】第二章 线性表
§2.1线性表的定义§2.2线性表的顺序表示和实现优点:随机存储§2.3线性表的链式表示和实现 链式表示优点:灵活 缺点:不随机存储 2.3.1线性链表:储存单元可以是连续的 也可以是不连续的。 对于数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后续的信息 (即直接后继的储存位置)每个结点包括数据域和指针域,线性链表每个原创 2015-01-20 01:07:50 · 741 阅读 · 0 评论 -
NOJ1060 接苹果 二维DP
题目描述很少有人知道奶牛爱吃苹果。农夫约翰的农场上有两棵苹果树(编号为1和2), 每一棵树上都长满了苹果。奶牛贝茜无法摘下树上的苹果,所以她只能等待苹果 从树上落下。但是,由于苹果掉到地上会摔烂,贝茜必须在半空中接住苹果(没有人爱吃摔烂的苹果)。贝茜吃东西很快,她接到苹果后仅用几秒钟就能吃完。每一分钟,两棵苹果树其中的一棵会掉落一个苹果。贝茜已经过了足够的训练, 只要站在树下就一定能接住这棵树原创 2015-01-15 00:13:52 · 1179 阅读 · 0 评论 -
POJ2479 Maximum sum 线性dp
题目描述给n个数,要求从这n个数中找出两个区间(不能有重叠),使这两个区间的区间和之和最大。输出最大值输入样例1101 -1 2 2 3 -3 4 -4 5 -5输出样例13 (前7个数一组,倒数第二个5一组)解题思路这题O(n^2)会T,只能考虑O(n)的算法。核心还是最大区间和的dp(dp[i]表示以第i个数结尾的区间最大和 状原创 2015-01-03 17:34:23 · 566 阅读 · 0 评论 -
POJ1111 Image Perimeters
题目描述有一个矩形的由 X 和 . 组成的图像,已知它的长和宽。现在给你一个坐标(保证坐标上是X),求其整个连块的周长。(连块就是连着的X,斜着有相同顶点也算)。(在此吐槽一下题目惨无人道的英语…………中国人何苦为难中国人呢…………)输入长,宽,坐标X,坐标Y,接着是图。多组数据,4个0结束。样例输入7 7 4 4XXXXXXXXX...XXX..X..XX原创 2014-11-27 14:16:47 · 703 阅读 · 3 评论 -
POJ2456 Aggressive cows 二分
DescriptionFarmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,…,xN (0 <= xi <= 1,000,000,000).His C (2 <= C <= N) cow原创 2015-03-12 17:25:10 · 831 阅读 · 0 评论 -
POJ3259 Wormholes Floyd判负圈
DescriptionWhile exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path that delivers you to its destination at a t原创 2015-03-11 08:36:03 · 1137 阅读 · 0 评论 -
二分图判断 (图的搜索)
二分图,又叫做双分图 二部图 偶图,指顶点可以分成两个不相交的集U和V,使得在同一个集内的顶点不相邻(没有共同边)的图。无向图G为二分图的充要条件是,G至少有两个顶点,且其所有回路的长度均为偶数。给定一个具有N个顶点的图,判断其是不是二分图(如着色问题,最小着色数为2的图就是二分图),可以用DFS处理。选择任意一个顶点出发,依次确定相邻顶点的颜色,就可以判断是否可以被2种颜色染色了。代码如下#inc原创 2015-03-04 13:14:23 · 1647 阅读 · 2 评论 -
HDU2795 Billboard 线段树 单点更新
Problem DescriptionAt the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements are原创 2015-02-24 10:50:13 · 1412 阅读 · 0 评论 -
HDU1867 A + B for you again KMP应用
Problem DescriptionGenerally speaking, there are a lot of problems about strings processing. Now you encounter another such problem. If you get two strings, such as “asdf” and “sdfg”, the result of the原创 2015-02-23 15:45:54 · 1154 阅读 · 0 评论 -
RMQ问题的Sparse-Table算法
范围最小值问题(Range Minimum Query) 给出一个n个元素的数组,设计数据结构使得支持查询操作Query(L,R) 计算[L,R]中最小值 Tarjan的Sparse-Table算法预处理时间为O(nlogn) 查询只需要O(1)而且常数很小。假设dp[i][j]表示从第i个数开始的2^j个数的最小值。 有下列公式:dp[i][j] = min(dp[i,j-1],dp[i+2原创 2015-02-22 20:55:14 · 1124 阅读 · 0 评论 -
【数据结构】第5章 数组和广义表
§5.1 数组的定义多维数组的理解typedef ElemType Array2[m][n];//等价于typedef ElemType Array1[n];typedef Array1 Array2[m];即一个n维数组类型可以定义为其数据元素为(n-1)维数组类型的一维数组类型。数组一旦被定义,它的维度和维界就不再改变,因此除了结构的初始化和销毁之外,数组只有存取元素和修改原创 2015-02-06 16:06:30 · 1130 阅读 · 0 评论 -
【数据结构】第6章 树(上)
第一次用markdown…..好高端的赶脚数据结构第6章 树(上)§6.1 树的定义和基本术语树是n(n>=0)个结点的有限集在非空树中有且仅有一个特定的根(root) 树的结构定义是一个递归的定义,即在树的定义中又用到了树的概念,有嵌套集合表示法,广义表表示法和凹入表示法等。术语: 结点,结点的度(子树个数),叶(度为0),树的度(最大结点度),孩子,父亲,兄弟,祖先(上溯所有结点),子孙(下溯原创 2015-02-07 16:07:53 · 768 阅读 · 0 评论 -
NOJ1017 乘积最大 动态规划DP
题目描述给N个数字和正整数K,问用K个乘号和N个数字组成表达式乘积最大是多少样例输入4 21231样例输出62解题思路经人提醒发现是道DP。。。dp[i][j]表示前i个数字用j个乘号得到的最大值状态转移方程为 dp[i][j] = max(dp[p][j-1]*ans(p,i-1)) (ans(a,b)为数组s[a]到s[b]组成的数)(1原创 2015-02-05 23:17:22 · 1078 阅读 · 0 评论 -
POJ3461 Oulipo KMP算法应用
题目描述给定主串和模式串,问模式串在主串中出现的次数Sample Input3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output130解题思路:KMP算法是找到一个匹配就跳出,这题是要计数,所以我们把KMP算法稍微改一下即可,在找到一个匹配(即j=模式串长度)时计数器++,再原创 2015-01-30 16:53:57 · 722 阅读 · 0 评论 -
【数据结构】第四章 串 (含KMP算法)
§4.1 串类型的定义串中的任意个连续的字符组成的子序列称为该串的子串,包含子串的串相应地称为主串,通常称字符在序列中的序号为该字符的位置。串的最小操作子集:串赋值 串比较 求串长 串连接 求子串§4.2 串的表示和实现串有3种机内的表示方法4.2.1 定长顺序储存表示4.2.2 堆分配储存表示:仍以一组地址连续的储存单元存放串值字符序列,但它们的存储空间实在程原创 2015-01-28 18:43:01 · 1060 阅读 · 0 评论 -
NOJ1601 数次统计 哈希简单应用
题目描述某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*109)。已知不相同的数不超过10000个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。题目输入多组输入数据每组数据包含n+1行:第1行是整数n,表示自然数的个数。第2~n+1行每行一个自然数。题目输出每组数据输出包含m行(m原创 2015-01-17 02:02:51 · 996 阅读 · 0 评论 -
ACM 图论入门
①图论基础图由点和边组成记顶点集合为V 边集合为E的图为G=(V,E)图可分为有向图和无向图。如表示朋友关系的图为无向图,表示点之间大小关系的图为有向图。边也可以带有权值,带有权值称为有权图,不带有权值称为 无权图。一.关于无向图任意两点之间都有路径的图叫做连通图,顶点连接的边数称为这个点的度。没有环的连通图就是树,没有环的非连通图就是森林。一棵树的边数=顶原创 2015-01-13 20:59:33 · 1878 阅读 · 9 评论 -
(整理)ACM荣耀之路 ACM学习路线
ACM荣耀之路!!第一阶段:练经典常用算法,下面的每个算法打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想.1.最短路(Floyd、Dijstra,BellmanFord)2.最小生成树(先写个prim,kruscal要用并查集,不好写)3.大数(高精度)加减乘除4.二分查找. (代码可在五行以内)5.叉乘、判线段相交、然后写个凸包.6.BFS转载 2015-01-10 01:48:27 · 3511 阅读 · 0 评论 -
NOJ1010 数的计算
题目描述要求找出具有下列性质数的个数(包含输入的自然数n):先输入一个自然数n(n1. 不作任何处理;2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半;3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.输入样例6输出样例6 (分别是6,16,26,126,36,136)解题思路:这题明显是一个递推题。建立一个ans数组原创 2015-01-06 22:50:02 · 780 阅读 · 0 评论 -
Vector——不定长数组
vector就是不定长数组。一些常用操作被封装在vector里。使用需要包含头文件 #include vector是一个模板类,所以需要用vector a或者vector b这种方式声明。vector的常用操作int len = a.size();//返回vector长度a.resize(100);//把a长度变为100a.push_back(10)//把10添加到尾部a.p原创 2014-11-30 11:03:50 · 713 阅读 · 0 评论 -
FZU2152 文件系统 小模拟
Description每个Linux文件具有四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。利用ls -l命令可以看到某个文件或目录的权限,它以显示数据的第一个字段为准。第一个字段由10个字符组成,如下:-rwxr-xr-x第1位表示文件类型,-表示文件,d表示目录2-4位表示文件所有者的权限,u权限5-7位表示文件所属组的成员的权限,g权限8-10位表示所有者和所属组的成员之外的原创 2015-03-21 03:21:30 · 997 阅读 · 0 评论 -
ZOJ3785What day is that day? 规律
It’s Saturday today, what day is it after 11 + 22 + 33 + … + NN days?InputThere are multiple test cases. The first line of input contains an integer T indicating the number of test cases. For each test原创 2015-03-21 03:17:39 · 1015 阅读 · 0 评论 -
CodeForces 388A Fox and Box Accumulation 贪心
Fox Ciel has n boxes in her room. They have the same size and weight, but they might have different strength. The i-th box can hold at most xi boxes on its top (we’ll call xi the strength of the box).S原创 2015-03-13 23:01:00 · 909 阅读 · 0 评论 -
HDU5182 PM2.5
Problem DescriptionNowadays we use content of PM2.5 to discribe the quality of air. The lower content of PM2.5 one city have, the better quality of air it have. So we sort the cities according to the c原创 2015-03-07 22:07:04 · 1542 阅读 · 0 评论 -
ACM荣耀之路
ACM荣耀之路第一阶段练经典常用算法,下面的每个算法打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想.1.最短路(Floyd-Warshall Dijstra Bellman-Ford) 2.最小生成树(先写个prim,kruscal要用并查集) 3.二分查找(代码可在五行以内) 4.叉乘 判线段相交 然后写个凸包. 5.BFS DFS 同时熟练hash表(要熟要灵转载 2015-03-07 16:01:13 · 950 阅读 · 0 评论 -
HDU1754 I Hate It 线段树单点更新
Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0#include <cs原创 2015-02-22 20:38:54 · 740 阅读 · 0 评论 -
HDOJ1358 Period 【KMP next数组应用】
题目描述n个字符的字符串,从第二个字符开始遍历。如果从第一个字符到当前字符是有循环的,那么输出当前的位置和循环次数。两组数据之间输出一个空格。Sample Input3aaa12aabaabaabaab0Sample OutputTest case #12 23 3Test case #22 26 29 312 4原创 2015-02-11 11:33:44 · 605 阅读 · 0 评论 -
NOJ1859 越野赛 三维DP
题目描述大戈壁越野赛前后分为很多赛段,一个车队也有多辆车。一个车队在一个赛段只能使用一辆车,但是到达赛段中转站(分隔各赛段的点)时可以任意更换车辆,当然也可以不换。在不同赛段,不同的车有着不同的表现,如果规则不限定换车次数,显然可以在每一个赛段都用最好用的车,但很不幸,换车次数有限定,那么,安排一个合理的换车策略十分重要。我们认为,车队可以选择任意一种车开始赛程,不算换车次数。现在依次给出原创 2015-01-14 16:48:17 · 705 阅读 · 0 评论 -
POJ2524 Ubiquitous Religions 暨并查集入门
题意多组样例,每组输入样例n,m表示有n个人,有m对数据,接着是m对人,每一对人表示他们在一个阵营里,问最后这n个人中一共有几个阵营(没有出现的人算是一个单独阵营)m和n都为0时表示结束输入样例10 9 //test11 21 31 41 51 61 71 81 91 1010 4 //test 22 34 5原创 2014-12-13 21:26:38 · 804 阅读 · 0 评论 -
HDU1052 Tian Ji -- The Horse Racing
题目描述田忌赛马问题,田忌和王都有n匹马。n场比赛(每匹马都只能上场一次)。每场比赛输的要给赢的人200块钱,问最后田忌最多能获得多少钱。输入n,接着是n匹田忌马速度,接着是n匹王的马速度,遇0结束。样例输入392 83 7195 87 74220 2020 20220 1922 180输出20000思路:原创 2014-11-27 17:52:02 · 653 阅读 · 0 评论 -
HDU2037 今年暑假不AC
题目描述给定n个开区间,问最多能选出多少个不相交的区间(贪心母题)样例输入121 33 40 73 815 1915 2010 158 186 125 104 142 90输出5思路:典型的贪心问题。构造一个point类型的数组装n个区间。既然要选择最多个数目,不妨对区间的右端点排序。那么我们不难想原创 2014-11-27 15:07:18 · 656 阅读 · 0 评论 -
POJ1064 Cable master 二分
DescriptionInhabitants of the Wonderland have decided to hold a regional programming contest. The Judging Committee has volunteered and has promised to organize the most honest contest ever. It was dec原创 2015-03-12 16:44:55 · 933 阅读 · 0 评论 -
HDU2544 最短路 Bellman-Ford实现
Problem Description在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?Input输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号原创 2015-03-04 23:41:54 · 833 阅读 · 0 评论 -
单源最短路 Bellman-Ford算法
单源最短路问题是固定一个起点s,求它到所有点的最短路的问题。Bellman-Ford算法可以用于边权为负的情况而不像Dijkstra只适用于边权为正的情况(有负圈返回错误),但是其效率比较低。记从起点s出发到顶点i的最短距离为的d[i] 那么 d[i] = min(d[j]+(j->i)|其中j->i属于E)如果给定的图是DAG 那么可以用拓扑序给顶点编号,并利用这一条递推公式计算出d(DP)。原创 2015-03-04 21:38:58 · 900 阅读 · 0 评论 -
POJ1988 Cube Stacking 带权并查集
题目描述初始有很多立方体,有两种操作:M X Y 将X所在的堆放到Y所在的堆上面C X 查询X下方有几个块Sample Input6M 1 6C 1M 2 4M 2 6C 3C 4Sample Output102解题思路这是一道经典的带权并查集问题,用cnt和dis数组原创 2015-01-31 15:39:00 · 867 阅读 · 0 评论 -
LA3027 Corporative Network 带权并查集入门
题目描述:有N个结点一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点一次E u 操作表示询问u到根结点的距离O操作表示结束解题思路:因为题目只查询结点到根结点的距离,所以每棵树除了根结点不能换之外,其他结点的位置可以任意改变,这恰好符合并查集的特点,但是需要记录附加信息。如果记录每个结点到根的距离,那么每次原创 2015-01-29 17:42:19 · 626 阅读 · 0 评论 -
NOJ1858 对于最长上升子序列O(nlogn)算法的深入理解
最长上升子序列 LIS 是一类非常经典的DP问题。在数组s中找出最长的上升子序列的长度。很容易想出一个O(n^2)的算法,用dp[i]表示以i结尾的上升子序列的最大长度,由状态转移方程dp[i] = max(dp[j]+1) (jO(nlogn)用到了二分的方法,这要求dp数组是单调的。定义dp[i] 表示长度为i的上升子序列的末尾最小值(对dp数组的解释:1.dp数组是原创 2015-01-12 22:09:55 · 704 阅读 · 0 评论