- 博客(66)
- 收藏
- 关注
原创 鸣人的影分身(DP)
在火影忍者的世界里,令敌人捉摸不透是非常关键的。我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。针对不同的作战情况,鸣人可以选择制造出各种强度的影分身,有的用来佯攻,有的用来发起致命一击。那么问题来了,假设鸣人的查克拉能量为 𝑀,他影分身的个数最多为 𝑁,那么制造影分身时有多少种不同的分配方法?
2024-06-19 16:48:36 392
原创 STM32学习-1 新建工程
*!/*!/*!发现他说这个参数可以写GPIOMode_TypeDef里面的值,选中这个字符,Ctrl+F,搜索这个定义的位置其中 GPIO_Mode_Out_PP就是通用推挽输出,我们选择它查看pin的定义时发现有多个定义,选择类型为member的:我们选择pin13选择50MHz/***/按照参数定义填写。
2024-05-15 17:18:08 723
原创 警钟长鸣!求平方根的函数
周六考蓝桥杯的时候,有个题目要求求平方根,但是那时候我只大概记得是一个叫sqrt的函数,忘记头文件是叫什么了,在这里记录下来,提醒自己不要重蹈覆辙。这个sqrt返回的是一个double类型,所以能比较精确的计算出3,5,6,7等等不能直接由两个不同的整数相乘得到的数的平方根。
2024-04-15 00:17:57 161
原创 小美的数组询问(C++)
现在小美想知道,如果那些未知的元素在区间[l,r]范围内随机取值的话,数组所有元素之和的最小值和最大值分别是多少?可以看出,数组中为0的就是不确定的元素,他可以取l和r范围内的任意数,题目要求最小和最大,那就取l和r。因为未知的元素数量固定,所以我们可以记录它的数量,然后计算其他确定的元素的和,最后加上不确定的元素即可。第一次询问,数组最小的和是 1+1+3=5,最大的和是 1+2+3=6。输出q行,每行输出两个正整数,代表所有元素之和的最小值和最大值。第二次询问,显然数组的元素和必然为 8。
2024-03-24 10:26:25 620
原创 借教室与差分
借教室的订单,其实就是在每天需要教室数量的数组上进行一个区间的增减,可以用差分数组快速得到区间的变化,而又因为订单满足先来后到,即如果要处理第k个订单,必须保证从1到k-1号订单全部可以满足,那么就可以知道存在一个分界线:有最后一个能处理的订单x,在它之后的所有订单都不能处理,在它之前的所有订单都可以满足。因为题目中初始情况下,每一天所需的教室数都为0,所需的教室数量是根据后面的订单才发生变化的,也就是说,要计算教室数量,就可以通过订单(差分数组)来计算,这些得到的差值加起来就是某天所需要的教室数量。
2024-03-21 19:43:38 1068
原创 CSS 03
发现较小的margin会被大的合并,这里是下面的two的margin top被上面的one的margin bottom合并了。我们想要让div这个盒子大小不变,加了padding等属性之后可以用手动减法去设置原来的w和h大小,或者使用内减模式。版心居中必须要有width值,因为浏览器auto计算的逻辑是用整个的宽减去width再除以2得出左右外间距。比如我们只有一个div标签,内容是爱,但是想生成老鼠爱大米,就可以在div前后加假标签来显示。两张图片,一个设置给li的背景,一个设置给a的背景。
2024-03-14 11:02:28 1001
原创 CSS 02
后代选择器会选择所有满足条件的后代,比如上面的代码就是找到嵌套在div标签里的所有span标签把它们变成红色效果:发现确实是所有div里的后代span都变红色了。
2024-03-11 18:38:50 937
原创 CSS 01
图片居中要让图片img标签嵌套到其他标签中,然后让这个父标签实现文本居中。使用标签名作为选择器,选中同名标签设置相同样式。查找标签,差异化设置标签的显示效果。行高属性值等于盒子高度属性值。可以发现所有p标签都变红了。通过修改这三个属性来画盒子。行内写法一般配合JS使用。调节多行文本之间的行距。
2024-03-10 11:01:37 424
原创 HTML 01
浏览器支持在静音状态下自动播放,也就是如果要自动播放需要muted和autoplay一起加。规范:h1在一个网页只能用一次,用来放新闻标题或网页logo,其他无限制。head:网页头部,存放给浏览器看的代码如CSS。html是head和body的父,head和body是兄弟关系。strong等如图都有对应的快捷方式,但是一般都用左边的写法。vscode中,添加删除/注释的快捷键:ctrl + /body:网页主体,存放给用户看的代码,如文字,图片。从当前文件位置出发查找目标文件。兄弟:缩进一样(并列)
2024-03-08 11:47:36 516
原创 unity初学问题:如何修改图片的坐标
打开编辑器在里面修改即可(最下面的Custom Pivot)如图,我们想要修改图片的轴心点坐标(Pivot)
2024-02-27 12:20:32 658
原创 01背包问题(动态规划)
有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。第 i 件物品的体积是 vi,价值是 wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。
2024-01-30 13:21:58 398
原创 蓝桥圣诞树(C++)
这道题还是比较好想的,因为它构造的二叉树是用边连接起来的,不是像之前一样从上到下从左到右按编号构造的,所以可以用邻接表来存每个点还有边,这样可以很方便的找到每个点的相邻点,然后再判断每个点是否有两个相邻点和它颜色一样(即三个连续点同色),这样就可以判断不美观的圣诞树了。每次进入新样例都要重置idx为0构造新的邻接表,不然会被上一个样例影响!然后我的几个错误,输入n-1行写成了。
2023-12-28 00:53:31 3919
原创 Prim算法求最小生成树(Prim算法)
给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。
2023-12-26 21:55:24 207
原创 Kruskal算法求最小生成树(kruskal算法)
我们要做的是合并集合,也就是a的祖宗节点的父节点指向b的祖宗节点,如果颠倒了顺序,那么p[a]就不会发生改变,也就是说a的祖宗节点的父节点依然是它自己,没有完成和b的祖宗节点的合并。由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。遍历过程的每条边,判断这两个顶点的是否在一个集合中。
2023-12-25 20:50:42 102
原创 Floyd求最短路(Floyd算法)
有4个城市8条路,公路上的数字表示这条公路的长短,并且路是单向的,现在要求我们求出任意两个城市之间的最短路程,。1.假设我们只允许经过1号城市,求任意两城市之间的最短路程,应该如何求呢?只需判断e[ i ][1]+e[1][ j ]是否比e[ i ][ j ]要小即可。2.假设我们允许经过1号城市和2号城市,求任意两点之间的最短路程,应该如何求呢?
2023-12-19 20:29:27 164
原创 Dijkstra求最短路 II(堆优化Dijkstra算法)
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为非负值。请你求出 11 号点到 n 号点的最短距离,如果无法从 11 号点走到 n 号点,则输出 −1−1。
2023-12-12 18:56:19 124
原创 Dijkstra求最短路 I(Dijkstra算法)
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值。请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1。
2023-12-11 18:02:07 205
原创 有向图的拓扑序列(拓扑排序)
给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。
2023-12-06 20:59:56 396
原创 图中点的层次(图的BFS)
给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。所有边的长度都是 1,点的编号为 1∼n。请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1。
2023-12-04 21:39:39 114
原创 走迷宫(BFS宽度优先搜索)
给定一个 n×m 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角 (n,m) 处,至少需要移动多少次。数据保证 (1,1) 处和 (n,m) 处的数字为 0,且一定至少存在一条通路。
2023-11-23 20:41:35 157
原创 n-皇后问题(DFS回溯)
n−皇后问题是指将 n 个皇后放在 n×n的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。现在给定整数 n,请你输出所有的满足条件的棋子摆法。
2023-11-21 21:33:12 261
原创 归并排序(c++)
当一个数组有多个元素的时候它也是会执行下面的while那一段的,整个代码的逻辑是当只有一个元素的时候它返回到有两个元素的数组排序,然后这个递归才不断回溯,不断的由两个有序数组合并。这样的递归调用将会不断拆分原始数组 q 的左右两个子数组,直到每个子数组都只有一个元素或没有元素(即满足 l>=r 的终止条件)为止。右移一位是将二进制的数字进行右移,这是因为右移一位等价于将一个整数除以 2,而在计算机中,右移操作比除法运算更高效。输出一个整数,表示数列的第 k小数。
2023-10-28 22:34:27 78
原创 第k小数(快速排序,含模板)
当发现 q[i] 大于基准元素 x 且 q[j] 小于基准元素 x 时,我们交换它们的位置,将大于基准的元素放到右边,小于基准的元素放到左边。这样做的目的是将基准元素放置在合适的位置,使得左边的元素都小于基准,右边的元素都大于基准。给定一个长度为 n的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k个数。因为这里数组是从0开始计数的,因为要输出第k个数,第k个数在数组中的下标是k-1。将小于基准的元素放在基准的左边,将大于基准的元素放在基准的右边。第一行包含两个整数 n 和 k。
2023-10-26 21:02:01 129
原创 【模板】排序(1)
erase的作用是删除元素,erase(first,last)表示删除从first到last之间的字符(first和last都是迭代器),所以这一段的作用就是从去重之后的尾地址开始到最后一个元素的位置,将重复的元素全部删除。范围(range-based)for 循环是 C++11 标准引入的特性,如果要使用,将编译器改为C++11即可,具体见。unique的作用是“去掉”容器中相邻元素的重复元素,它会把重复的元素添加到容器末尾,而返回值是去重之后的尾地址。
2023-10-23 22:02:18 51
原创 【模板】排序(3)
它遍历输入的每个元素 x,并将其计数存储在桶数组 c 中。桶数组 c 的下标表示元素的值,对应的值表示该元素出现的次数。这段代码遍历桶数组 c,对于每个桶 i,按照桶的计数值,依次输出 i 的值。观察题目数据,(1≤n≤3×10^6),(0≤ai≤2×10^5,1≤i≤n)数据量较大,数据的范围较小。给定一个大小为n的非负整数数组a,你需要对该数组进行升序排序,并输出排序后的结果。第二行:n个整数,表示数组的各个元素。(0≤ai≤2×10^5,1≤i≤n)共一行,n个整数,表示进行升序排序后的数组。
2023-10-23 21:52:44 36
原创 【模板】排序(2)
而题目要求我们按从大到小进行排序,那么我们在重载运算符时直接把它也实现,就不用再去用reverse()函数翻转数组了,我们直接让它返回a>b,这样直接就实现了从大到小排序,会发现这种方法更简洁,效果更好。第一个const是对u进行定义的,不去改变u的值,第二个const关键字位于函数声明的尾部,表示该成员函数是一个常量成员函数,常量成员函数承诺不会修改对象的状态,即在函数内部不能修改成员变量。:这个表达式比较了参数对象 u 的高度 (u.h) 是否小于当前对象的高度 (h)。
2023-10-19 21:09:55 45
原创 我们需要0
当我们将题目中的式子展开来,就可以发现里面的公式可以化简到变成a1^a2^a3...^ai=x的形式,此时求出x即可。x,并令bi=ai⊕x,其中1≤i≤n,请问是否存在x,使得b1⊕b2⊕⋅⋅⋅⊕bn=0?思路:看到这道题使用的是异或运算,首先应该明确异或运算的概念。第二行:n个整数,表示数组a(0≤ai≤10^9)。若存在这样的x,则输出x;否则,输出−1−1。第一行:一个整数n(1≤n≤1000,且。恒等律:X ⊕ 0 = X。归零律:X ⊕ X = 0。),表示数组的大小。
2023-10-17 19:35:36 65
原创 二进制中1的个数
位运算中,与操作符 & 的规则是:只有在两个对应位都为 1 时,结果才为 1,否则为 0。当我们将一个数与 0 进行与操作时,无论这个数的对应位是什么,结果都会是 0。我们将一个数与 1 进行与操作时,由于 1 的二进制表示只有最低位为 1,其他位都是 0,所以与 1 进行与操作相当于只保留原数的最低位。结果是 1,说明最低位是 1;总结:给定任何一个数&0都=0,而唯独当它最低位为1时&1=1,所以才能用来检查最低位是否为1。第二行:n个整数,表示数组a(0≤ai≤2×10^9,其中1≤i≤n)。
2023-10-16 22:07:07 48
原创 鼠鼠我鸭(前缀和c++)
在一个叫做酱西功爷枝叶鸡树学院的地方有n只小动物,要么是鼠鼠,要么是鸭鸭,从1到n编号,每只小动物有个体重ai。在这个学校里,存在一种神奇的魔法,可以将编号位于某个区间[l,r]内的所有鼠鼠都变为鸭鸭,鸭鸭都变为鼠鼠(魔法并不会改变体重)。现在你可以施放这个魔法至多1次。(也可以不施放)问最终鸭鸭的总重量最多是多少?
2023-10-16 20:19:13 133
原创 【模板】二维差分
例如 arr[2][3] 的实际值为 5,那么就相当于给以 (2, 3) 坐标为左上角,(2, 3) 坐标为右下角的区块中的所有元素加上 5。(在一个差分数组的一个位置上加上一个数,前缀和得到原数组之后就会影响原数组的这个位置以及后面的所有数)有q个操作,每个操作格式为:x1,y1,x2,y2,c,其中(x1,y1)、(x2,y2)分别表示一个子矩阵的左上角和右下角的坐标,每个操作将对应的子矩阵的每个元素加上c。思路:差分数组是前缀和的逆运算,通过这点可以得出二维差分数组的定义。
2023-10-14 23:57:34 161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人