集训队 题解2019 day
杭州电子科技大学2023新生赛 G 逃离节奏面 题解
Question 杭州电子科技大学2023新生赛 G 逃离节奏面 题太长自己看吧 Solution 考虑到如果走了几步后走到了相同节奏面的相同点是没有意义的,所以直接 BFS ,对于走过的节奏面的哪个点不需要走就能刷出最短路了 实际上实现的时候细节很多,要注意一下 Code #include<bit ......
ciscn_2019_s_3
ciscn_2019_s_3 ret2csu 在64位程序中可以通过栈溢出控制__lib_csu_init中的参数来控制rdx,rsi,edi寄存器 64位函数传入的参数依次存在寄存器rdi,rsi,rdx (顺序从左到右),返回值存在rax中 syscall函数会根据rax的值来调用函数,例如当r ......
ciscn_2019_n_5
ciscn_2019_n_5 ret2shellcode libc泄露 程序没有开启NX保护,并且是RWX权限可以运行段上代码 预期解:往name中写入shellcode,再利用get转跳到相应的.bss段上运行shellcode 非预期解:通过get泄露puts()地址,泄露libc地址,劫持程序 ......
ciscn_2019_ne_5
ciscn_2019_ne_5 32位ROP劫持 程序逻辑 /bin/sh的替代方案sh 栈上覆盖 ROPgadgets查找字符串 GetFlag函数 1.GetFlag函数中把先前AddLog中加入的src变量赋给了dest,这里存在溢出 2.Print函数中有system函数,通过plt_sys ......
杭州电子科技大学2023新生赛 E 树 题解
Question 杭州电子科技大学2023新生赛 E 树 给定一颗包含 \(n\) 个节点的带边权的树,定义 \(xordist(u,v)\) 为节点 \(u\) 到 \(v\) 的简单路径上所有边权值的异或和 有 \(q\) 次询问,每次给出 l r x 求 \(\sum_{i=l}^r xord ......
黑马程序员《苍穹外卖》项目Day02-02-新增员工_代码开发
问题:使用注解@Insert插入数据到sql中时无法正确识别sql表 办法: 1、先在idea添加数据库,导入驱动(具体可搜索idea Mysql驱动安装导入) 2、安装好数据库及驱动之后,如图,勾选需要的架构。可以查看到对应的表即为导入成功 3、最后在Insert位置添加对应表即可。具体操作为光标 ......
【省选联考2020】树 题解
省选题解第一发~ 【省选联考2020】树 我和这道题还挺有缘分的。 有一次看大佬的省选游记(不知道是哪一年),然后提到有一道是01trie整体加一,当时我就印象深刻,然后在 oiwiki 上看了一下,心想这整体加一也只能从低位到高位维护 01trie 啊,又不能查询最大值,有什么卵用(划掉)。 这是 ......
代码随想录day04 两两交换链表中的节点 删除链表的倒数第N个节点 链表相交 环形链表
两两交换链表中的节点题目: 这题画一下链表会比较清晰 写写画画指针位置很快就可以写出来 一开始以为一个tmp就够用了 写着写着发现需要多一个 代码: 删除链表的倒数第N个节点: 没什么思路 只好先看看视频思路 视频思路很简单也很清晰 只需要两个指针 一快一慢 两指针的间隔就是n 这样当快指针到末尾的 ......
题解 [SDOI2016] 游戏
可以看出来出题人很想出一道把李超和别的什么东西凑起来的题目,于是给了这么一个缝合怪。 https://www.luogu.com.cn/problem/P4069 符号有点混乱。比如箭头又可以表示路径又可以表示赋值,代入语境应该还是好理解的。 看到 \(a\times dis + b\) 就应激反应 ......
算法学习Day17二叉树迭迭迭迭代
Day17迭迭迭迭代 By HQWQF 2023/12/28 笔记 110.平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树_每个节点_ 的左右两个子树的高度差的绝对值不超过 1 。 示例 1: 输入: root = [3,9,20,null ......
20231213-sdfz多校集训-DS
非 lxl 的 DS 不会线性代数,只能来写 DS 了。 20231226- 没有逻辑,直接放例题。 P1527 矩阵乘法 - 整体二分 P1527 [国家集训队] 矩阵乘法 给你一个 \(n \times n\) 的矩阵,不用算矩阵乘法,但是每次询问一个子矩形的第 \(k\) 小数。 \(1 \l ......
CF1884D Counting Rhyme 题解
Problem - D - Codeforces Counting Rhyme - 洛谷 法1: 我们之前肯定看过这样一道非常经典的题: 求 \(a_i\) 中有多少对 \((i,j)\),满足 \(\gcd(a_i,a_j)=1\) \(n \leq 10^6\) 这题是莫反板子题,但显然可以不用 ......
[ABC334C] Socks 2 题解
题目传送门 一道贪心题。 数量为 \(2\) 的袜子不用考虑,因为最好的情况就是相同颜色的配一对。 我们只需要考虑那 \(k\) 种只有 \(1\) 个的袜子,如果 \(k\) 为偶数,答案为相邻两数之差之和;如果 \(k\) 为奇数,就枚举删掉一个数,让剩下的数按照 \(k\) 为偶数的情况做,最 ......
[ABC334E] Christmas Color Grid 1 题解
题目传送门 一道 dfs 题。 先统计出绿连通块数量,然后对于每个红色方块统计涂成绿色方块后会变成多少个连通块。正常涂成绿色后应该会增加一个大小为 \(1\) 的绿连通块,但若是有不同的绿连通块与其相邻,答案又会减少 \(1\)。 Code #include <bits/stdc++.h> cons ......
代码随想录day03 链表删除 链表类的实现 反转链表
首先是链表的删除操作 热身题 这里使用了一个新的头指针 这样在删除头指针的时候就不需要进行额外的判断 然后是链表类的实现 需要一点背诵加上深刻理解 有时候理解了但是写起来还是会有些指针边界的小问题 应该多写写多记一下就会好了 还有就是手写链表要常复习吧 学习新语言应该也要对这些常用的数据结构进行手写 ......
CF1917F Construct Tree 题解
Description 给你一个数组 \(l_1,l_2,\dots.l_n\) 和一个数字 \(d\)。问你是否能够构造一棵树满足以下条件: 这棵树有 \(n+1\) 个点。 第 \(i\) 条边的长度是 \(l_i\)。 树的直径是 \(d\)。 只需要判断是否有解即可。 \(2\le n\le ......
【题解】BZOJ 4403序列统计
tg.BZOJ 4403序列统计 pj.BZOJ 4403序列统计 没啥用的题解 \(QWQ\)——无脑思考 首先要想怎么求单调不上升序列的个数,因为可能会有重复的数,所以不能直接用排列组合。 那这道题怎么打呀? 我不知道啊\(\dots\) \((~:\) 因为原来是单调不下降序列,将第 \(i\ ......
CF1806F GCD Master 题解
题目链接 Easy version Hard version 题目解法 参考 DeaphetS 的题解 很有意思的题,感觉 \(F1\) 不到 \(*2900\),\(F2\) 超过 \(*2900\) F1 简化题目中的操作:把 \(n\) 个数放到 \(n-k\) 组中,求 \(\max(\su ......
[CF30E] Tricky and Clever Password 题解
[CF30E] Tricky and Clever Password 题解 注意到一个合法字符串首尾相同,考虑用 S 的反转和 S 跑 KMP。 对于只有一个串,暴力 manacher 即可。 匹配到某一位置 \((i, j)\) 时,查询区间最长的奇回文串长度,用二分 + ST 表解决,因为回文串 ......
day02 代码随想录算法训练营 209. 长度最小的子数组
题目: 209. 长度最小的子数组 我的感悟: 滑动窗口, 每次计算当前位置的值, 满足要求就缩小, 这样左右两个指针都不回退。一直右走。 这个原理,还没太理解,感觉要在看看左神的视频。 理解难点: 为什么可以不回退。 代码难点: for 循环右边界 里面while判断是否满足要求 总结概括: 无 ......
P9995 [Ynoi2000] rspcn 题解
思路 比较典的 ODT 题目。 发现排序是一个非常有性质的操作。 它对区间的更改与颜色段均摊差不多。 那么我们可以想到用 ODT 来维护这一整个序列。 具体的,区间排序操作可以用 ODT 维护每次排序产生的段,每段用线段树维护排序后的结果。 每次修改就可以进行线段树的分裂与合并。 如何查询。 可以发 ......
P9992 [Ynoi Easy Round 2024] TEST_130 题解
最开始没看到子树的限制,以为是个极其困难题。 思路 由于问题是在子树下,可以考虑在 dfn 序上扫描线。 考虑一个点 \(u\) 对 \(v,d\) 的贡献。 令 \(dep_u\) 为 \(u\) 的深度,\(mdep_u\) 为 \(u\) 的子树下的最大深度。 \(dep_u< dep_v\) ......
P9993 [Ynoi Easy Round 2024] TEST_133 题解
思路 看到时限这么大,考虑暴力做法。 我们将原序列分为 \(\text{B}\) 个块,每个块类似线段树三一样的维护 \(add,maxadd\),表示这一块需要加的值,加的值的历史最大值。 同时对于每个数可以维护一个真实值与一个历史最值。 那么下传标记可以写成这样。 inline void pus ......
P9994 [Ynoi Easy Round 2024] TEST_132 题解
题解怎么都是用暴力日过去的啊。 思路 考虑根号分治,设阈值为 \(B\)。 对于第二维出现次数超过 \(B\) 的,我们可以在修改时暴力更改,这部分复杂度为 \(O(\frac{nm}{B})\)。 对于第二维出现次数小于 \(B\) 的,我们可以在修改是打标记,查询时遍历一遍,这部分的复杂度为 \ ......
P9991 [Ynoi Easy Round 2023] TEST_107 题解
思路 题目即要求删除区间中的一个或多个颜色。 考虑假如枚举删除颜色 \(k\)。 那么在 \(l,r\) 中的答案为: \[\max_{i=1}^{m+1} a_i-a_{i-1} \]其中 \(a_i\) 为颜色 \(k\) 在 \(l\sim r\) 中的出现位置,\(a_{0}=l,a_{m+ ......
day02 代码随想录算法训练营 977. 有序数组的平方
题目: 977. 有序数组的平方 我的感悟: 这道题,仔细观察,平方后两头的大。 用双指针,取两头,放到新的数组里。 新数组要求排序 所以,新的数组从后往前放 理解难点: 无他,多练习。 代码难点: 无 总结概括: 双指针 代码示例: class Solution: def sortedSquare ......
drf 入门-精通 10days
过滤排序源码 视图类中配置:filter_backends = [OrderingFilter] # 1 入口 》查询所有 》ListModelMixin 》list 》完成了过滤 # 2 ListModelMixin 》list的方法--》必须配合继承GenericAPIView class Li ......
day01 代码随想录算法训练营 27. 移除元素
题目: 27. 移除元素 感悟: 用快慢指针。 本题是要原地删除。 而删除这个行为在真实的计算机的数组里,是覆盖。 所以,就用两个指针,(人) 一个跑的快,一个跑的慢。他们身上带了个对讲机。 跑的快的那个人负责检测后面的数字符合要求不,比如,要不等于3的,遇到一个2,告诉跑的慢的说2符合要求。遇到一 ......
AT_abc020_c 题解
链接(atcoder) 链接(luogu) 简单算法组合(? 算法一 爆搜,时间复杂度 \(O(2^{n \times m} \times t)\),不能通过此题。 算法二 考虑二分 \(t\),然后暴搜,时间复杂度 \(O(2^{n \times m} \times log2(t))\),不能通过 ......
CF1234F 题解
blog。小清新题,下文 \(V=20\) 即值域。 反转操作,本质就是选两个不相交连续段拼起来。 显然合法的最终串长度一定 \(\le V\)。将这些合法串预处理出来,那么每个串都对应一个「字母集合」。 随便 DP 一下,求出所有集合中,的最大的合法「字母集合」大小。\(dp_{\small U} ......