中国石油大学OJ – 一箭多雕
题目 小明喜欢武侠小说,在武侠世界里,他不但练就了一箭双雕的能力,还可以一箭多雕。 现在所有雕在一条直线上从左到右排列,但是他们的高度不同。而小明想要把他们都射下来。小明使用的是一种特殊的弓箭,他可以将弓箭射到任意一个高度为H的雕,当射中一个高度为H的雕后,弓箭的高度会下降到H-1,再从左到右飞行,直到射到高度为H-1的大雕,再降低1的高度,直到飞…
中国石油大学OJ – 排队
题目 乐乐的 n 位朋友都拥有唯一的一个编号,编号分别为 1 至 n。某天按到达的时间顺序又给了一个顺序号,此时发现顺序号与多数的朋友编号不一致。乐乐想:如果俩俩交换顺序号,使得每位朋友的编号与顺序号相同,则最少需要交换几次? 输入: 包含二行: 第一行只有一个正整数:n,表示乐乐朋友的人数 第二行共有 n 个正整数,分别表示按顺序到达的朋友编号 …
中国石油大学OJ – 调研
题目 有一直线型展台共有 m 个展位,按该展位离入口处的远近顺序编号,其编号分别为 1、2、……、m;其中只有 n 个是展示新技术的展位,最后一个展示新技术的展位编号为 m。 这次调研分两个小组进行,每个小组最多调研连续的 10 个展位,且每个小组调研的展位至少相隔 2 个展位。 乐乐希望你设计一种安排方案,使领导调研更多的展示新技术的展位。 输入…
一切都从明天开始吧——2021年4月反思
4月已经要过了。自从9月23号来大学,已经过了将近一个半学期了。反思一下自己是很有必要的。 学习 实际情况是,起草这个反思并没有什么计划因素,是因为最近参加了校赛和蓝桥杯有感而发,临时起草的。 总的来说,挺遗憾的。 校赛花了半个多小时找座位,因为自己想用java,但是大部分机器上没有eclipse。然而实际情况是两个签到题也用不到什么C++的东西,…
我对数据结构预算法的粗浅认识 · 1.2 · 算法优劣分析(二)
了解了时间复杂度的概念以后,我们计算时间复杂度的方法大致就是这样的: 先算出各个语句的执行频度; 把各个语句的执行频度加起来,表示成一个多项式 取多项式最高次项,去掉系数,就可以用大O记法表示了。 那么,每次算算法的时候真的需要用数学知识一点点分析,得出频度多项式后才能知道答案嘛? 不一定。 其实稍加思索,下面这些东西可以帮助我们快速算出时间复杂度…
我对数据结构预算法的粗浅认识 · 1.2 · 算法优劣分析(一)
以前的计算机设备,CPU算力与内存用起来都寸土寸金,人们自然希望在程序中应用的算法,能够用更短的时间、更少的内存就能实现需求。 问题来了,如何表示一个算法的优劣呢? 事后分析法 一种简单粗暴的形式,先实现这个算法,做成程序,运行这个程序,看看他需要多少时间和多少内存。 但这种方式有显而易见的缺点,它受制于运行环境,因此并不理想。 试想,有一天你做了…
我对数据结构预算法的粗浅认识 · 1.1 · 对数据结构的认识
数据的组织方式 想象一个这样的计算机里世界,数据元素是这个世界的公民。 什么是数据元素呢?数据元素包含了很多数据项,如果我也是个数据元素的话,我有性别、名字、年龄等等这样的数据项。 同一种数据元素的集合叫数据对象。 在这个世界里,每个数据元素都住在自己的一个房子里。“房子”这个词语不够书面化,不妨起一个名字叫做“节点”吧。 举一个例子: 现在每个节…
我对数据结构预算法的粗浅认识 · 序
前言 这是一个以初学者角度,去看待数据结构的认识。仅以粗浅的角度去审视。由于水平有限,其中饱含许多谬误,也许这些内容会随着我的认识不断加深而日趋完善。希望自己能获得新的知识,收获许多。 为什么要写这样的东西 由于学校开了数据结构课,我希望能够把自己学到的内容记录下来,做归纳整理。好的整理也许是进步的原动力。 同时自己记性不好,希望能以这样的方式加深…
快速排序和归并排序
最近在补习算法,学一学基础的算法知识 快速排序 快速排序的思路就是从当前的这堆数字里随便挑一个数字x,现在把这个x放在中间,通过某种变化,使得左面<=x,右面>=x能够成立,然后把左右两边也这样排序,递归即可得到最终解。 可以看出算法的步骤如下: 选一个分界数字x(咋选都可以,选第一个数字或者最后一个数字都行,一般选(l+r)/2中值数…
初学KMP
很久之前我一直看不懂KMP算法,看了一个视频里dalao的讲解,我还是没看懂。。。。。。 然后在暑假的某一天,睡觉的时候突然明白了一点点我以前不会的KMP算法,于是赶紧记下来。 如果我希望得知某一个字符串 p 在某一个字符串 s 中是否出现过,或者出现过几次,或者在哪里出现过,那么应该怎么办呢? BF算法 我上来一拍脑门就能想到一种暴力算法,也就是…