- 博客(44)
- 收藏
- 关注
原创 【CSP-J2025题解记录】T3异或和
这题我们可以这样想如果s[l-1] ^ s[r]=k,那么区间[l,r]的异或和为k。等式左右两边异或一个s[r],因为两个s[r]异或为0,所有s[l-1]=k ^ s[r]。我们遍历r,看一下存在s[l-1]=k^s[r],并且对应的l-1是要比之前找到 的区间的右端点大的,如果有则答案+1。那么怎么判断是否存在s[l-1]=k ^ s[r]呢?我们可以开一个数组h专门去存储前缀异或和s[r]对应的下标r,每次循环更新h,h[s[r]]=r。
2025-11-23 23:38:03
143
原创 【递归】二进制字符串中的第K位
因此我们可以定义递归函数,有三个组成要素,一个是字符串长度l,一个是我们要求的位k,还有一个是是否进行了取反操作rv,rv=1表示做了取反,rv=0表示没有取反。对于两个结束条件的返回值,先讨论通过若干次递归,问题规模变小,使得l=1的情况,对于这种情况如果没有取反操作的,我们观察S1可知,返回0(此时rv也是为0)。如果是后半段往前找的,就要取反,函数传的参数rv=1,返回1。再看要求的数位处于S的中间位的情况,如果k在原字符串中本来就是处于前半段的,且折半后k在中间位就返回1。N 范围[2, 30];
2025-11-13 11:23:09
345
原创 【二进制枚举小记】杀怪物
为了庆祝自己的生日,小张推出一款游戏。游戏在一个20*20的方格上进行,上面有一些怪物,用#表示,其他是空格,用 . 表示。你可以进行以下操作: (1)使一个横行上的怪物体力减一 (2)使一个竖行上的怪物体力减一 对每个横行或竖行只能操作一次,限定n次,问最多能杀死多少个怪物。第一行为整数n(1≦n≦40),表示操作的次数。接下来是一个20*20的方格,#表示怪物,.表示空格。输出最多能杀死的怪物数量。时限:4s,内存:128m。
2025-11-13 10:48:52
139
原创 多重背包DP代码写法解析
中间层和最里层循环是不可以换位置的,如果换了可能会导致同样的物品当成两种物品叠加。中间层从W开始,从大到小枚举体积j,然后k从0开始枚举物品可以选择的个数,可以想成先腾出k*w[i]的空间放k个第i种物品,然后剩下空间放前i-1个物品。看体积为j时,放几个第i种物品的价值最大。
2025-10-03 22:07:55
369
原创 二分查找左右边界写法
示例:在下列数组中查找>=27的第一个数的下标(27的左边界)。示例:在下列数组中查找<=6的最后一个数的下标(6的有边界)。
2025-09-21 12:38:49
179
原创 【拓扑排序+动态规划】例题及解题报告
拓扑排序+动态规划结合使用可以求有向无环图的最长路或最短路。数据存储:· din数组:存储各顶点入度数。· q队列:让入度为0的点入队,进行拓扑排序。· score数组:存储以顶点v为终点的最值。· ans变量:存储最长路或最短路的值。· G数组:邻接表(也可以用链式前向星)。· W数组:与G数组下标对应,存储权值。算法过程:step 1:输入各边的起点、终点和权值。更新数组din、G和W。
2025-07-27 21:45:26
720
原创 【双指针】供暖器
1)a数组:存储房屋的位置2)h数组:存储供暖器的位置3)l变量:停留在a数组4)r变量:停留在h数组5)minn变量:定义为房屋到供暖器的最小距离6) ans变量:定义为找到的最小半径。
2025-05-17 15:01:02
225
原创 【双指针】缺失的第一个正整数
改一下输入输出格式,第一行输入n,接下来输入n个整数,输出缺失的第一个正整数。这道题需要分情况讨论,用左程云老师的例子来举例,现在n=10,10个整数依次为-3,2,1,8,5,4,2,3,5,13,假设它们存储在数组a中,下标从1开始。整体算法的流程是:初始化l=1,r=n+1,一开始假设全部都是顺好的。(比如例子中的-3) 2) a[l]>r;(比如例子中的13)3)a[a[l]]==a[l] (有重复的数)。
2025-05-17 14:50:32
197
原创 【中缀表达式转表达式树】洛谷P8815 [CSP-J 2022] 逻辑表达式
【代码】【中缀表达式转表达式树】洛谷P8815 [CSP-J 2022] 逻辑表达式。
2025-04-08 09:26:43
181
原创 【栈-解题小记】洛谷P8815 [CSP-J 2022] 逻辑表达式
如果是或运算操作,如果n1.data为1,那么n2.data不会参与本次运算,短路次数就在n1.op的基础上加1.如果n1.data为0,那么n1.data和n2.data都要参与计算,没有发生短路。2.如果当前字符是“|”或在“&”,要看一下ysf栈顶元素的优先级和当前字符比哪个更高,若栈顶元素优先级更高,先处理栈顶元素的运算,1.定义了一个结构体nb,用来记录0或1的相关信息,包括数据(0或1),或运算短路次数op1,与运算短路次数op2。,否则(就会与0和1做运算就不对了。
2025-04-07 18:50:03
256
原创 洛谷P1359题解
这题对于出租站i,只需要考虑前面的出租站到本站有没有更少的租金,不用考虑i+1以后的出租站有没有可能通过其他中转到出租站i有没有更少的租金。那么,可以先确定小号的出租站的最少租金。之后基于小号出租站的租金,更新后面出租站的租金。最后输出出租站n的最少租金。题目描述的是出租站i到出租站j的租金r(i,j)这样明确说了i<j,但没有说j<i的情况。2.从第3个出租站开始,判断加入中转出租站会不会租金更少,如果更少,就更新从出租站1到该出租站的租金,否则不更新。1.初始化,1号出租站到个出租站的租金。
2024-08-11 10:40:55
269
原创 洛谷P2362做题总结
数组h:存储n根木桩的高度· 数组f:存储每个木桩的最长升序序列的长度· 数组cs:存储每个木桩的最长升序序列的方案数· 变量ti:存储比较后最长升序序列的木桩对应的下标。
2024-07-08 16:22:18
429
原创 洛谷P2008做题总结
求第i个数(i>1)的最长不下降子序列,我们可以先找满足不大于第i个数的数,之后在这些满足条件的数里面找到最长的序列的长度,加1(要把第i个数也加进去),就可以得到第i个数的最长不下降子序列的长度。这样看,第i(i>1)个数的最长不下降子序列可以从前i-1个数的最长不下降子序列得到答案,而且是第1个数也是有答案的,满足最优子结构。通过1.1的分析,我们知道第一个数的最长不下降子序列是1;如果是,更新当前数最长不下降子序列的长度与所有数的和,这个在f和v中更新相应的元素,否则就在看后一个数的情况。
2024-07-04 23:55:54
451
原创 洛谷P3395做题总结
mp数组用来标记格子被摆路障的时间(步数),一开始将所有格子的值初始化为一个较大的数,之后根据输入的2n-2行对特定格子做标记。判断了可以走之后,注意检查是否到了(n,n),如果是结束,输出”Yes”,否则创建pos对象入队,将vis标记为1,step值为当前值+1,反复这样做,知道队列为0.使用BFS算法求解,如果格子mp值为0可以走,可以走的情况下再看看是否到达(n,n),如果是则停止,输出“Yes",否则让格子入队,当队列为空时,结束循环。2.因为路障用2n-2个,所以要注意sx和sy要开的大一些。
2024-07-03 09:51:12
509
1
原创 欧几里得算法求最大公约数证明
证:假设gcd(a,b)=p, 则a=a’×p, b=b’×p.gcd(a’,b’)=1。根据上式此时,a’=(a/b)×b’+d×c=d×(b’‘×(a/b)+c)a’-(a/b)×b’可以写为a’-(a/b)×b’=d×c。假设gcd(b’,a’-(a/b)×b’)=d,d ≠ 1。由此推出,a’和b’是不互质的,因为有一个公约数d,要证明gcd(b’,a’-(a/b)×b’)=1.与前面提到的gcd(a’,b’)=1矛盾!则 b’可以写为b’=b’‘×d。而 b = p × b’
2023-04-11 15:41:12
314
原创 图神经网络
图:U:表示全局。E:表示边。数据表示:图片表示:(2442443)。像素映射为点。蓝色表示结点之间有边。文本表示分子图社交网络:交互图引用图:有向边定义问题:•图层面:原始图,识别环,来分类。•点层面:社交关系决裂,判断点所在阵营。•边层面:顶点的关系,边的属性预测。机器学习用于图神经网络的挑战:如何表示图:顶点的属性用向量表示。连接性用邻接矩阵表示。问题:矩阵很大,稀疏矩阵。邻接矩阵交换行列,要保证结果一样。解决方法:邻接列表图神经网络:GNN对图上所有属性进行的可以
2021-12-13 18:10:46
894
原创 目标检测笔记(1116)
1.object detection的模型:R-CNN,Fast RCNN ,YOLO,Detectron,SSD,YOLOv4,YOLOR2.步骤One-stage:直接在图象中检测,eg:YOLOafter 2014 two stages:判断区域是否有物体,有物体的区域做proposal region 给神经网络进行分类及bounding box regression。(分类器有四个神经元,代表四个顶点)3.rcnn:选取若干个大小不一比例不同的区域,用分类模型判断是否有检测目标。最直接的
2021-11-16 20:54:53
142
原创 Iris数据集操作
data是pd.read_csv(csv文件)•data[‘class’].value_counts() 用于统计每个类的数量。•data.describe(include=‘all’)统计•data.cov() 协方差•data.corr() 相关系数•data[‘属性’].hist(bins=分桶数量(自定义)) 显示直方图•data.boxplot() 显示盒状图,可看outliers情况。•parallel_coordinates,看某属性各类别的区分度。...
2021-11-12 15:02:17
416
原创 网络连接设备
物理层的互连设备:中继器、集线器中继器:对数据信号的重新发送和转发来延长网络传输的距离。集线器:特殊的多路中继器,并且具有信号放大功能。数据链路层互连设备:网桥:检查帧的源地址和目的地址,若源地址和目的地址不在同一网络段,就把帧转发到另一网络段。所以,网桥起到了过滤帧功能。交换机网络层互连设备路由器:功能有过滤、存储转发、流量管理、介质转换等,最主要功能选择路径。在路由器的存储器中维护着一个路由表,记录各个网络的逻辑地址,用于识别其他网络。在互联网络中当路由器收到从一个网络发送到另一个网络的信
2021-10-26 22:52:42
416
原创 图形图像概述笔记
•分辨率:一个非常重要的性能指标。指显示器所能显示的像素的多少。像素越多,图像越清晰,印刷质量越好,同时也会增加文件占用的存储空间。描述分辨率的单位:dpi(点每英寸)、lpi(线每英寸)、ppi(像素每英寸)。•颜色深度:每个像素信息所占的二进制位数,又称像素深度,用像素位数(bpp)表示。常见颜色深度:1,8,24,32位等。其中,1位成为二值图像,24位称为真彩图像。•位图:由称作像素的单个点组成。•矢量图:只能靠软件生成。因为这种类型的图像文件包含独立的分离图像,所以可以自由无限制地重新组合
2021-10-22 08:56:05
223
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅