算法描述 取数游戏:A与B玩取数游戏,随机产生的2n个整数排成一列,只显示两端的整数,只有当A或B取完数会显示下一个数或者是前一个数(若是取末尾的数) A的取数策略:采用贪心策略,每次取数取两个数中最大的那个数 B的取数策略:当两个数相差较大,取大的那个数,若相差为1,则在这两个数中随意取
一、线性表的特性   1、线性结构的特性   (1)集合中必存在唯一的“第一元素”和唯一的“最后元素”。   (2)除最后一个元素之外,均有唯一的后继和唯一的前驱。   2、线性表的基本操作过程   (1)用 Setnull(L)置空表;   (2)用Length(L)求表的长度和表中各元素的个数;
1. 问题 给定一系列不重叠的矩形,在这些矩形中随机采样一个整数点。 2. 思路 (1)一个矩形的可采样点个数就相当于它的面积,可以先依次对每个矩形的面积累加存起来(相当于概率分布中的分布累积函数CDF,Cumulative Distribution Function)。 (2)从 [1, 总面积]
本文是对数据结构的总体内容进行总结,详细内容在后续文章中将有介绍。 一、3种基本的数据结构   (1)线性结构:数据元素之间是 一对一关系,如线性表(链表)、队列、栈。   (2)树形结构:数据元素之间是一对多关系,如二叉树、哈夫曼树。   (3)网状结构:数据元素之间是多对多关系,如图。 二、线性
1. 问题 给定一个圆的半径和圆心坐标,生成圆内点的坐标。 2. 思路 简单说 (1)在圆内随机取点不好做,但是如果画出这个圆的外接正方形,在正方形里面采样就好做了。 (2)取两个random确定正方形内的横坐标和纵坐标即可在正方形内采样。 (3)如果采样到的点不在圆内,则丢弃,继续采样,当采样的点
*本文是最近学习到的知识的记录以及分享,算不上原创。 *参考文献见文末。 这篇文章主要讲的是java的Collection接口派生的两个子接口List和Set。 目录   Collection框架   List接口   Set接口 1.Collection框架 首先我们综合性地看一下java的Col
【洛谷P2584】【ZJOI2006】GameZ游戏排名系统题解 题目链接 题意: GameZ为他们最新推出的游戏开通了一个网站。世界各地的玩家都可以将自己的游戏得分上传到网站上。这样就可以看到自己在世界上的排名。得分越高,排名就越靠前。当两个玩家的名次相同时,先上传记录者优先。由于新游戏的火爆,网
学习的一些记录,便于查漏补缺 定义   在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。   节点类,示例代码(java) public class Nod
取反符号(~) 作用:将数字转换成二进制数,然后按位取反。 如:   十进制数 5 转换成二进制是0101(此时显示出来的是原码)   取反结果是 1010(此时显示出来的是补码)   将补码转换成原码(先减1,非符号位取反)1110   1110转换成十进制数-6   #include<io
一·模拟算法的思想   解决模拟问题,需要仔细分析题目给出的规则,要尽可能地做到全面考虑所有可能出现的情况,这是解决模拟问题的关键点之一。 二·实例演练   `猜数字游戏`问题   代码实现: #include"stdio.h" #include "time.h" int main() {
一·迭代算法的思想   迭代算法在使用过程需要做好如下3方面的工作:(1)确定迭代变量(2)建立迭代关系(3)对迭代过程的控制 二·实例演练   `求平方根`问题   代码实现: #include "stdio.h" #include "math.h" int main() { doubl
目录 B树定义及特性 查找顺序 保持平衡 B+树B+树的插入 使用场景 参考 今天学习B树和B+树,B树和B+树都是基于二叉树的衍生,对于二叉树不太了解的读者可以翻看《数据结构:二叉树》 本文目录: B树 定义及特性 B树,在写法上通常是B-树,这不是减号的意思,只是一种表达方式,它是一种能够存
这是悦乐书的第152次更新,第154篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第11题(顺位题号是35)。给定排序数组和目标值,如果找到目标,则返回索引。 如果没有,请返回索引按顺序插入的索引。假设数组中没有重复项。例如: 输入:[1,3,5,6],5 输出:2
1. 问题 对于一个可能包含重复数字的数组,给定一个目标数,随机返回该目标数的下标。 2. 思路 很直接的做法是,构建一个字典,键为目标数,值为一个数组,存储的是目标数在原数组中出现过的位置下标。 每次输入一个目标数,直接根据目标数得到下标数组,然后在这个下标数组中随机取一个下标即可。 init:
原题地址:https://vjudge.net/problem/ZOJ-3329 题目大意:   有三个骰子,分别有k1,k2,k3个面,初始分数是0。第i骰子上的分数从1道ki。当掷三个骰子的点数分别为a,b,c的时候,分数清零,否则分数加上三个骰子的点数和,当分数>n的时候结束。求需要掷骰
A是水题,此处略去题解 B - PreSuffix ZOJ - 3995 (fail树+LCA) 给定多个字符串,每次询问查询两个字符串的一个后缀,该后缀必须是所有字符串中某个字符串的前缀,问该后缀最长时,是多少个字符串的前缀。 思路:对所有串构造ac自动机,根据fai
一、贪心算法的思想   贪心算法也称贪婪算法,此算法思想不从整体最优上考虑问题,仅是在某种意义上的局部最优求解。由此可见贪心算法只是追求某范围内的最优,可以将其称之为“温柔的贪婪”。   贪心算法存在的问题:   (1)不能保证最后的解是最优的;(2)不能用来求最大或最小解的问题;(3)只能求满足某
一、分治算法的思想   将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同,只要解决子问题,就可得到原问题的解。 二、分治算法的解题过程   (1)分解,将要解决的问题划分成若干个规模较小的同类问题。   (2)求解,当子问题划分到足够小时,用简单的方法解决。   

推荐文章