随笔分类 - Algorithm
算法,ACM
摘要:1、题目类型:模拟、暴力法。2、解题思路:(1)根据输入建立跳点的pos[]数组和标识位置的map[][]矩阵;(2)对跳点按照其横坐标进行排序;(3)暴力法遍历排序好的的跳点比较获得最大的步数,时间复杂度为nlog(n)。3、注意事项:注意青蛙从区域的外面跳入,必须沿着直线方向跳出区域。4、实现方法: [代码]
阅读全文
摘要:1、题目类型:模拟、贪心。2、解题思路:(1)根据输入的map[][]从左往右逐列、从下往上逐列BFS寻找并标记最大块;(2)对最大块进行删除操作,并更新map[][];(3)知道map[][]中节点删除完毕或者无法再删除,则输出总得分。3、注意事项:注意运用scanf()获得输入字符串、cin.getline() WA了好些次。4、实现方法: [代码]
阅读全文
摘要:1、题目类型:字符串、置换群。2、解题思路:(1)根据输入n个编码的顺序分别记录每单个字符置换的周期,记录为Cy[i];(2)编码次数k对Cy[i]分别进行求余,余数即为此字符k次置换后的位置。3、注意事项:注意不可对整个序列求周期(此时的周期为n个单个字符周期的最小公倍数),否则TLE。4、实现方法: [代码]
阅读全文
摘要:1、题目类型:图论。2、解题思路:(1)根据输入建立图的vector邻接表;(2)vector连接表中寻找度为 1 的点,并其连接点一起标示为同一双sock,直到vector中所有顶点全部标示,否则输出'NO';(3)对所有成双的sock按照其标号小的进行排序,并依次输出。3、注意事项:注意题意理解,题中说说的是将所有成双的sock按序输出,而不是单个输出其最小的两双。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:图论、最大流、Edmonds_Karp算法。2、解题思路:(1)根据建立图的连接矩阵,并记录被匹配男生的总数目cnt;(2)判断cnt与男生数目的大小,如果cnt小则表示不可能完成任务,直接 impossible;(3)由最小可能party数目开始遍历,每次女生的输出容量加加,直到Edmonds_Karp寻找最大流等于男生数目即找到了最佳答案,否则impossible。3、注意事项:...
阅读全文
摘要:1、题目类型:迷宫、BFS。2、解题思路:(1)cin.getline()接收迷宫;(2)BFS搜索其开始位置 'S' 和其结束位置 'E' 并记录两者间的总步数、横向移动步数;(3)根据搜索答案判断其是否满足题意,满足输出结果。3、注意事项:注意一定存在最短路径、找到符合题意答案即输出。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:DP。2、解题思路:(1)建立DP[i][j][k]表示键盘输入第k 个数字时的最短按键次数,此时的i 表示the left finger的位置、j 表示the right finger 的位置;(2)DP遍历所有的情况,结束位置(即DP[i][j][len]列),寻找代价最小的情况。3、实现方法:[代码]
阅读全文
摘要:1、题目类型:图论、最大环、DFS。2、解题思路:(1)建立图的连接矩阵;(2)类似于求解强连通分量(Trajan算法)利用时间戳DFS最大环。3、注意事项:注意宏定义常量的大小,预防MLE。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:数论、物理。2、解题思路:(1)根据物理公式S=V*t+0.5*a*t*t 换代求的t、v的表达式;(2)据题意条件输出。3、注意事项:注意0.0 ≤Xu < Xo ≤1000.0 and 0.0 ≤Yu, Yo ≤800.0.这样题意确定了shot轨迹,而不用考虑多种情况;Pi 的精度需控制在1E-9左右;输出判断时候注意never exceed 30...
阅读全文
摘要:1、题目类型:DP。2、解题思路:(1)建立DP[i][j]表示第 i 次移动到达第 j 个单元格的最大收益;(2)遍历移动结束位置(即DP[i][N+1]列),寻找最大收益。3、实现方法:[代码]
阅读全文
摘要:1、题目类型:模拟、DFS。2、解题思路:类似八皇后问题的DFS。3、注意事项:注意DFS内部剪枝,以提高运行时间效率。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:模拟、迷宫、DFS。2、解题思路:(1)将输入转换为Maze[][],并记录开始位置2,结束位置3;(2)模拟,按题意要求DFS寻找最优解。3、注意事项:注意DFS但step大于10时返回,否则程序超时;DFS中发生碰撞后,注意更新Maze[][]。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:模拟、迷宫、BFS。2、解题思路:BFS的三维Maze[][][]应用,其每步存在前后、左右、上下6个方向的选择。3、注意事项:BFS入队列的条件判断。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:模拟、迷宫、DFS、BFS。2、解题思路:经典DFS、BFS的运用:(1)根据输入的字符型Maze[][]转换为整型的map[][],并记录开始位置S,结束位置E,以及开始S的方向;(2)先进行左边优先搜索,传入左边优先的条件进行DFS搜索;再进行右边优先搜索,传入右边优先的条件进行DFS搜索,分别记录其移动步数;(3)BFS搜索获得最少移动步数。3、注意事项:注意DFS中break...
阅读全文
摘要:1、题目类型:字符串、map、trie树。2、解题思路:(1)根据输入建立map字典或者trie树;(2)输入str即查找字典中是否存在该str。3、注意事项:注意对于单行空白的处理。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:数论、排序、哈希表。2、解题思路:(1)将-50...50所有整数的3次幂打表;(2)降低运算数量级,将等式分为两部分,这样就由5维操作转换为3维和2维;(3)对保存的3维数据、2维数据的数组结果进行排序,便于后续的比较;(4)对两个数组进行匹配,寻找等值,其中注意处理相邻多个值相等的情况。3、注意事项:注意遇到相邻情况相等,需彼此加加;输出应为长整型;此题在寻找相等数值时可用哈希表...
阅读全文
摘要:1、题目类型:DP、概率论。2、解题思路:题意,一次比赛中,共M道题,T个队,p[i][j]表示队i解出题j的概率;问每队至少解出一题且冠军队至少解出N道题的概率。步骤,(1)将输入转换为map[i][j]表示第i队求解第j题的概率;(2)根据map[][]建立DP[i][j][k]表示第 i 队在前 j 题中求解 k 题的概率;(3)所有队求解大于1题的概率减去所有队都没有求解N题的概率即为结果...
阅读全文
摘要:1、题目类型:字符串。2、解题思路:字符串匹配,在字符串t中单个字符寻找s,单个字母匹配则i++;3、注意事项:匹配区分大小写。4、实现方法:[代码]
阅读全文
摘要:1、题目类型:图论、最大流、Edmonds_Karp算法。2、解题思路:(1)根据输入构建G[][]矩阵,注意machine的各part进入和输出状态,必须Judge成功才允许存在边的连通;(2)添加源点和结点,源点与所有输入part状态全为0的machine相连,结点与所有输入part状态全为1的machine相连;(3)运用Edmonds_Karp算法求解最大流。3、注意事项:G[][]的建立...
阅读全文
摘要:1、题目类型:图论、最大二分匹配、匈牙利算法。2、解题思路:(1)计算 '*' 的总数cnt,对每个'*' 的上下左右进行遍历构建gra[][];(2)匈牙利算法求解最大点集覆盖的最大二分匹配;(3)用总数cnt减去匹配数除以2即为答案。3、注意事项:注意gra[][]的大小。4、实现方法:[代码]
阅读全文

浙公网安备 33010602011771号