- 博客(34)
- 收藏
- 关注
原创 ABC350-F
给一个包含左右括号的字符串,字符串的每个右括号,都有与之匹配的左括号,对于每一对匹配的括号组,假设左括号的位置为l,右括号的位置为r,且l和r之间无括号,那么可以将[l + 1, r - 1]区间内的字符串顺序逆转,且区间内的大写字母变小写,小写字母变大写,并且把这对括号从字符串中删去。问最后的字符串为什么。
2024-04-20 22:21:38
872
原创 计算机网络——应用层
再0.5倍租用期后会发送DHCP REQUEST询问DHCP服务器是否续约IP地址,如果继续续约,服务器发送DHCP ACK确认报文,否则发送DHCP NACK拒绝报文,如果客户端未收到相应,则在0.875租约期后,再次发送REQUEST报文询问,如果还是没反应,在租约期到达的时候,解除租约,当然,只要客户端想,它可以随时解除IP地址租约。 主动连接:先建立控制控制连接,在根据传送的控制报文确定是否进行数据传输,有数据传输时,告知FTP服务器与自己的另一个临时端口建立TCP连接,建立数据通道。
2023-12-10 11:13:11
1485
原创 计算机网络——运输层
发送方可以一次性发送所有发送窗口中的所有字节数据,接收方采用累计确认的方式向发送方发送确认报文,并且通过这个报文可以知道接收方期望收到的数据的起始字节编号,如果发送的ack = 30,意味着编号30之前的数据都已经收到了,然后发送方就从编号30开始,发送或者重新发送那些在窗口中的30以及30之后的数据。检验和的计算和IP数据报检验和的方法是一样的,不过UDP报文的检验和会把伪首部、首部以及数据部分一起计算,IP数据报的检验和只计算IP数据报首部的数据。时,只要报文段重传了,就不采用其往返时间样本。
2023-12-05 21:19:11
1868
原创 数据链路层
传输完毕之后,NCP会释放网络层的连接,回收原来分配出去的IP地址,接着释放数据链路层的连接,最后释放物理层的连接。而在接收端数据链路层把数据中的插入的转义字符删掉。划分过后,在数据链路层的层面上看,VLAN1中的主机可以内部相互通信,但无法与VLAN2和VLAN3中的主机相互通信,VLAN2和VLAN3同理。划分VLAN之后,主机发送的MAC帧的帧格式不变,交换机根据具体情况选择是否在MAC帧插入一段VLAN标签(需要通过汇聚链路的帧会插入VLAN标签,找到目标地址的端口后,去掉标签)。
2023-11-16 21:26:50
85
原创 计算机网络——物理层
S站发送的信号为:(-1 -1 -1 +1 +1 -1 +1 +1)(-1 -1 -1 +1 +1 -1 +1 +1)(+1 +1 +1 -1 -1 +1 -1 -1)T站发送的信号为:(+1 +1 -1 +1 -1 -1 -1 +1)(+1 +1 -1 +1 -1 -1 -1 +1)(-1 -1 +1 -1 +1 +1 +1 -1)(-1 -1 -1 +1 +1 -1 +1 +1)= 1,说明S站信号的第一个比特为1。假如我现在分配给S站的码片序列为(-1 -1 -1 +1 +1 -1 +1 +1)
2023-11-08 21:59:37
83
原创 计算机网路概论
也许我们得先分清楚互联网与互连网。互连网(internet):泛指由多个计算机网络互连而成的计算机网络(网络的网络)互联网(Internet) :指当前全球最大的、开放的、由众多网络互相连接而成的特定互连网也就是说互联网是最大的特定互连网,为什么说是特定,是因为互联网是分层次的互连网(比如以前的NSFNET是三级结构互联网:主干网、地区网、校园网,我们是不是可以把主干网理解成最高层次的互连网、地区网在次一层,而校园网就更次一点)网络协议的定义:为计算机网络中进行数据交换而建立的规则、标准或约定的集合。
2023-11-03 21:22:33
109
原创 Java并发编程
程序:为了完成特定任务,用某种语言编写的一组指令的集合,是静态的进程:运行中的程序,是动态的线程:进程内的一个执行单元,也是进程内的可调度实体,可以并发执行提高了进程的效率。
2023-11-03 17:35:07
45
原创 自定义泛型
class 类名<E,T...> {成员interface 接口名<E,T...> {修饰符 <E,T...> 返回类型 方法名(参数列表) {}
2023-11-01 21:31:27
63
原创 Comparable和Comparator
Comparable 是一个对象本身就已经支持自比较所需要实现的接口,所谓”自比较"就是说该对象可以调用compareto(E obj)去与其他对象进行比较。实现了该接口的类的对象的列表和数组和以直接通过Collections.sort和Arrays.sort进行排序。如果没实现的话,可以为该类定制一个实现了Comparetor接口的比较器,通过比较器进行排序。如果要对类对象进行排序的话,如果该类实现了Comparable接口,那么可以直接排序。例如,将字符串数组里的内容按字符串长度由小到大排序。
2023-11-01 17:19:58
70
原创 Java单例模式
所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。
2023-10-15 15:36:16
55
原创 可持久化字典树
每添加一个字符串,就意味着产生了一个新版本的字典树,这个新版本的字典树必须要满足可以O(1)复制整个数据结构,还必须满足O(1)的退回某个历史版本。
2023-08-02 15:06:01
185
原创 树链剖分
每次选取top[u] 和 top[v] 中深度更大的点,例如:depth[top[u]] > depth[top[v]],剖分top[u] —> u 的一条重链,然后u = fa[top[u]];当top[u] == top[v]时,说明u,v其中一个点,一定已经是lca(u,v),如果depth[v] < depth[u],说明 v = lca(u,v);由于一棵子树中的dfs序一定是连续的,所以只要知道根节点u和sz[u],就可以为维护u -> u + sz[u] - 1的信息。
2023-06-27 15:54:28
125
1
原创 最长上升子序列模型
其次,因为 q 数组中越大的数,构成的最长上升子序列的长度就更长,以及我们肯定希望a[k]能接在长度最长的子序列后面,所以我们就二分查找q数组中小于等于a[k]的最大一个数的位置pos,f[k] = pos + 1;因为我们二分的时候,找的是小于等于a[k]的最大的一个数,所以更新f[k]的长度为 pos + 1后, 为了维护q数组的性质,q[pos + 1] = a[k];因为q[pos + 1] > a[k],而f[k] = pos + 1;假设存在 i < j, q[i] >= q[j],
2023-06-08 16:01:45
98
原创 区间dp大礼包
让我们合并连续的两堆石子,求最终将所有石子堆合并成一堆所需要的最大和最小代价,翻译一下,就是求合并1~n中石子的代价,也就是说将[1,k]和[k + 1,n]两堆石子合并成[1,n]的代价,而[1,k]有可以是[1,u] 和 [u + 1,k] 合并而来。由于当前区间的范围[l,r]是确定的,所以我们只需要讨论合并点的位置,即可,这样就由分割点从[l,r]中衍生出了树的子节点,而且每个节点的处理的方式都一样,这样就满足了分治的思想,将大问题分解成小问题,我们可以用dfs去求最终的结果。
2023-05-25 13:51:18
98
原创 博弈论——组合游戏(Bash和nim)
就是说nim游戏是一堆石子不能增加的游戏,要不断地从其中的一堆石子中取走一些石子,然后台阶nim游戏就是说,把奇数层的阶梯维护成一个nim游戏,根据nim游戏的规则,当奇数层的异或和不为0的时候,先手胜,因为如果后手将偶数层的石子移动到奇数层,先手可以将该奇数层被移过来的石子,又移到下一层偶数层,此时奇数层的状态不受影响,后手想改变状态的话,就要将奇数层的石子移到偶数层,那这时异或和由0变为正整数,先手始终能从奇数层上一部分石子,使得异或和又变成零。如果一开始奇数层的异或和为0的话,同理,但会是后手胜。
2023-05-08 17:18:58
674
原创 扩展欧几里得算法求特解以及通解
裴蜀定理(或贝祖定理)得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为裴蜀等式):若a,b是整数,且gcd(a,b)=d,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。如果要求 ax + by = c 的特解,那么需要保证 gcd(a,b) | c 然后 x *= c / gcd(a,b)就ok啦!它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1.
2023-05-06 12:18:31
719
2
原创 线段树的各函数的分析
void build(int u , int l , int r) // u用来表示第个树上的节点,l和r表示该节点的左右边界 {l , r };// 已经到了叶子节点 else {l , r } // 记录当前结点的左右边界 int mid = l + r >> 1;//左儿子 build(u << 1 | 1 , mid + 1 , r);//右儿子 pushup(u);//子节点的值改变后向上更新父节点 } }
2023-05-03 16:51:43
76
原创 完全背包问题的公式推导
推导:f[i-1][j-v[i]]+w[i],f[i-1][j-v[i] * 2]+2 * w[i]+…+f[i-1][j-v[i] * k]+k * w[i]推导:f[i - 1][j - v[i]] + f[i - 1][j - 2 * v[i]] + … + f[i - 1][j - k * v[i]]
2023-04-26 21:33:20
212
原创 01背包的分析
由于f[i][j]只用上一层转移而来,所以可以用滚动数组优化一维的空间。递归的结构很显然就是个二叉树结构,所以时间复杂度为:O(2^n);dp的状态转移用到两维循环,时间复杂度为:O(n*m);
2023-04-19 21:30:20
88
原创 Acwing3508 最长公共子串
定义f[i][j]为以a[i]结尾的a的子串与以b[j]结尾的b的子串的最大公共后缀串的长度。由于只用到了f[i-1]这一维的数组更新答案,所以f的空间可以缩小一维;答案:res = max(res,f[i][j]);
2023-04-19 21:24:53
125
1
原创 c++学习笔记
A:把this声明成const Sales_data *const this 就ok了。const type *const p 指向常量型type的常量指针。提问 isbn函数是如何保证是获得该对象的成员bookno呢?const type *p 指向常量型type的非常量指针。type *const p 指向type的常量指针。底层const:指向的类型是const类型。但这需要我们显性的加在函数的参数列表之后。顶层const:本身是const类型。Q:怎么解决这个问题呢?
2023-04-17 19:26:23
88
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人