摘要: C++STL中的全排列函数为两个:next_permutation和prev_permutation其中:next_permutation实现升序,而prev_permutation实现降序 下面以123的全排列为例: 1)next_permutation实现 #include<bits/stdc+ 阅读全文
posted @ 2021-01-03 17:39 Euclid·Guisi 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目描述 输入 n(n≤106) 个不超过 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a1,a2,…,an​,然后进行m(m≤105)次询问。对于每次询问,给出一个整数q(q≤109),要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出 -1 。 输入格式 第一行 阅读全文
posted @ 2020-12-27 18:03 Euclid·Guisi 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 算法复杂度:O(nlogn); 也许有很多同学说,原来也学过很多O(n^2)或者O(n^3)的排序算法,有的可能优化一下能到O(n)的时间复杂度,但是在计算机中都是很快的执行完了,没有看出来算法优化的步骤,那么我想说有可能是你当时使用的测试用例太小了,我们可以简单的做一下比较: 当数据量很大的时候 阅读全文
posted @ 2020-12-16 19:15 Euclid·Guisi 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 假设对以下10个数进行快速排序: 6 1 2 7 9 3 4 5 10 8 我们先模拟快速排序的过程:首先,在这个序列中随便找一个数作为基准数,通常为了方便,以第一个数作为基准数。 6 1 2 7 9 3 4 5 10 8 在初始状态下,数字6在序列的第1位。我们的目标是将6挪到序列中间的某个位置, 阅读全文
posted @ 2020-12-16 19:12 Euclid·Guisi 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 在统计某段程序或某个算法的运行时间时,经常会用到clock()函数 clock()是C/C++中的计时函数,与其相关的数据类型是clock_t,头文件是time.h/ctime。 clock()函数的功能是:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元数(c 阅读全文
posted @ 2020-12-11 18:44 Euclid·Guisi 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 使用 rand 函数可以获取 随机数大小是在0到RAND_MAX,值为2147483647,它是在stdlib中定义的,如果我们希望在某个范围内,可以使用 % 结合 / 来实现 但是不难发现,这里获得的随机数是唯一确定的,而不是变化的。所以,如果我们希望获得变化的随机数,可以使用下面的方法。 因为r 阅读全文
posted @ 2020-12-11 18:43 Euclid·Guisi 阅读(859) 评论(0) 推荐(0) 编辑
摘要: cin.sync()的功能是清空缓冲区,而cin.ignore()虽然也是删除缓冲区中数据的作用,但其对缓冲区中的删除数据控制的较精确。 有时候你只想取缓冲区的一部分,而舍弃另一部分,这是就可以使用cin.ignore(),其使用方法是: cin.ignore(int intExp, char ch 阅读全文
posted @ 2020-12-11 18:37 Euclid·Guisi 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 我的blog:传送门 题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做《三国》的游戏。 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战。游戏中共有 NN 位武将(NN为偶数且不小于44),任意两个武将之间有一个“默契值”,表示若此两位武将作为一对组合作战时,该组合的威力有多大。游戏开始前 阅读全文
posted @ 2020-12-09 18:37 Euclid·Guisi 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给定平面上 nn 个点,找出其中的一对点的距离,使得在这 nn 个点的所有点对中,该距离为所有点对中最小的。 输入格式 第一行一个整数 nn,表示点的个数。 接下来 nn 行,每行两个实数 x,yx,y ,表示一个点的行坐标和列坐标。 输出格式 仅一行,一个实数,表示最短距离,四舍五入保留 阅读全文
posted @ 2020-12-07 20:29 Euclid·Guisi 阅读(663) 评论(0) 推荐(0) 编辑
摘要: 设求第3点为第3阶段时,点1是否需要提供原材料。 【3,3】 => 【2,2】,【4,2】 【2,2】 => 【1,1】,【3,1】【4,2】 => 【3,1】,【5,1】 【1,1】 => 【2,0】,【5,0】【3,1】 => 【2,0】,【4,0】【5,1】 => 【1,0】,【4,0】 # 阅读全文
posted @ 2020-12-05 19:15 Euclid·Guisi 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 读入一个n*m的矩阵,q次询问,每次询问一个子矩阵内数字权值和。 输入格式: 第一行三个整数n,m,q 之后n行每行m个0到100的整数 之后q行,每行四个整数x1,y1,x2,y2,表示要询问的子矩阵。 输出格式: q行表示答案。 样例输入1: 5 4 1 1 1 0 0 1 0 0 阅读全文
posted @ 2020-12-05 11:02 Euclid·Guisi 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 1.题目 题目大致意思是说给定一个正整数NN,让你用二进制表示(但不包括2^020),又因为我们可以证明二进制可以表示任何整数,所以在题目中,只要是偶数,就是“优秀的拆分”,因此,如果NN为奇数,就可以直接排除,即输出-1−1。 接着我们来看NN为偶数的情况,由于二进制有其专有的特性,就是说如果能取 阅读全文
posted @ 2020-11-24 19:52 Euclid·Guisi 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 第一种解法 看到这样一道题,我们的思路就是每加一人,就sort一遍。 但是,这样显然会超时(n=100000可不是盖的)~~~~ 比sort稍微快一点,我们可以使用插入排序,不过也会超。 所以我们需要另辟蹊径。 代码就不出示了,毕竟不是正解(其实是不想写) 第二种解法(正解) 其实我们只要观察一下数 阅读全文
posted @ 2020-11-24 19:50 Euclid·Guisi 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 本场比赛最难的题目,难度远远大于T4,其实是一道模拟+结论题。 首先输入的一坨字符串要先解析,利用栈来建表达式树,这就是一个小模拟,相信正常人都会吧。 对于非运算,我直接用德·摩根定律,下传标记让子树信息都反一下。(其实没必要,当初这样写是因为觉得每个结点都二叉比较美,方便后续处理) 题目里有个信息 阅读全文
posted @ 2020-11-24 19:48 Euclid·Guisi 阅读(165) 评论(0) 推荐(0) 编辑
摘要: Description 给定一个 n\cdot mn⋅m 矩阵,找一条从 (1,1)(1,1) 到 (n,m)(n,m) 权值和最大的路径,每次只准向上、下、右三个方向走。 \text{Solution\ 1}Solution 1:暴力\text{dfs}dfs 概述:这种算法比较简单,不需要动头脑 阅读全文
posted @ 2020-11-24 19:47 Euclid·Guisi 阅读(187) 评论(0) 推荐(0) 编辑