08 2019 档案

摘要:题目传送门 题意 第1个字符串为"COFFEE",第2个字符串为"CHICKEN",第n个字符串由其前2个和前1个连接而成(即s[n]=s[n-2]+s[n-1],注意s[n-2]在s[n-1]的前面),询问第n个字符串从第k个字符开始的连续10个字符是什么(如果还未有10个字符但到达字符串末尾时要 阅读全文
posted @ 2019-08-26 19:18 HOLLAY 阅读(229) 评论(0) 推荐(1)
摘要:题目传送门 题意 输入整数T表示有T个测试用例,然后 • 给一个01构成的字符串,要把该字符串切分成最少的份数,使得每一个字符串都是循环移位字典序最小的字符串。(例如0110就不满足字典序最小,因为循环移位可得0011) • 111011110 -> 111 01111 0 题解 每次暴力枚举最少的 阅读全文
posted @ 2019-08-26 19:17 HOLLAY 阅读(140) 评论(0) 推荐(0)
摘要:题目传送门 题意 输入n和k表示有n个地点和k个人(n个地点编号1..n) 接下来n-1行输入a、b表示地点ab之间有距离为1的通路 最后一行输入k个值表示哪些地点有人,求所有人聚在一起的最短时间。 (题意其实就是在一棵树上,多个节点有人。选择一个节点使得这些人各自到这个点的路径的最大值最小。) 题 阅读全文
posted @ 2019-08-26 19:15 HOLLAY 阅读(143) 评论(0) 推荐(0)
摘要:概念: 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。 康拓展开: 给定一个全排列序列,求该序列是所有全排列序列中字典序第几的序列 公式如下: 其中, a[i] 为整数,并且 0<=a[i]<i,1<= 阅读全文
posted @ 2019-08-26 19:14 HOLLAY 阅读(281) 评论(0) 推荐(0)
摘要:题目传送门 题意 输入整数n,给出两个包含n个整数的序列a和b,找到一个区间[l,r],使在该区间内a序列最小值×b序列区间和的值最大。 题解 遍历a序列,维护单调栈求以当前值a[i]为最小值时的最大可达区间[ L[i],R[i] ](即最大左右边界); b序列先预处理其前缀和pre_sum,后用线 阅读全文
posted @ 2019-08-26 19:12 HOLLAY 阅读(244) 评论(0) 推荐(0)
摘要:题目传送门 题意: 输入n和m,给出一个n行m列的01矩阵,求出所有的不可扩大的全1矩阵个数。 题解: 预处理每个格子的高度up[i][j](其向上连续的1的个数),枚举每一行 i,维护单调栈(单调上升)求每个格子 j 以up[i][j]为高可达到的全1矩阵左边界pos和右边界j,此时得到的全1矩阵 阅读全文
posted @ 2019-08-15 00:11 HOLLAY 阅读(228) 评论(0) 推荐(0)
摘要:题目传送门 题意 输入整数n和m(n和m均∈[1,1000]),给出一个n×m的01矩阵,求第二大全1矩阵的面积。(如果矩阵少于两个1,则输出0) 题解 ①单调栈做法【复杂度O(n×m)】:先预处理每个点(i,j)的高up[i][j],枚举每一行作为底边,遍历每一个点j,维护单调递减栈计算当前高度可 阅读全文
posted @ 2019-08-15 00:09 HOLLAY 阅读(210) 评论(0) 推荐(0)
摘要:单调栈: 单调栈解决的是:以某个值为最小(最大)值的最大区间。 实现方法: 求最小值(最大值)的最大区间,维护一个递减(递增)的栈。(下面以求最小值最大区间为例) 当遇到一个比栈顶小的值的时候开始弹栈,弹栈停止的位置到这个值的区间即为此值左边的最大区间;同时,当一个值被弹掉的时候也就意味着比它更小的 阅读全文
posted @ 2019-08-14 21:29 HOLLAY 阅读(1211) 评论(0) 推荐(1)
摘要:题目传送门 题意 输入整数n,再输入n个整数a1,a2,⋯ ,an,表示一段序列,求序列的所有子区间里面不同数字之和。 说明: 在序列1 2 1 3中, 区间 [1,1],[2,2],[3,3],[4,4]各含1个不同数字 区间 [1,2],[1,3],[2,3],[3,4]各含2个不同数字 区间  阅读全文
posted @ 2019-08-11 19:30 HOLLAY 阅读(303) 评论(0) 推荐(0)
摘要:题目传送门 题意: 输入整数m( m∈2k ∣ k=1,2,⋯,10),构造一个由1和-1组成的m×m矩阵,要求对于任意两个不同的行的内积为0。 题解: Code: 下面贴一份别人的代码,没看懂为什么可以这样解,哪位大佬能来解释解释吗~~ 【查了一下,函数_builtin_popcount(n)是计 阅读全文
posted @ 2019-08-11 16:47 HOLLAY 阅读(227) 评论(0) 推荐(0)
摘要:题目传送门 题意: 输入一段字符串,字符串中连续的三个相同的字符可以消去,消去后剩下的左右两段字符串拼接,求最多可消去次数。 输入:ATCCCTTG 输出:2 ATCCCTTG(消去CCC)——>ATTTG(消去TTT)——>AG 题解: 签到题,用栈模拟即可。 Code: 用栈模拟: 直接stri 阅读全文
posted @ 2019-08-10 20:50 HOLLAY 阅读(219) 评论(0) 推荐(0)
摘要:二叉查找树(二叉搜索树): ——摘自《挑战》 输入若干条命令,执行以下操作: insert x——将x插入到二叉排序查找树中 delete x——从二叉排序查找树中删除x find x——从二叉排序查找树中查找x,找到则输出yes,否则输出no min——输出该二叉排序查找树的最小值 travers 阅读全文
posted @ 2019-08-10 12:01 HOLLAY 阅读(135) 评论(0) 推荐(0)
摘要:一棵二叉树: 树的先序遍历序列preorder:DBACEGF(根左右) 树的中序遍历序列inorder:ABCDEFG(左根右) 树的后序遍历序列postorder:ACBFGED(左右根) 树的层序遍历序列levelorder:DBEACGF(按行遍历) 输入一棵二叉树的先序遍历和中序遍历序列, 阅读全文
posted @ 2019-08-09 16:37 HOLLAY 阅读(239) 评论(0) 推荐(0)
摘要:形式:s.substr(p, n) 返回一个string,包含字符串s中从p开始的n个字符的拷贝(p的默认值是0,n的默认值是s.size() - p,即不加参数会默认拷贝整个s) 阅读全文
posted @ 2019-08-08 23:08 HOLLAY 阅读(9645) 评论(0) 推荐(2)
摘要:int vis=a.find(b):从string a开头开始查找第一个遇到的string b,返回string a中所匹配字符串的第一个字符的下标位置,找不到则返回-1. int vis=a.find_first_of(b):从string a开头开始查找第一个遇到的string b中所含有的任意 阅读全文
posted @ 2019-08-08 22:47 HOLLAY 阅读(876) 评论(0) 推荐(0)
摘要:"题目传送门" 题意: 输入n,给出两组均为 n个数字的数组a和b,轮流从a和b数组中取出一个数字,要求严格按照当前所选数字的数组下标比上一个所选数字的数组下标更大,计算能够取出的数字加起来的总和最大能为多少。 测试样例1: 输入: 5 9 3 5 7 3 5 8 1 4 5 输出:29 提示:选择 阅读全文
posted @ 2019-08-04 18:14 HOLLAY 阅读(177) 评论(0) 推荐(0)
摘要:题目传送门 题意: 输入一个只包含数字的字符串,求出是300的倍数的子串的个数(不同位置的0、00、000等都算,并考虑前导零的情况)。 sample input: 600 123000321013200987000789 sample output: 4 55 题解: O(n)做法:遍历一遍,求前 阅读全文
posted @ 2019-08-04 18:08 HOLLAY 阅读(183) 评论(0) 推荐(0)
摘要:C/C++:rand()函数 rand()函数的头文件:#include<stdlib.h> 该函数产生的随机数随机性差,速度慢,周期小(0-32767) 用法如下所示: 代码运行结果如下: C++11:mt19937 mt19937的头文件:#include<random> 产生速度快, 周期大( 阅读全文
posted @ 2019-08-03 00:52 HOLLAY 阅读(614) 评论(0) 推荐(0)