- 博客(1919)
- 收藏
- 关注
原创 P1332 血色先锋队【洛谷算法习题】
核心逻辑:多源BFS预处理网格最短感染时间,实现查询O1O(1)O1响应。关键操作:多源初始化队列、四向网格扩散、离线预处理+在线查询。效率保障:线性遍历网格,无冗余计算,彻底解决暴力枚举超时问题。
2026-06-02 19:20:18
129
原创 小红的平行四边形【牛客tracker & 每日一题】
题目摘要:给定平面上的n个点,要求选择其中四个点构成平行四边形,并求出最大可能面积。若不存在平行四边形则输出-1。(4≤n≤1000,坐标范围±1e9) 核心解法: 几何性质:利用平行四边形对角线中点重合的性质,通过枚举所有点对的中点进行分组。 面积计算:对每组中点相同的点对,用向量叉乘法计算面积(面积=邻边向量叉乘绝对值)。 算法优化:使用哈希表存储中点分组,确保O(n²)时间复杂度,适用于n≤1000的数据规模。 输入输出示例: 输入5个点(含(0,0),(1,1)等),输出1.0(由前四个点构成的正方
2026-06-02 19:13:49
174
原创 P1330 封锁阳光大学【洛谷算法习题】
摘要: 题目P1330要求用最少的河蟹封锁阳光大学所有道路,且相邻节点不能同时放置河蟹。该问题转化为二分图判定与最小顶点覆盖问题,通过BFS对无向图进行二染色,统计每个连通分量中两种颜色的较小值之和。若图存在奇环(非二分图),则输出Impossible。算法使用邻接表建图,时间复杂度为$O(n+m)$,高效处理$n≤10^4$、$m≤10^5$的数据规模。核心步骤包括二分图染色、奇环检测及最小值累加。
2026-06-01 19:34:01
247
原创 旺仔哥哥走迷宫【牛客tracker & 每日一题】
题目摘要:判断在由n个房间和m条双向通道组成的迷宫中,是否存在一条从起点1到终点n的路径,且路径上所有房间均无陷阱(t=0)。使用邻接表存储图结构,通过BFS遍历,仅访问安全节点,若到达终点则输出"Yes",否则"No"。时间复杂度O(n+m)。示例输入:3房间,3通道,陷阱数组[0,1,0],存在路径1→3,输出"Yes"。解题核心是BFS遍历与陷阱过滤。
2026-06-01 19:27:21
322
原创 P1110 报表统计【洛谷算法习题】
摘要 题目P1110要求维护一个动态整数序列,支持三种操作:在指定位置插入元素、查询相邻元素差值的最小值(MIN_GAP)、查询全局元素最接近两数的差值(MIN_SORT_GAP)。初始序列长度为n,操作次数为m(n,m≤5×10^5)。 解决方案采用多层数据结构: 用首尾标记数组记录每个初始位置的元素范围,高效处理插入位置 用multiset维护全局元素集合,插入时通过前驱/后继计算MIN_SORT_GAP 用另一个multiset存储所有相邻差值,直接获取MIN_GAP 每次插入时动态更新相关差值集合,
2026-05-31 17:13:59
236
原创 小红的素数合并【牛客tracker & 每日一题】
文章摘要: 题目要求对全为素数的数组进行合并操作,每次合并两个数为乘积,直到无法操作为止,目标是最小化最终数组的极差(最大值-最小值)。解题关键在于贪心策略:将数组排序后首尾配对相乘,使得乘积值尽可能接近。对于偶数个元素直接两两配对,奇数个元素则保留中间值单独处理。通过排序和配对乘积后再次排序,计算极差即可。算法时间复杂度为O(n log n),适用于大规模数据。示例输入[2,3,5,3]通过合并为[9,10],极差为1,验证了策略的正确性。
2026-05-31 16:45:27
305
原创 P1327 数列排序【洛谷算法习题】
核心逻辑:依托置换环性质,最少交换次数=总元素数-置换环数,直接通过交换统计次数。关键操作:复制数组排序、哈希表存储元素原始位置、遍历交换完成计数。效率保障:排序+线性遍历,无冗余运算,轻松处理十万级数据规模。
2026-05-30 10:58:10
270
原创 dd爱科学2.0【牛客tracker & 每日一题】
摘要: 题目要求将基因序列修改为非递减序列,使得ASCII码差值的总改动偏移量最小。通过动态规划(DP)解决,定义dp[i][j]表示第i位修改为字母j的最小代价,利用前缀最小值优化转移过程,将复杂度降至线性。代码中预处理初始状态,逐位计算最小代价,最后取末位的最小值作为结果。示例输入AEEBC输出5,可通过改为AEEEE或ACCCC实现。算法高效处理百万级数据,核心为DP与优化策略的结合。
2026-05-30 10:50:51
558
原创 P1326 足球 【洛谷算法习题】
**摘要**:本题根据中超积分规则(胜3分、平1分、负0分),给定N轮比赛总进球S和总失球T,求可能的最大与最小积分。输入多组数据(S,T,N ≤ 1e9,组数≤3e4),输出每组的最大、最小积分。解题采用贪心策略,O(1)计算:最大积分优先安排胜利(每胜消耗1进球),剩余场次全部平局;最小积分优先安排失利(每负消耗1失球),剩余场次全部平局,避免胜利。直接利用公式计算最优胜负场数,无需遍历,高效处理超大数值和多组查询。代码实现简洁,时间复杂度常数级。
2026-05-29 20:05:11
238
原创 嘤嘤不想求异或喵【牛客tracker & 每日一题】
摘要:题目要求高效计算区间 $[l,r]$ 内整数的异或和。利用异或的前缀性质,将区间异或转化为两个前缀异或的异或值。通过发现 $1\sim x$ 异或和的4周期规律(结果为 $x,1,x+1,0$ 循环),实现 $O(1)$ 查询。代码处理 $T$ 次询问($T≤2×10^5$),每次直接调用规律函数并异或,时间复杂度 $O(T)$,配合快速IO优化,高效解决大范围数值问题。示例输入输出验证了正确性。
2026-05-29 19:55:49
654
原创 P1325 雷达安装【洛谷算法习题】
摘要: 题目描述海岸线上雷达安装问题,需用最少数量的雷达(半径固定为d)覆盖所有海上岛屿。将岛屿转化为x轴上的覆盖区间,按右端点排序后贪心选择雷达位置:在区间右端点放置雷达以覆盖尽可能多的后续区间。若存在岛屿纵坐标y>d则直接输出-1。算法时间复杂度为O(n log n),核心是几何问题转化为区间覆盖问题,通过排序和贪心策略高效求解。代码实现包括输入处理、无解判断、区间计算、排序及贪心遍历统计雷达数。
2026-05-28 17:09:05
461
原创 爱吃素【牛客tracker & 每日一题】
【摘要】题目判断两个大整数a、b的乘积是否为素数。根据数学性质,只有当其中一个数为1且另一个数为素数时才满足条件。解题关键在于避免直接计算超大乘积,转而利用数论结论:先检查是否含数字1,再对另一数进行试除法质数判定。示例代码展示了该逻辑的实现,通过sqrt(n)优化试除效率,确保算法在极大输入范围(1≤a,b≤10^11)下的可行性。输入输出样例验证了逻辑正确性,如输入"1 7"输出"YES",而"2 3"输出"NO"。该方法高效规避数值溢出,完美符合题目约束。
2026-05-28 17:04:37
445
原创 P1323 删数问题 【洛谷算法习题】
摘要: 题目P1323要求生成集合中最小的k个元素(按1→2P+1和4P+5规则递推,优先队列维护),拼接为多位数后删除m个数字使剩余数最大。解法分两步:1)用小根堆动态生成有序元素;2)贪心策略遍历字符串,每次删除首个小于后一位的字符(或末尾字符),重复m次。代码通过优先队列高效生成元素,线性扫描实现删数,时间复杂度优化,适用于k,m≤3×10^4的数据规模。示例输入5 4输出137915和95,验证了算法的正确性。
2026-05-27 12:07:21
437
原创 复杂的最大公约数【牛客tracker & 每日一题】
摘要:题目要求计算区间[a,b]内所有整数的最大公约数。当a=b时,结果为该数本身;当a<b时,由于连续整数互质,结果必为1。针对超大数输入(可达10^100),采用字符串比较而非数值计算,高效判断a和b是否相等。算法时间复杂度仅取决于字符串长度,简洁高效。
2026-05-27 12:00:33
465
原创 P1322 logo语言 【洛谷算法习题】
这篇文章介绍了一个解析LOGO语言的编程问题,要求计算海龟执行命令后的位移距离。题目涉及三种基本命令:前进(FD)、后退(BK)和重复(REPEAT),其中REPEAT命令可以嵌套其他命令。解决方案采用递归下降解析方法,通过递归函数处理命令嵌套结构,分别计算前进、后退和重复命令对总位移的影响。核心算法时间复杂度为O(n),能高效处理命令字符串。代码实现简洁,使用递归处理嵌套命令,最终输出海龟离开原点的绝对距离。该解法完美处理了所有测试用例,包括简单命令和嵌套重复命令的情况。
2026-05-26 14:03:57
461
原创 桃花【牛客tracker & 每日一题】
题目摘要: 本题要求计算一棵树上最长链的节点数,即树的直径加1。给定一棵n个节点的树,通过两次深度优先搜索(DFS)来求解:第一次从任意节点出发找到最远节点u,第二次从u出发找到最远节点v,u到v的路径即为树的直径。最终结果为直径长度加1(节点数)。算法时间复杂度为O(n),适用于大规模数据(n≤1,000,000)。示例输入输出展示了不同树结构的最长链节点数。
2026-05-26 13:54:00
492
原创 P1318 积水面积【洛谷算法习题】
摘要: 题目P1318要求计算柱状图中积水面积的总和。给定n个表示柱子高度的正整数(首尾为0),积水面积由每根柱子左右两侧最高柱子中的较小值决定。算法采用双数组预处理法:先正向遍历得到左侧最大高度数组l,再反向遍历得到右侧最大高度数组r。最后遍历所有位置,累加每个位置的有效积水量(min(l[i],r[i])-a[i]),确保结果非负。该解法时间复杂度O(n),空间复杂度O(n),高效处理n≤10000的数据规模。示例输入输出验证了算法的正确性。
2026-05-25 22:13:28
482
原创 支付宝消费打折【牛客tracker & 每日一题】
题目摘要:小苯在超市购物,有n种物品,每种只能买一件。部分物品支持支付宝九五折优惠。给定物品价格列表和优惠标识,以及支付宝余额k元,求最多能买多少件物品。解题关键在于贪心算法:优先购买实际花费最低的物品。通过将优惠价转为整数运算(支持优惠×95,不支持×100),排序后依次购买直至余额不足。算法时间复杂度O(nlogn),适用于大数据量。示例输入输出演示了最优购买策略。
2026-05-25 22:09:06
441
原创 P1313 计算系数【洛谷算法习题】
题目要求计算多项式$(by+ax)^k$展开后$x^n y^m$项的系数。通过二项式定理可知,该系数为$C_k^n \cdot a^n \cdot b^m$。解题采用递推法构建杨辉三角模拟多项式展开过程,直接计算目标项系数。代码使用二维数组递推,每一步对10007取模,最终输出指定位置的系数值。该方法时间复杂度$O(k^2)$,适用于$k \leq 1000$的数据范围,简洁高效地解决了问题。
2026-05-24 19:33:32
447
原创 dd爱科学1.0【牛客tracker & 每日一题】
摘要:题目要求将给定的大写字母基因序列修改为非递减序列,计算最小修改代价。解题关键在于将问题转化为求解最长非递减子序列(LIS),最小代价等于总长度减去LIS长度。采用贪心+二分查找算法优化,维护当前非递减序列,时间复杂度为O(nlog26),高效处理百万级数据规模。示例输入"ACEBF"的最优解是修改1个字符,输出1。
2026-05-24 19:25:41
727
原创 P1311 选择客栈【洛谷算法习题】
摘要: 题目P1311要求统计丽江同色调客栈的合法住宿方案数,要求两客栈之间存在最低消费≤p的咖啡店。解法采用线性遍历+分组计数策略,利用色调数k≤50的特性优化。核心思路是维护最近合法咖啡店位置now,对每种色调记录已出现客栈数cnt和上次合法配对位置last。当当前客栈与同色调前驱之间存在now时,累加合法方案数sum。算法仅需一次遍历,时间复杂度O(n),高效处理n≤2×10^5的大数据。代码通过实时更新now、last和sum数组,最终输出总方案数ans。
2026-05-23 19:19:54
459
原创 牛牛走迷宫【牛客tracker & 每日一题】
题目摘要: 牛牛需要在n×m的01迷宫中从(1,1)走到(n,m),0可通行1为障碍。要求输出最短路径步数及字典序最小的路径(方向字符D/L/R/U)。若不可达输出-1。解法采用反向BFS预处理各点到终点的最短距离,再从起点按字典序优先级(D→L→R→U)贪心选择移动方向,动态拼接路径字符串。示例输入2×2迷宫"01\n00"时,输出步数2和路径"DR"。算法时间复杂度O(nm),适用于500×500规模数据。
2026-05-23 19:11:46
820
原创 P1309 瑞士轮【洛谷算法习题】
摘要: 题目P1309模拟瑞士轮赛制,要求对2N名选手进行R轮比赛后,输出排名第Q的选手编号。核心算法利用归并排序优化:初始按分数排序后,每轮比赛将选手分为胜者组和败者组(各组保持有序),通过线性归并合并两组,避免全量排序。该算法将时间复杂度从O(RNlogN)降至O(RN),高效处理N≤1e5的大数据。代码实现包括初始排序、轮次模拟、胜负分组及归并合并,最终直接输出目标排名选手。
2026-05-22 20:04:55
469
原创 拼三角【牛客tracker & 每日一题】
摘要:题目要求判断6根棍子能否分成两组各3根,每组都能构成三角形。解法采用暴力枚举所有可能分组(共20种),通过二进制掩码遍历所有3根棍子的组合。对每组棍子验证三角形构成条件(任意两边之和大于第三边),若存在满足条件的分组则输出"Yes",否则输出"No"。算法高效,时间复杂度为常数级,适用于大规模输入(t≤10³)。代码使用位运算枚举子集,简洁高效。
2026-05-22 19:58:56
503
原创 P1289 磁盘碎片整理【洛谷算法习题】
该题目描述了一个磁盘碎片整理问题,要求将文件块重新排列到最佳位置。最佳存储方式是将所有文件块连续存放在磁盘前端(1~pos),其中pos是所有文件块的总数。解题关键在于统计需要移动的块数,这可以通过置换环理论来实现:每个不在正确位置的块构成一个环,环的长度即为需要移动的次数。算法首先标记已正确放置的块,然后遍历剩余块统计置换环数量,总移动次数即为所有环长度之和。时间复杂度为O(N),适用于大规模数据。最终输出最少移动次数或无需优化的提示。
2026-05-21 23:17:42
430
原创 小苯的数组构造【牛客tracker & 每日一题】
题目要求构造一个长度为n的全正数组a,满足两个条件:所有元素的按位或等于x,所有元素的按位异或等于y。解题关键在于利用位运算性质快速判断解的存在性并进行构造。 解题思路: 当n=1时,必须满足x=y才有解 异或结果y的二进制位必须全部包含在或结果x中,否则无解 利用x填充大部分元素,通过调整前两个元素使总异或等于y 特殊处理偶数长度且x=y的情况 代码实现: 检查n=1的特殊情况 验证y是否为x的子集 分情况构造数组:奇数长度直接使用y,偶数长度调整前两个元素 保证所有元素为正整数 该算法时间复杂度O(n)
2026-05-21 23:11:50
504
原创 P1281 书的复制【洛谷算法习题】
摘要: 题目P1281要求将m本有序书分配给k人抄写,每人抄写连续书且时间最短(抄写最多页数的时间)。采用二分答案+贪心策略:二分查找最小时间(左边界单书最大页数,右边界总页数),通过从后往前贪心分配验证可行性。找到最短时间后,再次反向划分书籍确保前面的人少抄写,最后反转输出分配区间。算法高效,时间复杂度合理,完美解决书籍分配问题。
2026-05-20 11:53:56
443
原创 小红的“质数”寻找【牛客tracker & 每日一题】
这篇文章介绍了一个寻找质数数位和的算法问题。题目要求对于给定的正整数x,在区间[x,2x]内找到一个数位和为质数的数字。文章提出了高效的构造法解决方案,通过预处理0-9数字的最小质数数位和映射表,直接修改输入数字的首位为表中对应值并补零,快速生成符合条件的解。该方法避免了暴力遍历,时间复杂度为O(n),能高效处理大规模输入数据。示例代码展示了如何实现这一算法,通过字符串操作快速构造答案。
2026-05-20 11:42:52
466
原创 P1280 尼克的任务【洛谷算法习题】
题目摘要:尼克需要选择任务以获得最大空暇时间。给定n分钟工作日和k个任务(每个任务有开始时刻和持续时间),当同一时刻有多个任务时尼克可任选一个。采用逆序动态规划,定义dp[i]为从第i分钟开始的最大空暇时间。从后往前遍历:若无任务则空闲时间+1;有任务则选择使空闲时间最大的任务。时间复杂度O(n+k),适用于n,k≤1e4的数据规模。代码使用分组存储任务和逆序DP计算,最终输出dp[1]即最大空暇时间。
2026-05-19 20:16:03
440
原创 小苯的刷怪笼【牛客tracker & 每日一题】
题目要求构造一个怪物血量分配方案,使得小红使用恰好k次攻击消灭所有怪物。解题关键在于确定k的合法范围并构造相应序列。 解题思路: 攻击次数k必须满足a ≤ k ≤ 2a - n,否则无解 构造方案时先给所有怪物分配1点基础血量 剩余血量s = a - n用于调整攻击次数 通过合理分配剩余血量,使最优攻击次数恰好等于k 核心步骤: 检查k是否在合法区间 初始化全1序列 分配剩余血量构造满足条件的序列 时间复杂度:O(n),适用于大规模数据。 示例说明: 输入3 8 5时,输出3 3 2(总血量8,最优攻击次数
2026-05-19 20:03:41
466
原创 P1279 字串距离【洛谷算法习题】
摘要:本题求解两个字符串的最小扩展匹配距离,采用动态规划方法。定义dp[i][j]为字符串A前i个字符与字符串B前j个字符匹配的最小距离。状态转移考虑三种情况:字符直接匹配、字符与空格匹配(代价为K)、空格与字符匹配。初始化边界条件为全空格匹配的代价。算法时间复杂度O(n²),适用于长度≤2000的字符串。代码实现使用二维DP数组,通过三重比较取最小值,最终输出最优解。
2026-05-18 20:01:41
413
原创 小红勇闯地下城【牛客tracker & 每日一题】
摘要: 题目描述小红在地下城中寻找从起点S到终点T的路径,期间会遇到不同战斗力的怪物消耗血量。给定n×m的网格地图和初始血量h,判断是否存在一条路径使小红到达终点时血量保持正值。解题核心是使用SPFA算法计算起点到终点的最小累计伤害路径,若最小伤害小于初始血量则输出"Yes",否则输出"No"。算法通过队列优化广度优先搜索,高效处理网格移动和伤害累计,时间复杂度适应题目约束条件。示例输入输出验证了算法的正确性。
2026-05-18 19:51:10
495
原创 P1259 黑白棋子的移动 【洛谷算法习题】
摘要: 题目P1259要求将2n个黑白棋子(初始左白右黑)通过特定规则移动,最终形成黑白相间排列。规则要求每次移动相邻两子到空位,不能调换顺序。解题采用递归分治策略:当n=4时执行固定5步移动;n>4时先统一移动两步缩小规模,再递归处理。代码用字符串数组模拟棋盘状态,移动函数实现棋子交换,递归调用逐步输出移动过程。该方法高效简洁,严格遵循题目规则,适用于4≤n≤100的范围。
2026-05-17 22:03:01
496
原创 逃跑路线【牛客tracker & 每日一题】
题目要求计算牛牛n次逃跑后横坐标与连续位掩码的与运算结果。通过数学化简发现该结果等价于总位移和的奇偶性。由于输入数字可能极大(长度达1e4),直接求和不可行。解题关键在于:只需累加每个数字的最后一位(决定奇偶性),然后对2取模即可。算法高效处理超大数输入,时间复杂度仅与数字长度相关。示例输入3次位移(1,2,1)总和为4,取模2得0,与输出一致。
2026-05-17 21:55:28
771
原创 P1256 显示图像【洛谷算法习题】
题目摘要: 给定一个N×M的01矩阵(1表示白色像素),要求计算每个像素点到最近白色像素点的曼哈顿距离(|x1-x2|+|y1-y2|)。使用多源BFS算法,从所有白色像素点同时出发,逐层扩展并标记距离,确保每个点的距离值为最短。算法时间复杂度为O(N×M),适用于N,M≤182的数据规模。 输入输出示例: 输入3×4矩阵0001 0011 0110,输出每个点的最短距离矩阵: 3 2 1 0 2 1 0 0 1 0 0 1 核心思路: 初始化:将所有白色像素(1)加入队列,距离设为0。 BFS扩展:从队列
2026-05-16 20:53:10
534
原创 异或【牛客tracker & 每日一题】
摘要:题目要求计算区间[a,b]和[c,d]中随机选取两数异或结果为0的概率。关键思路是两数异或为0等价于两数相等,因此转化为求两区间交集长度与总情况数的比值。算法步骤包括:1)计算两区间交集长度;2)总情况数为两区间长度的乘积;3)用gcd化简分数。时间复杂度O(1),适用于大数输入和多组测试数据。示例输入1输出0/1(无交集),输入2输出1/4(交集长度为1,总情况数为4)。代码简洁高效,直接处理输入并输出最简分数。
2026-05-16 19:55:05
711
原创 P1250 种树【洛谷算法习题】
题目摘要: 给定n个区域和h个居民的种树要求,每个居民要求在区间[b,e]内至少种t棵树。求满足所有要求的最少树木数量。 解题思路: 采用贪心算法,将区间按右端点排序,优先处理右端点小的区间。对每个区间,从右往左补种树木,确保树木能被后续区间复用,从而最小化总种树量。 算法特点: 时间复杂度:O(mn),适用于n≤3×10⁴,h≤5×10³的数据规模 关键步骤:区间排序、统计已种树木、逆向补种 结果保证:贪心策略确保全局最优解 输入输出示例: 输入:9个区域,4个居民要求[(1-4,2),(4-6,2),(
2026-05-15 19:24:09
481
原创 牛牛爱数学【牛客tracker & 每日一题】
摘要:题目要求判断是否存在正整数d满足方程a²d²+b²c²=2abcd。通过完全平方公式化简得到ad=bc,即d=bc/a。解题关键在于判断bc能否被a整除:若能整除则输出商作为d,否则输出-1。算法时间复杂度O(1),可高效处理最多10⁵组测试数据。代码实现简洁,直接计算并验证整除性即可得出结果。
2026-05-15 18:53:55
482
原创 P1243 排序集合【洛谷算法习题】
题目P1243要求对集合{1,2,...,n}的子集按字典序排序后,输出第k小的子集。解题思路是将子集排序问题转化为二进制计数:空集为第1小,其余子集通过遍历数字1到n,计算每个数字后方可组成的子集数(2^(n-i))来判断是否属于目标子集。若剩余排名k小于等于该值,则包含该数字并继续处理;否则跳过。特判空集输出0,其余情况按规则筛选元素后输出。算法时间复杂度O(n),高效处理n≤31的数据范围。
2026-05-14 19:19:14
574
原创 纪年【牛客tracker & 每日一题】
摘要: 题目要求根据干支纪年法计算任意年份n对应的天干地支编号。天干(1-10)和地支(1-12)分别以10和12为周期循环。已知2018年为戊戌年(5,11),通过数学推导得出通用公式:天干编号=(n+7)%10(模0时取10),地支编号=(n+9)%12(模0时取12)。算法采用纯数学计算,时间复杂度O(1),高效处理n∈[0,10¹⁸]的输入,完美解决超大年份查询问题。代码简洁,仅需取模运算和边界调整即可快速输出结果。
2026-05-14 19:10:19
446
信息安全实验指导doc文档【实验三 木马攻防】.docx信息安全基于C/S架构的木马攻防技术研究:高校实验环境下远程控制与手动查杀实践
2026-02-27
操作系统课程设计报告模板.docx【计算机科学】操作系统课程设计报告撰写规范:设计方案与实现结果分析教学指导
2026-02-08
项目开发文档-手写体数字签名小程序.docx【人工智能应用】基于CNN的手写数字签名识别系统:Python与PyQt5开发的离线签名认证小程序设计
2026-03-04
计算机视觉方向项目主题【选题内容与要求】.pdf【计算机视觉】基于深度学习的图像识别系统设计:人脸识别与目标检测应用开发
2026-03-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅