01 2024 档案
摘要:原题链接:https://www.luogu.com.cn/problem/P1088 题意解读: 火星人的手指可以通过全排列来表示数字,全排列由小到大的顺序即为表示的数字大小,题目可以转化为: 给定按顺序全排列中的某一个排列,求往后数m个排列的内容。 解题思路: 此题与经典全排列问题的差异在于,需
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1706 题意解读:n个数全排列问题,本质上,给定n个空位,枚举每个能填入空位的数,依次填入,每个数只能填一次。 解题思路: 如何填入n个数呢,可以借助于递归,流程如下: dfs(填入第k个数) { 如果已经填满n个数 输
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1157 题意解读:在1~n的数中挑选r个,有多少种组合,与P1036类似,有两种做法:二进制法、DFS,下面给出DFS版的代码。 100分代码: #include <bits/stdc++.h> using namesp
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1036 题意解读:题目即要在n个数中,枚举出所有的子集,当子集中数字个数刚好为k时,求和,判断是否是素数。 解题思路: 方法一:二进制法 通过二进制法,可以枚举一个集合中所有元素“选”或者“不选”的情况,用二进制1表示选
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1618 题意解读:枚举所有三位数的组合情况,判断是否符合比例。 解题思路: 方法一:枚举第一个数 根据题意,目的是寻找三个符合比例的三位数,可以直接枚举第一个,最小是123,最大是987 设第一个数为x,三个数的比例关系
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2089 题意解读:枚举所有情况,记录符合美味程度要求的即可。 解题思路: 有两种枚举方法:循环枚举、DFS暴搜 很显然,循环枚举需要十重循环,代码过于丑陋,下面只介绍DFS的方法: 只需要一个大小为10的数组记录某一种调
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2241 题意解读:要在整个n*m区域计算正方形和长方形的个数,枚举法即可。 解题思路: 此题枚举的对象是矩形的高i和宽j,高的范围[1, n],宽的范围[1, m],然后计算在n * m区域内有多少个i * j,i==j
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1012 题意解读:通过某种合理的排序方式,使得排序后的数字连在一起最大。 解题思路: 此题关键在于排序,对于两个数字,哪个数字应该排在前面呢? 1、思考误区 很容易想到,给定两个数abcd、xyz,先比较第一位a和x,谁
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1104 题意解读:将学生按照年龄由大到小排序,如果年龄相同,后输入的排在前面,输出排序后的学生姓名。 解题思路: 此题是一个排序常规题,年龄大排在前说明年、月、日越小越在前面,核心的排序思路如下: 1、如果年份不同,按年
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P5143 题意解读:给出一系列的点,按某种顺序经过所有点,计算距离。 解题思路: 如果小学生,可能对于三维坐标距离有些陌生,没关系,题目已经给出了计算公式,直接套公式即可,关键步骤如下: 1、读取所有坐标点 2、按高度值从
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1068 题意解读:根据题意,用模拟法,求出分数线所在位置,然后计算分数线,最后输出结果即可。 解题思路: 1、分数线是按从大到小排名来设定,因此数据因为按照分数从大到小排序,如果分数相同,需要安装报名号从小到大排序 2、
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1152 题意解读:要判断相邻数差的绝对值是否覆盖1~n-1,只需遍历相邻两数之差,借助数组标记差的绝对值是否存在,然后遍历数组即可。 解题思路: 此题有两个注意点: 1、数值要用long long 2、计算差值绝对值后,
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1116 题意解读:由于只能交换相邻的两节车厢,因此只能采用冒泡排序法,记录冒泡排序过程中交换的次数即可。 100分代码: #include <bits/stdc++.h> using namespace std; con
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2676 题意解读:要使能够到书架顶的牛数量最少,优先选高的牛即可,直到总身高超过书架高度,简单的排序+贪心,下面给出代码。 100分代码: #include <bits/stdc++.h> using namespace
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1781 题意解读:题目思路非常简单,在n个投票数中选最大的,并记录其编号即可,由于投票数很大,无法直接用整形,需要通过string来进行数字比较。 解题思路: 本题的关键在于如何比较string数字的大小?在高精度减法时
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1093 题意解读:本题考察排序,根据题意,先按总分从大到小排,再按语文从大到小排,以上都相同则按学号从小到大排。 100分代码: #include <bits/stdc++.h> using namespace std;
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1059 题意解读:此题主要做两件事:排序+去重,用计数排序即可解决,直接给出代码。 100分代码: #include <bits/stdc++.h> using namespace std; const int N =
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1923 题意解读: 要最快的求第k小的数,O(n)的做法是利用快排的思想对数据进行划分 第一步、取分界点x,通常设x = a[(l + r) / 2] 第二步、将小于等于x的挪到x左边,将大于等于x的挪到x右边 第三步、
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1177 题意解读:数据量为100000,必须用小于等于N*logN复杂度的排序算法,可以直接用sort,更重要需要掌握快速排序的过程。 知识点:快速排序 设定数组q[n],l,r 第一步:确定分界点x 可以取q[l]、q
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1271 题意解读: 最直接的计数排序问题,借助一个桶h[N],对被投票的候选人x执行h[x]++,再按顺序遍历输出即可。 100分代码: #include <bits/stdc++.h> using namespace
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1045 题意解读: 要计算2p- 1的位数和最后500位,实际上只需要计算2p,两者位数一致,前者比后者个位减1即可,且个位肯定不会是0,比较容易处理。 解题思路: 一、朴素做法 如果直接采用高精度乘法计算2p,p最大3
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1249 题意解读: 题目分两步,第一步是将整数拆分成不同自然数的和,第二步通过高精度计算这些因数的乘积,要使乘积最大,需要某种贪心思想。 解题思路: 如何保证整数拆分后因子的乘积最大呢,有几个原则: 1、最好不要包括因子
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1591 题意解读:此题核心就是通过高精度*低精度计算阶乘,然后统计数码个数即可,直接给出代码。 100分代码: #include <bits/stdc++.h> using namespace std; vector<i
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1786 题意解读: 此题比较简单,模拟+排序即可解决。需要注意的是,当帮贡或者等级相同时,都要保持原来的顺序,因此需要记录每个人的编号,便于排序。 话不多说,直接上代码。 100分代码: #include <bits/s
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1065 题意解读:此题也是典型的模拟法,稍微带一点贪心的思路,题目已经明确了三个最关键的约束条件: 1、对同一个工件,每道工序必须在它前面的工序完成后才能开始; 2、同一时刻每一台机器至多只能加工一个工件; 3、在给机器
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1098 题意解读: 题目本身是一道模拟题,但是细节点较多,要拿100分,有以下注意点: 1、-号两个需要同时为小写字母或者数字,才进行填充 2、-号左边>=右边,直接输出- 3、对待填充的内容的处理,可以先看是否填充*;
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1067 题意解读: 模拟法依次输出多项式内容即可,但是需要考虑的周全,主要有以下关键点: 1、系数为0时不输出多项式 2、第一个符号,只有负号才输出 3、次数不为0时,不输出为1的系数;次数为0时,输出所有系数 4、次数
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/solution/P1518 题意解读: 此题是一道模拟题,关键要解决几个问题:1、如何转换方向 2、如何在地图中移动 3、如何判断无法抓住牛。 解题思路: 定义char a[10][10]用于存储地图,cx,cy和fx,f
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1328 题意解读: 非常简单的一道题,核心考点就是循环数组以及评分规则的构建。 评分规则: 甲vs乙,1表示甲赢,-1表示甲输,-0表示平 转化为数组: int rule[5][5] = { 0, -1, 1, 1 ,-
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4924 题意解读: 根据题意,通过模拟法,枚举每一个要旋转的矩阵,执行旋转操作即可,关键点在于如何进行矩阵旋转。 设定矩阵int a[][], 临时矩阵int t[][]用于保存旋转后的矩阵,矩阵长度为len。 先考虑要
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1009 题意解读: 利用高精度计算阶乘之和,需要用到高精度乘法(高精度乘低精度)、高精度加法。 首先,思考不利用高精度如何解题,直观方法就是遍历i从1到n,每次乘i得到i的阶乘,然后累加到结果,代码如下: #includ
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1303 题意解读:本题是高精度乘法的模版题。 知识点解析: 高精度乘法: 与高精度加法类似,需要用数组来存储数字的每一位,然后通过数组逐位的运算来模拟乘法的过程。 这里有几个关键问题: 1、整数的存储 同高精度加法,参考
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1601 题意解读:本题是高精度加法的模版题。 知识点解析: 高精度加法: 如果一个数大到远超过整形变量的范围时,就不能使用int、long、long long等变量来存储整数,也不能直接通过变量加法来求和。 因此,需要回
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1563 题意解读: 本题关键在于根据小人的朝向和寻找的方向来确定数组下标的变化。 用数组存储小人,int d[]存朝向,int a[]存名称,朝向和寻找方向有4种组合: 朝向(0:向内,1:向外) 寻找方向(0:左,1:
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2670 题意解读:模拟法即可。对于每一个格子,如果是地雷则直接输出*,否则计算周围有几个地雷,再输出。 100分代码: #include <bits/stdc++.h> using namespace std; cons
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1042 题意解读: 分别针对11分制和21分制,输出每局比分。只需要判断一局的结束条件:得分高者如果达到11或者21,且比分间隔大于等于2分,则表示一局结束, 可开始下一局,用模拟法即可解决。 100分代码: #incl
阅读全文