01 2022 档案
摘要:先上传送门 其实这题大可不必用快读O(nlogn)的算法,因为夹杂了太多的重复计算 我们只需要将小于该元素的放在左边,大于他的放在右边即可 因此引入快速选择算法,该算法可求第k大(小)元素,这里介绍第k大,其实也等价与求第n-k+1小 算法流程大致如下: 随机选择一个数,将他与最后一个元素交换(随机
阅读全文
摘要:单调队列 单调队列,顾名思义,队内元素是单调的 增减性可以自行定义,但最后访问队首元素都是所求区间的最值 这里以单调递减队列为例 对于当前元素,先与队尾元素比较,如果队尾元素更小,那么直接删除队尾元素,一直删除直到队尾元素比当前元素大或者队列为空 这样就能保证他的单调性 对于他的维护,我们以例题来说
阅读全文
摘要:这题可以贪心或者搜索,搜索更为简单,便于理解。 首先考虑怎么记录各个机器的工作情况,我们不妨设一个sum数组表示第i台机器工作的时间,这样只需要枚举每一次的工作给第几台机器就可以完成搜索 最后数组里最大的就是所需时间 但是显然这样会有非常多的重复计算,时间会超,这时候就需要剪枝 首先再传一个参数记录
阅读全文
摘要:这道题就是一道搜索求和的问题,用到了回溯,找到后直接输出结束即可,反之无解,注意有一个优化就是输入的时候累加求和,如果总和都不够,那就必然不够 #include<cstdio> #include<algorithm> #include<cstring> using namespace std; in
阅读全文
摘要:这题真的好坑啊,专坑我这种语文不好的 其实限制条件就一个,相邻的4个字符不能是重复相同的!!!! 剩下就是dfs求排列了 #include<cstdio> using namespace std; int n,vis[15],a[15],ans; void dfs(int cur){ if(cur
阅读全文
摘要:组合,n里选r个 (dfs&回溯) #include<cstdio> using namespace std; int n,a[25],vis[25],r; void search(int x,int cnt){ if(cnt > r){ for(int i=1;i<=r;++i)printf("%
阅读全文
摘要:在学习矩阵快速幂之前,首先要了解什么是矩阵 上百度百科: 矩阵是一个按照长方阵列排列的复数或实数集合 形如 n * m m * p的两个矩阵可以进行矩阵乘法,也就是前一个矩阵的行数等于后一个的列数 在相乘时要将对应的行列的对应元素相乘后 相加,得到一个n * p 的矩阵 用公式就是这样 因为太懒所以
阅读全文

浙公网安备 33010602011771号