摘要:
题意:有一个图,要求从$S$走到$E$,$.\(表示可以走的路径,\)*$周围的八个方向均不能走,要求判断是否能走到$E$,若能,输出最小路径长度,否则输出$Impossible$. 题解:我们先把$*$周围的点标记一下,然后判断$E$是否被标记过了,如果没有,则找到$S$的位置进行BFS,结构体$ 阅读全文
摘要:
题意:从一个数组中尽可能多的选数,要求所选的每个数之间的差不大于$5$. 题解:先排序,然后双指针尺取,如果能取,则移动右指针,维护最大值,否则移动左指针即可. 代码: #include <iostream> #include <cstdio> #include <cstring> #include 阅读全文
摘要:
题意:有一个正整数$n$,从$1,2,3,...,n-1,n$中找两个数异或,使得他们的值最大. 题解:需要特判当$n=1$的情况,答案只能是$0$,然后写个几组数不难发现,一定存在两个数使得他们异或后的二进制上每一位都是$1$,直接模拟即可. 代码: #include <iostream> #in 阅读全文
摘要:
题意:有一长度为$n$的数组,求该数组中有多少元素不能整除其它任一元素的个数. 题解:刚开始写了个分解质因数(我是傻逼),后来发现直接暴力枚举因子即可,注意某个元素出现多次时肯定不满足情况,再特判数组中存在$1$的情况即可. 代码: #include <iostream> #include <cst 阅读全文
摘要:
题意:有长度为$n$的数组$a$,要求构造一个相同长度的数组$b$,使得${b_{1},b_{2},....b_}$集合中没有出现过的最小的数是$a_$. 题解:完全可以按照题意直接构造,但是比较麻烦,这里我们先标记原数组中的数,然后将原数组中没出现过的数存进$b$中($a$中出现的数在$b$中不能 阅读全文
摘要:
题意:有一长度为$n$的数组,求一子序列,要求子序列中两两差的绝对值最大,并且子序列尽可能短. 题解:将数组看成坐标轴上的点,其实就是求每个单调区间的端点,用差分数组来判断单调性. 代码: #include <iostream> #include <cstdio> #include <cstring 阅读全文
摘要:
题意:有一个长度为$n$的数组,找一段最长子数组,使得其元素和为$x$,如果存在,输出子数组的长度,否则输出$-1$. 题解:这题我们要从元素和$sum$来考虑,首先,如果原数组的所有元素都被$x$整除,那么条件不成立. 假如原数组的$sum$不被$x$整除,那么长度就为$n$,如果被$x$整除 阅读全文