每日刷题训练
文章平均质量分 66
华农的小码农
这个作者很懒,什么都没留下…
展开
-
图论复习(最短路、最小生成树)
在建图时,记录每个节点的入度,首先把入度为0的点都存到队列里。然后在搜索时,每搜到一个点,就把这个点的入度 -1 ,当它的入度变为0时,就把它存到队列里。直到队列里全部的点都搜索完。这时要判断一下是否所有的点的入度都为0了。如果是,那么就找到了一个拓扑序列;否则就没有找到。原创 2024-03-18 17:51:31 · 2559 阅读 · 0 评论 -
第十二次CCF-CSP(Crontab、行车路线)
通过这道大模拟题,我学到了很多巧妙的方法。stoi(s)可以把字符串 s 直接转换为整数!tolower(c)可以把字符 c 转为小写toupper(c)把字符 c 转为大写结构体构建的巧妙!!!bool数组的巧妙利用!!!哈希表的映射!!!y总nb!!!对于优先队列,不能只会用它默认的形式,还有会把它和结构体结合起来。下面代码的意思是,构造一个优先队列 q ,其中按照 z 值的大小,从小到大排序!!!因为优先队列默认是大根堆!所以重载 < 时,return >才会是从小到大排序!原创 2024-03-11 21:37:13 · 738 阅读 · 0 评论 -
第十次CCF-CSP(Markdown、地铁修建)
对于题意:假设修建地铁最少需要 mid 天,若在所有施工公司中修建天数小于 mid 天的公司中选取 1–n 个公司,可以使得节点1和节点n连通。所以我们可以写两个函数,一个处理区块,一个处理区块中的每一行。所以本题本质上是考察二分和BFS(最短路问题)。给定一个无向图,有n个节点,m条边。(最大的最小—可以联想到二分)则此时的mid符合题意。输入数据不知道怎么处理。怎么找到每一个区块?强调中 嵌套超级链接。超级链接中 嵌套强调。原创 2024-03-10 17:14:39 · 1244 阅读 · 0 评论 -
刷题日记 2024_2_26
输入数据的小技巧substr的用法substr(a,b) 表示从字符串下标a开始截取b个substr(a) 表示从字符串下标a开始全部截取在for循环中j--, k++)和j--, k++)不一样!!!因为:在这个循环中,是循环继续执行的条件。这里使用了逗号操作符,这意味着j > 0这个表达式会被执行,但它的结果不会用来决定循环是否继续。循环继续执行的唯一条件是。逗号操作符允许在一个表达式的位置执行多个表达式,但只有最后一个表达式的结果会被用于逻辑判断。原创 2024-02-26 17:04:14 · 344 阅读 · 0 评论 -
刷题日记 2024_2_3
再回到题目中来,对于下面的输入数据又该怎么处理呢?(要怎么把抽象的符号和步数(整型)联系起来?由题可知,斜线代表电路。首先要明确一点:图中格子的坐标和点的坐标是不一样的。(可以用dijkstra的算法解决)以及格子的关系如下:(按照。那么问题就转化为了,原创 2024-02-03 16:43:56 · 380 阅读 · 0 评论 -
刷题日记 2024_2_2
简单来说,这道题是也是bfs的搜索题。跟模板题不太一样的地方是,这道题不是搜索二维矩阵上某两点或多点之间的距离,而是某种状态到另一种状态之间的“距离”,且要打印输出具体过程。所以需要利用不同的数据结构来存储中间不同的状态。这道题虽然思路不难,但是代码实现还是有点复杂,尤其是没有想到这种巧妙的数据结构之前。到这里基本的代码都已经解决了,还有最后一个问题:怎么打印输出操作序列?为了方便我们可以把2*4的魔板用一位字符串来表示。原创 2024-02-02 21:40:53 · 394 阅读 · 0 评论 -
刷题日记 2024_1_31(2)
这道题整体思路也比较清晰,但是实现起来有一个比较坑的点:bfs的时候,这道题整体思路也比较清晰,但是实现起来有一个比较坑的点:bfs的时候,还有,如果整个矩阵是一个连通块,那么这个既是山谷又是山峰。所以,我们需要在找连通块的同时,比较这个连通块和周围的大小。分别用来统计连通块周围的比它小的,和比它大的数的个数。应该放在比较大小的那段代码的下面!我的思路是,设置两个变量。这段代码应该放到哪里?这段代码应该放到哪里?原创 2024-01-31 20:01:14 · 345 阅读 · 0 评论 -
刷题日记 2024_1_31
不难看出,这道题其实也是一个求连通块的问题。比较不同的点是这个题目的输入数据稍微复杂一点。每一个元素代表一个房间四周墙的分布情况((因为x表示行方向,y表示列方向,所以当dx=0,dy=1时,坐标会往左移一位,也就是往西移动))由此可以看出,我们可以利用二进制数的思想,来判断一个房间四周是否有墙(是否连通)。数组的顺序也随之确定了。(dx,dy数组是表示某元素的相邻的四个方向的元素)我们按照题目上给出的顺序来(0123 分别代表西北东南)。如果是1 就说明 这个方向是有墙的,0就说明没有墙。原创 2024-01-31 15:06:27 · 327 阅读 · 0 评论 -
刷题日记 2024_1_30
容易看出,这是一道搜索题,题目要求是找到连通块的个数。由于是8连通的,所以对于每一个点,可以向8个方向遍历。所以,整体思路就是:用两重循环遍历字符矩阵,然后对于每一个字符,如果是’W’且没有被遍历过,就以它为起点使用。搜索算法进行搜索,最后计数器cnt++,即找到了一个连通块。原创 2024-01-30 22:58:27 · 164 阅读 · 1 评论 -
导弹防御系统——dfs+最长上升子序列思想
读题之后可以发现,该题并不能简单的套模板就能解决的。因为对于每一个元素,是把它放在当前的上升子序列中 还是下降子序列中,是不确定的。所以,只能都试一试,也就是爆搜。原创 2023-05-07 16:56:16 · 133 阅读 · 0 评论 -
拦截导弹(DP-最长上升子序列 + 狄尔沃斯定理)
中元素的数目必等于最小链划分中链的数目。此定理的对偶形式亦真,它断言:对于任意有限偏序集,其最长链中元素的数目必等于其最小反链划分中反链的数目。原话为:对于任意有限。原创 2023-05-07 16:55:42 · 104 阅读 · 0 评论 -
登山(DP问题-最长上升子序列)
那么,我们可以利用dp的思想,求得把每个点看做拐点所能得到的最长子序列,然后求出最大值即可。给定一数组,需要找出最长的子序列,该子序列满足(也就是说,我们可以分别求出,原创 2023-04-13 11:10:59 · 110 阅读 · 0 评论 -
飞机降落(dfs+贪心思想)
利用全排列的思想,对所有的线段进行搜索(首先解释一下,为什么不能直接贪心来做?,使得每条线段都不相交!需要我们来判断是否可以。那么要怎么dfs呢?原创 2023-04-13 10:58:36 · 180 阅读 · 0 评论 -
方格取数(DP问题)
那么,我们就可以用一个三维的dp数组来表示A,B每个时刻的坐标!因为,第一次走为局部最优并且也对第二次走造成了影响。不具备“无后效性”,因此分开两次走并不是全局最优解。所以,第二次走是在第一次影响下所能走的局部最优,为什么不能用贪心的思想?既然不能分开走,那么我们就要让。怎么保证 A , B 同时走?假设某一时刻A,B坐标分别为。易知,A,B的纵坐标分别为。(假设有两个人A,B)表示某时刻A的横坐标,表示已经走过的路程,原创 2023-04-13 10:33:00 · 88 阅读 · 0 评论