题目简述 在 $8 \times 8$ 的点网格上,一个由小写拉丁字母组成的单词从上到下垂直地写在一列中。你需要找到他并输出 题目分析 由题意可得,网格中只会有一个单词,所以只需要自上而下遍历网格,如果是字母就输出即可。 Code #include <bits/stdc++.h> using namespace std; #define ll long long #define int...
题目简述 在 n 个回答中找到长度不超过 $10$ 且质量最高的回答。 题目分析 就是个普通模拟,如果 a_i\le 10,就打擂台找最大质量,更新序号。 Code #include <bits/stdc++.h> using namespace std; #define ll long long #define int ll const int MaxN = 1e6 + 100;...
看到讨论区都是二分,实际上这道题用贪心来写非常简单 题目分析 首先将当前塔台的位置加上通讯距离(即 a+b )看作为右边界,通过题目不难得出一个贪心策略:如果当前塔台 i 能到达的最右边界比往后的塔台 i+m 位置还要靠右,就可以忽略塔台 i+1 到 i+m。转化一下,我们只需要每次记录可以到达的最右边界,如果当前塔台的位置不在最右边界的范围内,就可以更新答案取超频的最大值。 因此,我们...
其实就是个模拟题,按题意模拟即可 题意简述 题意可以理解为有三个人个人在 $3\times3$ 的方格中下井字棋,如果三个相同的棋子连成一条线,就可以判定输赢。如果没有人赢则输出 DRAW 。 分析 连接的方式可分为三类:横行、竖列、对角线。共八种情况,所以只需要判断是否满足这八种情况然后输出即可。注意在判断的时候要排去 . ,不能把空行也算作一种。具体可看代码。 代码 inline void S...
搜索 搜索就是对状态空间进行枚举来查找所有种可能来找到问题的最优解或可行解的个数。搜索一般时间或空间复杂度很高,所以有很多优化方法,如记忆化、减枝等。 注意 不同的搜索题目大都不相同,DFS/BFS两种算法更像是方法,要理解它的思想并灵活运用,死套模板是没有用的。要根据不同的问题来选择更好的方法来解决。 一.DFS 深度优先搜索 定义 一种用于遍历或搜索树或图的算法(俗称 不撞南墙不回头算法 ) ...
递归 概念 递归,在数学和计算机科学中是指在函数的定义中使用函数自身的方法,在计算机科学中还额外指一种通过重复将问题分解为同类的子问题而解决问题的方法。 本质 递归的实质就是直接或间接调用自身函数,将原问题转化为性质相同规模不同的子问题。 递归代码最重要的两个特征:结束条件和自我调用。自我调用是在解决子问题,而结束条件定义了最简子问题的答案。 主要格式 int func(传入数值) { if ...
题意简述 给定两个长度为 n 的数组 a,b。 重排数组 b,使得 |a_i-b_i| 的值尽可能小且 |a_i - b_i|\le k。 保证有解。 分析 因为这道题是保证有解的,所以在 |a_i - b_i| 的值最小的情况下,|a_i - b_i|\le k 这个条件是不必要的。可得本题做法为怎样重排 b 数组,保证 |a_i - b_i| 的值尽可能小。显然,通过简要...