- 博客(10)
- 收藏
- 关注
原创 区间和并算法
给定 n 个区间[l,r],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3] 和 [2,6] 可以合并为一个区间 [1,6]。
2024-08-18 18:50:49 574
原创 离散化算法
和这两行代码分别对不同的vector这行代码向add这个vector中添加了一个类型的对象。add存储的是加法操作的详细信息,每个元素都是一个包含两个整数的对(pair),这里分别是位置x和值c。这个操作是为了记录一个加法操作,即在数组的第x个位置增加c。这行代码向alls这个vector中添加了一个单独的整数x。alls存储了所有加法操作和查询操作中涉及的位置和值,用于之后进行排序和去重操作。这个操作是为了收集所有可能影响数组a的位置,以便之后可以快速地找到并处理这些位置的加法操作。
2024-08-18 16:08:01 943
原创 位运算算法
位运算中,通常需要一个树状数组的通用操作,lowbit()。lowbit()函数,用于二进制的形式下返回 x 的最后一位 1 ()。实现原理 :-x = ~x + 1。~x代表的意思是按位取反的意思。将x按位取反,比如x = 10101010b。那么~x = 01010101b,~x+1 = 01010110b;比如x = 10101011b。那么~x = 01010100b,~x+1 = 01010101b;
2024-08-13 19:16:54 593
原创 编程中易混知识点
d 输出数字长度为变量数值的实际长度%md 输出m位(不足补空格,大于m位时按实际长度输出)%ld,%mld l(小写字母L)表示输出“长整型”数据%0md,%0mld 0(数字0)表示位数不足m时补0注:%后面的m(位数控制)、0(位数不足补0)对于其他格式符也适用。例:(□表示空格)int i=123;输出:123□□□123□00123,□123456□□□123456□00123456。
2024-08-09 12:11:45 813
原创 归并排序算法
因为你先递归到最下面一层的时候只有一个元素,这个时候递归满足结束条件,会自动return到上一层,而倒数第二层这个时候有从倒数第一层递归回来的两个元素,这个时候这两个元素就会执行接下来的一大串排序指令: int k = 0, i = l, j = mid + 1;另:整个递归执行过程是一棵二叉树,先会递归到整棵树的底部,底部只有一个节点一定有序,然后在回溯时不断合并相邻两个区间,每次合并之后都会将合并之后的区间排好序。递归回到上一层的时候 要依据新的q数组合并 所以肯定要更新q数组的值的。
2024-08-08 16:29:22 252
原创 C语言求素数
间任一整数整除,m 必定是素数。例如 16 能被 2、4、8 整除,16=2*8,2 小于 4,8 大于 4,16=4*4,4=√16,因此只需判定在 2~4 之间有无因子即可。思路1):因此判断一个整数m是否是素数,只需把 m 被 2 ~ m-1 之间的每一个整数去除,如果都不能被整除,那么 m 就是一个素数。所谓素数是指除了 1 和它本身以外,不能被任何整数整除的数,例如17就是素数,因为它不能被 2~16 的任一整数整除。m 不必被 2 ~ m-1 之间的每一个整数去除,只需被 2 ~
2023-10-29 09:58:32 13
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人