![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
习题
文章平均质量分 83
头发没有代码多
这个作者很懒,什么都没留下…
展开
-
第五章——动态规划2
a[i]和b[j]选不选共有四种组合情况,我们划分成四个子集,00表示都不选,01不选a[i],选b[j],10选a[i],不选b[j],11俩个都选。我们先把7去掉,左边计算的就是从起点到8路径的最大值,8的坐标是i-1,j-1,即左边状态可以表示为f[i-1,j-1]含义是从起点走到8这个位置的最大值,最后再给加7。我们以第i-1个数来分类,第一个格子0,表示没有第i-1个数,即序列长度是1,之后分别是 i-1是第一个数,i-1是第2个数,i-1是第三个数……f[i,j]=max(左边,右边)。原创 2023-04-28 18:51:35 · 1057 阅读 · 0 评论 -
第五章——动态规划1
f(N,V)表示从前N个物品选,总体积不超过V的集合,状态计算表示的是集合的划分,状态计算是把当前的集合表示成更小的子集,即把当前状态用前面更小的状态表示出来,我们这里采用把f(i,j)所有的选法表示成俩大类,以含i和不含i为划分标准。该集合表示的是第i个物品选0个,第i个物品选1个,第i个物品选2个,第i个物品选3个,第i个物品选4个……右边也变成了从i到i-1中选,由于没去掉第i个物品时,总体积不超过j,去掉了第i个物品后,总体积不超过j-vi。从左到右分别是第i组物品选第0个,第i组物品选第1个……原创 2023-04-27 11:49:29 · 387 阅读 · 0 评论 -
第四章——数学知识3
上三角形式有三种:①完美阶梯型——有唯一解,②非完美阶梯型,左边没有未知数,右边的系数是非0的,即0=非0,此时无解。6,6关于红颜色这条边做轴对称对应的坐标是5,7,即从0,0到6,6的所有路径中,减去0,0到5,7的所有路径,即可得到正确答案。我们转化成从原点走路径的问题,当有6个0和6个1,需要计算从0,0走到6,6共有多少种方案,上述题目求的是从0,0到3,3的距离。从0,0到6,6共有C12 6种走法,再减去经过红颜色这条边的数。答案只有三种情况,无解,无穷多组解,唯一解。原创 2023-04-26 10:20:06 · 431 阅读 · 0 评论 -
第四章——数学知识1
n中最多只包含一个大于sqrt(n)的质因子(假设n中有俩个大于sqrt(n)的质因子,俩俩乘一块之后肯定大于n),因此枚举的时候可以先把小于根号n的枚举出来,如果最后剩余的数大于1,则说明这个数时大于根号n的质因子。上面算法较为麻烦,我们可这样做,以11为例,我们不需要把2-10的所有数都进行判断,我们把2-10中的质数找出来,看11是不是这些质数的倍数,如果不是则说明11是质数,反之不是质数。如果d是n的约数,则n/d也一定能整除n,即我们枚举约数时,枚举到d≤n/d即d≤根号n。原创 2023-04-25 20:41:08 · 447 阅读 · 0 评论 -
第四章——数学知识2
裴蜀定理:有一对正整数a,b,一定存在非0整数x,y使得ax+by=(a,b)括号表示a和b的最大公约数,即ax+by=d,d一定是a,b的最大公约数的倍数。最顶部的方程有解,等价于最下面的等式有解,而这个等式有解的充分必要条件是,b必须整除a,m的最大公约数。若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得 a/b≡a。x (mod m),则称 x 为 b 的模 m 乘法逆元,记为 b^−1 (mod m)。4的2的2次方是上面结果6的平方模10,结果还是6。原创 2023-04-24 08:47:37 · 416 阅读 · 0 评论 -
数学知识四
从n个集合当中选若干个集合,所有的选法都在上述公式中,每种选法的符号跟我们所选取的奇偶数有关,我们用位来表示,如果某位为0,则代表没有选,为1,则代表被选。若最开始的异或值是0,则先手的结果一定是0,后手的结果就不是0,即先手拿到的永远是0,后手拿到的永远不是0.如果异或值不是0,我们可以从某一堆中拿走一些石子,让剩下的值异或变成0,即先拿的可以决定后拿的结果。即有3个堆,分别有2,4,7个石子,每次取得时候只能取2个或5个,如果取 不到就失败。任何非0的状态都能到0,任何0状态到不了0状态,原创 2023-04-23 19:13:52 · 582 阅读 · 0 评论 -
最小生成树|二分图
最小生成树跟边的正负没有任何关系。原创 2023-04-22 09:42:48 · 442 阅读 · 0 评论 -
DFS与BFS|树与图的遍历:拓扑排序
蓝色部分是结点4的子树,红色部分我们暂时称为其他部门,因为我们知道树的总结点数n,只要能算出蓝色部分的数目s,那么其他部分的数目就是n-s。若删除结点3,剩下一个数目为1的子树,和一个数目为7的子树,即剩下的最大连通子树的结点数目为7……如这里的1,2,3就是拓扑序列,因为1在2前面,2在3前面,1也在3前面。若删除结点2,则剩下两个数目为1的子树和一个数目为6的子树,即剩下的最大连通子树的结点数目为6;若删除结点1,则剩下三个子树最大的是中间那颗结点有4个,即剩下的最大连通子树的结点数目为4;原创 2023-04-21 14:20:31 · 624 阅读 · 0 评论 -
数组元素的目标和
让i一开始指向A的第一个数,j指向B的最后一个数,找到AI+Bj>x的数,之后j--,当找到Ai+Bj=x的数就可以break(因为是升序数组,A增大,B就要--,这样才能找到AI+Bj=x)A和B数组都是具有单调性的数组。时间复杂度O(N+M)原创 2023-04-20 14:44:01 · 34 阅读 · 0 评论 -
哈希表|STL使用
a r r [ i ] = a r r [ i − 1 ] ∗ p + s t r [ i ] arr[i]=arr[i-1]*p+str[i]arr[i]=arr[i−1]∗p+str[i],其 中 s t r [ i ] 只 要 不 为 0 就 行 其中str[i]只要不为 0 就行其中str[i]只要不为0就行。h [ 4 ] = h[4]=h[4]=“A B C A ABCAABCA” 的哈希值。h [ 1 ] = h[1]=h[1]=“A AA” 的哈希值。原创 2023-04-19 08:35:38 · 411 阅读 · 0 评论 -
Trie|并查集|堆|
Trie树是用来快速存储和查找字符串集合的数据结构(字典树)是一种用于实现字符串快速检索的多叉树结构。Trie 的每个节点都拥有若干个字符指针,若在插入或检索字符串时扫描到一个字符 c,就沿着当前节点的 c 字符指针,走向该指针指向的节点。Trie树可以支持有一个:凡是用到Trie树的题目,一般来说给出的字符串要么全是小写字母,要么全是大写字母,要么都是数字,要么全是0或1,总之字母类型不是很多。一棵空Trie树,该点的。(1)过程分析当需要S时,我们令一个指针Р起初指向根节点。然后,依次扫描S。原创 2023-04-18 14:36:37 · 355 阅读 · 0 评论 -
链表与邻接表|栈与队列|kmp
以找窗口中的最小值为例:3和-1都比-3大,而且这俩个数字在窗口滑动的时候都会比-3提前被窗口弹出,所以我们可以删掉这俩个元素,即:在找最小的数只要队列里面前面的数比后面的数大,则前面的数一定没有用,这样我们就可以把大的数删掉,当整个数组都这样操作时,队列就会变成一个单调递增的队列。注意这组数据里的4和2,当我们要找比7小的数字时,左边3,4,2都比7小,但我们找的是离7最近的2,此时返回2即可,但3和4此时没用,在找比5小的数字时,3,4也没用,3和4便可以删除。数组,它存储的是字符串中(一般是模板串。原创 2023-04-17 14:28:55 · 388 阅读 · 0 评论 -
第一次习题总结
sl和sr是左边和右边数的个数,当k原创 2023-04-16 08:11:14 · 436 阅读 · 0 评论 -
双指针法|位运算|离散化|区间合并
有n行,所以是10的5次方个数,对于m行要输入俩个整数lr,这里又是2x10的5次方,所以总共是3x10的5次方,总共有2x10的9次方个数,但是我们只用到了3x10的5次方个数。思路:按区间左端点排序(每个区间都有自己的左端点,根据左端点的大小进行排序),扫描整个区间,扫描过程当中把有交集的区间进行合并。一开始数字全是0,下标为1的数+2,为3的数+6,为7的数+5,计算0-3的和,4-6的和。离散化:一般是在一个的数组中,输入x(下标),将该值映射到从1开始对应的数组。习题:求二进制中1的个数。原创 2023-03-04 15:54:46 · 555 阅读 · 5 评论 -
前缀和计算
然后我们构造一个数组b : b[1] ,b[2] , b[3],,,,,, b[i];使得 a[i] = b[1] + b[2 ]+ b[3] +,,,,,, + b[i]然后我们打个补丁,b[r+1] - c, a数组变成 a[r+1] - c,a[r+2] - c,,,,,,,a[n] - c;首先让差分b数组中的 b[l] + c ,a数组变成 a[l] + c ,a[l+1] + c,,,,,, a[n] + c;首先给定一个原数组a:a[1], a[2], a[3],,,,,, a[n];原创 2022-10-15 19:43:31 · 367 阅读 · 4 评论 -
高精度计算
r*10+s1[i];如这里1/12不够除,此时商为0 ,余数为1,数学中我们让3直接落下来,变成了13,让13除12,这里要r*10+3变为13,之后把13/12的商给C,余数保留,余1,1*10+8=18,18/12=1给C,余数6给r,之后把结果逆置一下,去掉尾部的0,因为我们要倒着打印,计算出来是011,逆置后110,打印的时候倒着打011,所以要去掉尾部的0。之后按照俩数相减-借位,然后将结果给C,当计算完毕之后,如果最后面有0,我们将0去除即可,因为那是高位0,没意义,接着逆序打印即可。原创 2022-10-12 12:57:33 · 149 阅读 · 5 评论