【Gym - 101196F】Removal Game (环形区间dp,环状,细节优化)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/89005186 题干: 健健开发了一个游戏叫做<<者护守形隐>>,里面有一个情节是这样的,女主子纯藤武被坏人关在了密室里,作为男主的肖健当然要英雄救美。但是要打开密室的门,必须解开一道谜题。 门上有几个数字围成的一个圈,每次消除一个数字的代价是这个数字旁边的两个数字的gcd,当最后消的只剩两个数时,消除这两个数的代价就是这两个数字的gcd
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

【FZU - 2202】犯罪嫌疑人(思维,假装建图,分类讨论)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/89025949 题干: 福尔摩斯是个大侦探,他总是在解决疑难案件。这一次的案件也不例外,案件是这样的:有编号为1到N的N位嫌疑犯,他们其中有一个犯了罪,然后每个嫌疑犯都被询问,“哪一个人犯了罪?”犯罪嫌疑人的答案只能“编号ai的嫌疑犯犯了罪”或者“编号ai的嫌疑犯没有犯罪”。当然嫌疑犯也可以说他自己(ai = i). 福尔摩斯凭着他敏锐的
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

【HDU - 5050 】Divided Land (Java大数,大数进制转换,大数gcd)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/89026414 题干: It’s time to fight the local despots and redistribute the land. There is a rectangular piece of land granted from the government, whose length and width are b
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

【Gym - 101608G】WiFi Password (区间或,线段树 或 按位处理+尺取 或 二分)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/89026778 题干: Just days before the JCPC, your internet service went down. You decided to continue your training at the ACM club at your university. Sadly, you discovered th
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

【ZOJ - 3963】Heap Partition (STLset,二叉树的性质,构造,贪心,思维)

版权声明:欢迎学习我的博客,希望ACM的发展越来越好~ https://blog.csdn.net/qq_41289920/article/details/89060347 题干: A sequence S = {s1, s2, ..., sn} is called heapable if there exists a binary tree Twith n nodes such that every node is labelled with exactly one element from
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

聚类索引与非聚类索引的区别(描述生动、很好理解)

转载自https://www.cnblogs.com/yxlblogs/p/5416257.html 聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。 聚集索引使用注意事项: • 定义聚集索引键时使用的列越少越好。 • 包含大量非重复值的列。 • 使用下列运算符返
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

数据库三大范式及五大约束的描述

实体:表; 属性:表中的数据(字段); 关系:表与表之间的关系; 数据库设计三大范式(重点): 第一范式(1NF):数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性; 例如:userInfo:山东省烟台市 131777368781 userAds:山东0省烟台市 userTel:131777368781 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情; 例如:订单表只描述订单相关的
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer19_顺时针打印矩阵

题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10。 本来想递归子矩阵但是不好实现,最后思路参考的剑指offer上的答案: 首先拿到这个题,读完题我们脑子里会呈现出这样的一个画面。从外圈到内圈顺序的依次打印,我们就可以把矩阵想象成若干个圈,如上图所示,我们可以用一个循环来打印矩阵,
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer20_包含min函数的栈

题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。 解决思路: 最开始的解题思路以为要用基本数据结构实现栈,后来发现用数组的话实在是复杂度太高了。 查了一下网上的思路才发现是用基本的栈去实现复杂的栈。 具体思路是维护两个栈,其中一个是基本的栈,另一个保存最小元素的栈。 注意:一定要保持两个栈的同步,pop的时候都pop,push的时候都push,这样才能保证min栈的首元素是当前最小值。 具体代码如下: import java.u
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer21_栈的压入、弹出序列

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 注意:这里的弹出不是倒序的依次弹出,而是一个边压入边弹出的过程。 比如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列。具体过程是这样的:
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer22_从上往下打印二叉树(二叉树的层序遍历)

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 //创建两个ArrayList,一个用来存储节点,一个用于存储节点的值作为返回值。 //1.先将根节点加入到队列中 //2.取出根节点的元素,将左右节点放入队列 //3.取出左节点的元素,将左节点的左右节点放入队列 //4.取出右节点的元素,将右节点的左右节点放入队列 //5.按着节点存储队列依次取元素,直到末尾 import java.util.ArrayList; public class Solution { public
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指Offer23_二叉搜索树的后序遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 分析:在后序遍历序列中,最后一个数字是树的根节点的值。数组中前面的数字可以分为两部分:第一部分是左子树节点的值,它们都比根节点的值小;第二部分是右子树节点的值,它们都比根节点的值大。 思路:所以先取数组中最后一个数,作为根节点。然后从数组开始计数比根节点小的数,并将这些记作左子树,然后判断后序的树是否比根节点大,如果有的点不满足,则跳出,并判断为不成
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

如何用hadoop运行第一个程序(纯新手教程)

因为大概花了一上午的时间琢磨(捂脸.jpg),所以觉得应该写一篇教程记录一下,以防下次遗忘。 前提:成功安装并启动了hadoop。 注意:有一部分为回顾内容,具体指令可能有问题。还有,权限不够记得用sudo。 一、添加java文件 1. 在hadoop安装路径下创建第一个程序的wordcount文件夹、src文件夹、classes文件夹 (一般安装路径都在/usr/local/hadoop,这里创建的src用于存放java程序,classes用于存放java文件编译之后的class文件) cd
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer24_二叉树中和为某一值的路径

题目描述 输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前) 解题思路:路径从根节点开始,应该用类似于前序遍历的方式访问树节点。我们需要整个路径,就需要一个容器保存经过路径上的节点,以及一个变量记录当前已有节点元素的和。当前序遍历到某一个节点时,添加该节点到路径,累加节点值。如果该节点为叶子节点并节点值累计等于目标整数,则找到一条路径。如果不是
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer25_复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路:参考https://blog.csdn.net/zxm1306192988/article/details/81041589 不用辅助空间,实现 O(n) 的时间效率。 第一步仍然是根据原始链表的每个结点N 创建对应的 N‘ 。这一次把 N‘ 链接在N的后面。
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer26_二叉搜索树与双向链表

题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 /* 解题思路:类似于递归的中序遍历 1.将左子树构造成双链表,并返回链表头节点。 2.定位至左子树双链表最后一个节点。 3.如果左子树链表不为空的话,将当前pRootOfTree追加到左子树链表。 4.将右子树构造成双链表,并返回链表头节点。 5.如果右子树链表不为空的话,将该链表追加到pRootOfTree节点之后。 6.根据左子树链表是否为空确定返回的节点。 */
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer27_字符串的排列

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 解决:思路是用的回溯法,每层锁定一个。 这里有讲解很清楚的一篇公众号文章(如侵删)https://mp.weixin.qq.com/s?__biz=MzI5MzYzMDAwNw==&mid=2247484748&idx=2&s
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer28_数组中出现次数超过一半的数字

题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解决: 如果只是统计数组中的元素个数的话,显然没有利用这个数组的特点 比较简单的一个思路是:这个数字不管是最小最大还是居中,都会是这个数组的中位数 所以最开始的解决思路是,对数组进行快速排序,然后返回中间一位的值 但是快速排序本身的复杂度就是NlogN了,显然不是最优 最后采
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer29_最小的k个数

题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 解题思路参考:https://www.cnblogs.com/edisonchou/p/4799678.html 1 需要修改数据源的O(n)解法   基于快速排序中的Partition函数来解决这个问题。如果基于数组的第k个数字来调整,使得比第k个数字小的所有数字都位于数组的左边,比第k个数字大的所有数字都位于数组的右边。这样调整之后,位于数组中左边的k个数字就
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0

剑指offer30_连续子数组的最大和

题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1) 解决思路: 用动态规划方法求解,设置一个全局最
分类: 其他 发布时间: 04-06 22:51 阅读次数: 0