- 博客(22)
- 收藏
- 关注
原创 Python学习笔记
基本数据类型和基础语法 1.数字: int 123456899899 float 3.2 1.5E6 complex 1+2j 2. str字符串"hello" 3. list列表[1,2,'ok',4.3] 4. tuple元组(1,2,3) 5. dict字典{'a':20,'b':30,49:50} 一、数字 1. 整数 可以任意长,有10进制、2进制...
2019-04-14 09:12:41
559
原创 数据结构与算法(一)栈与队列
1.滑动窗口 描述 给定一个长度为n(n<=10^6)的数组。有一个大小为k的滑动窗口从数组的最左端移动到最右端。你可以看到窗口中的k个数字。窗口每次向右滑动一个数字的距离。 下面是一个例子: 数组是 [1 3 -1 -3 5 3 6 7], k = 3。 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 7 -1 3 ...
2018-11-20 02:59:02
796
原创 数据结构与算法(二)字符串
1.合格的字符串 描述 老师给小学生门布置了一些作业,让它们按照一个模版写一些字符串交上来, 同学们把作业交上来了,问题来了,这么多的作业老师批改不过来,现在请你帮老师 写一个程序,帮助老师确定各个字符串是否合格。 首先老师有一个匹配模版,比如是“aa[123]bb”这一个字符串,同学们交的各种 作业字符串如aa1bb、aa2bb、aa3bb都算是正确匹配看,而aac...
2018-11-20 02:58:40
1184
原创 前缀、中缀、后缀表达式及树的互相转换及计算
参考:http://www.cnblogs.com/unixfy 一、中缀表达式转前缀 首先设定一个操作符栈,从右到左顺序扫描整个中缀表达式,如果是操作数,则直接归入前缀表达式;如果是操作符,则检测器是否是右括号,如果是右括号,则直接将其入栈;如果是左括号,则将栈中的操作符依次弹栈,归入前缀表达式,直至遇到右括号,将右括号弹栈,处理结束;如果是其他操作符,则检测栈顶操作符的优先级与当前操作符...
2018-11-20 02:58:17
1905
原创 数据结构与算法(六)内排序
表格载自:https://blog.csdn.net/yushiyi6453/article/details/76407640 1.距离排序 描述 给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。 输入 输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到1...
2018-11-20 02:16:57
1093
原创 数据结构与算法(五)图
基础知识: 一.图的存储 1.十字链表 十字链表是邻接表和逆邻接表的结合,能够由firstinarc出发得到vi的整个邻接表,由firstoutarc出发得到vi的整个逆邻接表。构建的方法就是每读入一条边E,就找到这条边所在的两个顶点,设从v1到v2。那么这条边的headvex(表示头节点)设为1(v1的序号),headnextarc指向下一个以v1为头的边的(v1.firstoutarc)...
2018-11-18 20:13:32
1218
转载 卡特兰数
最近数算学到栈与队列,有道题目问出栈一共有多少种方法,需要用到卡特兰数。具体数学中也学习了卡特兰数,特别是用生成函数推导卡特兰数,还是很有意思的,很多模型最后的结果都是catalan(具体数学的考题答案不是斐波那契就是卡特兰hhh 维基百科:https://en.wikipedia.org/wiki/Catalan_number 转载自:https://blog.csdn.net/wu_ton...
2018-11-18 19:59:10
200
原创 数据结构与算法(四)树
1.Pre-Post-erous! 描述 We are all familiar with pre-order, in-order and post-order traversals of binary trees. A common problem in data structure classes is to find the pre-order traversal of a binary...
2018-09-12 15:12:42
685
原创 数据结构与算法(三)二叉树
1.实现堆结构 描述 定义一个数组,初始化为空。在数组上执行两种操作: 1、增添1个元素,把1个新的元素放入数组。 2、输出并删除数组中最小的数。 使用堆结构实现上述功能的高效算法。 输入 第一行输入一个整数t,代表测试数据的组数。 对于每组测试数据,第一行输入一个整数n,代表操作的次数。 每次操作首先输入一个整数type。 当type=1,增添操作,接着输入一个整数u,代表要插入的...
2018-08-09 21:38:54
2610
转载 数据结构与算法(一)KMP模式匹配
转载:http://blog.csdn.net/fightlei/article/details/52712461 KMP模式匹配算法 此算法是由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的,因此该算法被称为克努斯-莫里斯-普拉特操作,简称为KMP算法。 KMP算法,是不需要对目标串S进行回溯的模式匹配算法。读者可以回顾上面的例子,整个过程中完全没有对目标串S...
2018-07-20 16:39:08
370
原创 状态压缩DP总结
参考博客:https://blog.csdn.net/accry/article/details/6607703状态压缩主要指的是用位运算代替枚举压缩DP的时间,如果某一个状态和之前状态的顺序没有关系,那么就可以将之前的选或者不选压缩到一个二进制数中。在选择第i个时枚举之前的所有可能的i-1状态,但是这i-1状态是不记录顺序的,只在i-1到i时考虑顺序,这样的话往往能够节约很多时间。【POJ331...
2018-06-27 14:10:50
1912
原创 636程设训练8
第一题 Jury Compromise http://poj.org/problem?id=1015大致题意是有n对数{ai,bi}里面选择m对使得这m对的|ai-bi|最小并最大化ai+bi。看起来很简单其实一点都不简单。刚开始想的时候一直在纠结,如果每个子状态表示的是使得|ai-bi|最小的状态那么状态没有办法转移,因为前面局部最小和全局最小没有什么关系。然后搜了一下解析:参考总结一下本...
2018-06-27 12:57:46
173
原创 2018期末上机汇总(2)
B09:变换的迷宫 http://cxsjsx.openjudge.cn/2018ftall/B09/题目并不难,主要是不要写bug就行。典型的bfs,现在bfs最需要考虑的地方就是vis数组到底记录什么。就是什么重复了就不用再继续搜索下去了。这里是t%k是一样的话就不用搜下去了,然后如果是#,那么就是只要走一次就好,因为一定是t%k==0才会走上去。#include<iostream&g...
2018-06-24 17:48:19
260
原创 2018期末上机汇总(1)
B08 迷宫入口一道搜索题,关键在于怎样表示一个状态,怎样设计放的顺序来剪枝。这里可以用一维数组来存放一个状态,表示map[i]表示第i列已经放的高度。然后为了保证第i列是连续的,我们假设每一次都选择最低的位置放,每一次放的边长都小于最低的那一段的长度。同时为了保证每一个状态只被搜索到一次,如果同时有多个最低的,就放最左边的那个。判断是否结束可以全部扫一遍,也可以先预处理一下碎片面积是不是和总面积...
2018-06-24 16:55:50
208
转载 最长上升子序列nlogn算法
转自 https://blog.csdn.net/shuangde800/article/details/7474903HDU 1950最长上升子序列问题可以优化为nlogn的算法。定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则记录最小的那个最末元素。注意d中元素是单调递增的,下面要用到这个性质。首先len = 1,d[1] = a[1],然后对a[i]:若a[i]...
2018-06-16 02:12:51
300
原创 Tour
Tour UVA 1347限定了从左向右走,每个点都要走一遍,旅行商问题的简化版。于是我们想两个人从左向右走,每个人走不同的点,然后dp[i][j]表示前面的那个人走到i后面的那个人走到j,且i之前所有点都已经便利时,最小的路程(注意这里就保证了i>j)。于是接下来只能i走到i+1,或者j走到i+1故状态转移为: dp[i+1][j]=max(dp[i][j]+dist(i,i+1),dp[...
2018-06-14 22:22:14
342
原创 课程大作业
终于考完了两门通选课,可以开始欢快的程设训练了。课程大作业 POJ15288刚开始想先用一个dp[T][n][n]记录在时间t刚好完成第i项作业的最短完成序列,这样的复杂度是n2的。然而这么做每一个子状态是有后效性的,所以挂了。于是看了一下大佬的代码。观察到这里每一时间选择什么课的罚分只由选课本身决定,所需要记录的只有前面的课程有哪些,而不是课程的顺序,这样就将一个n!的复杂度化为2n。但是怎么实...
2018-06-14 21:39:47
3445
原创 宠物小精灵之收服
POJ 4978有两个限制,小智的精灵球和皮卡丘的体力值,所以建一个二维数组来枚举各个精灵球和体力值。每一次判断一下是不是比全局最大值大。然后更新一下体力值。刚开始没有搞清楚应该正着循环还是倒着循环,总是写不对。其实先仔细想想还是挺好写的。#include <iostream> #include <cmath> #include <queue> #include...
2018-06-11 12:03:40
1006
转载 DP总结(转载)
目录 一、动态规划初探 1、递推 2、记忆化搜索 3、状态和状态转移 4、最优化原理和最优子结构 5、决策和无后效性二、动态规划的经典模型 1、线性模型 2、区间模型 3、背包模型 4、状态压缩模型 5、树状模型三、动态规划的常用状态转移方程 1、1D/1D 2、2...
2018-06-08 23:15:27
331
原创 2015期末训练2
poj 8463典型分治算法。转换坐标和转换方向是等价的。long long用起来要注意,除法可能有点奇怪。算cnt的时候刚开始用了除法,总是不对,改成while循环就好了。四舍五入要用printf。#include <iostream> #include <string.h> #include <cstring> #include <queue> ...
2018-06-08 23:08:36
248
原创 2015期末训练
前四题没什么问题,写到第五题突然卡住了。刚开始在想怎么搜,看了一下数据范围,好像可以暴力枚举,不过暴力枚举居然wa了,十分气愤。最后在大佬的帮助下发现是多此一举的多减了一块重叠部分的长度。以后写代码之前一定要先想好,在开始写。poj 8470#include<algorithm> #include<iostream> #include<cstdlib> ...
2018-06-05 17:22:02
205
原创 636程设训练1
https://vjudge.net/contest/230123题目1:数独题,暴力搜索就好,但是要注意记录当前每一行,每一列哪些用过,哪些没用过,这样复杂度是n^2才不会超时,否则每一层递归都要重新判断一下是否可以填某个数就很容易超时。这相当于是一种记忆化的方法,需要掌握。题目2:密码题,这个比较简单,就是把每种字母重复的次数找出来,排序然后比较一下两个序列是否相等就好了。题目3:Max Su...
2018-06-01 23:36:25
203
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人