- 博客(7)
- 问答 (1)
- 收藏
- 关注
原创 二分法学习
二分算法 二分模板列举: 首先,二分算法可以分为两个部分以下均以数组中存在多个X为例,第一种是寻找第一个X,代码如下: 其中l代表左边界,r代表右边界 while(l<r) { int mid=(l+r)/2; if(a[mid]>=o)r=mid;//如果满足条件右边就移回来 else l=mid+1; } 第二种是寻找最后一个X ,代码如下 : while(l<r) { int m
2021-07-29 15:16:36
147
转载 由数据范围反推算法复杂度以及算法内容
Y总YYDS 一般ACM或者笔试题的时间限制是1秒或2秒。 在这种情况下,C++代码中的操作次数控制在 10^7 为最佳。 下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择: 1.n≤30, 指数级别, dfs+剪枝,状态压缩dp 2.n≤100 => O(n^3),floyd,dp 3.n≤1000=> O(n^2),O(n^2logn),dp,二分 4.n≤10000 => O(n∗√n),块状链表 5.n≤100000 => O(nlogn)=> 各
2021-07-29 15:14:53
126
原创 归并排序学习
归并排序 先列出模板: 题目描述 给定你一个长度为n的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行,第一行包含整数 n。 第二行包含 n 个整数(所有整数均在1~10^9范围内),表示整个数列。 输出格式 输出共一行,包含 n 个整数,表示排好序的数列。 数据范围 1≤n≤100000 输入样例: 1 2 5 3 1 2 4 5 输出样例: 1
2021-07-29 15:12:44
153
原创 树状数组简析
树状数组 lowbit函数: lowbit(x)函数的实质是在求x在二进制表示下最后一个1的位置,也就是能整除x的最大2的幂次 2的幂次:2,4,8,16,32……等等都叫做2的幂次 举个例子,当x=6时,6能整除的最大2的幂次是2,所以lowbit(6)=2。 也可以从另一个方面来理解,我们来看一下lowbit函数的计算式:x&-x; 这个运算式为什么能计算x最右边一个1的位置呢? 我们来分解一下这个式子,依旧拿6来举例子,6的二进制表示是110,我们将其每一位都取反后变为001,再
2021-07-29 15:11:41
111
原创 线段树模板
线段树 线段树本质上是一个二叉树,有三个属性,分别记录自己的左右边界与从左到右的和。 有四个函数,将会在面的模板题中展示。 线段树模板题: 动态求连续区间和 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数的个数和操作次数。 第二行包含 n 个整数,表示完整数列。 接下来 m 行,每行包含三个整数 k,a,b (k=0,表示求子数列[a,b]的和;k=1,表示第 a 个数加 b)。
2021-07-29 15:10:22
184
原创 DP状态压缩
17. 过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点:0,1,……,L(其中L是桥的长度)。坐标为0的点表示桥的起点,坐标为L的点表示桥的终点。青蛙从桥的起点开始,不停的向终点方向跳跃。一次跳跃的距离是S到T之间的任意正整数(包括S,T)。当青蛙跳到或跳过坐标为L的点时,就算青蛙已经跳出了独木桥。 题目给出独木桥的长度L,青蛙跳
2021-07-29 14:55:53
102
空空如也
mybatis的collection写了和没写一样,反正只能查出来user对象
2022-03-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人