- 博客(30)
- 收藏
- 关注
原创 「逻辑推理」AtCoder AT_abc401_d D - Logical Filling
既然这是一道逻辑推理题,我们就回归做数学的思想,用人类思维解决它。
2025-04-12 22:11:23
491
2
原创 【题解】AtCoder At_abc399_d [ABC399D] Switch Seats
这道题难度不大,个人感觉是普及提高−\color{gold}普及/提高-普及提高−左右。最后,希望这篇题解对你有帮助,如有想法欢迎评论或私信提出!
2025-03-29 22:23:57
1082
1
原创 AT_abc398_f [ABC398F] ABCBA
观察样例三,容易发现只要寻找到一个合适的“对称轴”即可。可以考虑枚举对称轴位置,判断然后得到长度并计算答案串。但是这样显然会超时。我们可以考虑使用哈希算法来优化,注意需要维护正序哈希和逆序哈希,建议把。为前缀的最短回文字符串。
2025-03-22 21:45:42
224
原创 AT_abc398_e [ABC398E] Tree Game
交互题,难度不大,主要是数据范围太小。容易得到连边顺序不影响结果,直接找出所有可以连边二元组,考虑个数奇偶性决定是否先连边。每一次把高桥的边的二元组删去,随便选一个输出即可。
2025-03-22 21:45:30
223
原创 AT_abc398_d [ABC398D] Bonfire
显然,逐一枚举维护的时间复杂度是不堪设想的。我们可以发现,每一次更新的时候原点处会重新冒烟,接下来向周围飘。发现这个规律之后开一个哈希表或者容器维护即可。秒,所有有烟的点(先不说原点)为执行第。
2025-03-22 21:45:19
342
原创 AtCoder Beginner Contest AT_abc395_e ABC395E Flip Edge 题解
读入:正反边存一个图,标注清楚。日元,反转费 + 走路费)。时这个点是从正向边过来的,日元),要么反之(花费。
2025-03-01 22:36:44
283
1
原创 AtCoder Beginner Contest AT_abc395_d ABC395D Pigeon Swap 题解
在谎言中迷茫,试图躲避瓶颈。可惜细节太多,浪费五发罚时。一个绿名用户,被出题人卡住。八十六分钟多,才看见一抹绿。本题解LaTeX\LaTeXLATEX格式可能不太美观,以内容为主。
2025-03-01 22:24:37
1152
1
原创 程序运行错误(Runtime Error,RE)的调试方法
其中,意为运行错误,不太容易调试。通常情况下,编译器会返回一串错误代码,我们可以根据错误代码猜测错误类型。由于一些编译器的错误代码比较含糊不清(有的是一串数字,有的甚至只告诉你运行异常终止),我们需要掌握一些调试的技巧。以上就是程序运行错误的调试方法了,希望能对你有帮助。欢迎评论或私信补充。祝大家写题一遍过!!!!!
2025-01-23 14:43:47
476
1
原创 【题解】AT_abc388_e AtCoder Beginner Contest ABC388 E Simultaneous Kagamimochi
选择哪些米糕不重要,重要的是我们要贪心地判断该答案是否可行。然后思考较大的米糕——显然,小的较小米糕匹配小的较大米糕,未雨绸缪,以备后患,避免直接取最大的后面会没得选。看到这样套路化的问法,我们可以想到一种算法——二分答案。也就是说,我们要通过二分的方式,迅速地找到答案。我们重复此过程直到答案值域缩小到一个数,此时这个数就是最终的答案。如果不满足,那么更大的答案显然也不满足,所以我们把右边界设为。自认为这个方法是代码较为简短,思路较为简单清晰的一个做法,时间复杂度。块米糕,按大小升序排列,第。
2025-01-11 22:12:22
1164
3
原创 【题解】AT_abc386_d AtCoder Beginner Contest 386 D Diagonal Separation
是的,这一堆乱七八糟的东西居然AC了。
2024-12-28 22:05:48
1284
原创 0/1 分数规划
作为答案——一个最大值,需要满足的条件就一定是。(均为浮点数,小数点后保留位数见题面)。其实这就是一个判断答案的式子。浮点数二分答案,判断就是。
2024-12-26 17:48:51
1003
原创 题解:AtCoder Beginner Contest AT_abc380_d ABC380D Strange Mirroring
解释一下,这堆东西每两行为一组,每组中第一行为位置,第二行为编号(一或二)。第一组是刚才说的一号二号串的组合,第二组就是把第一组中的。当然不能直接计算出来了,不过可以递归。单次查询的时间复杂度不高,递归调用的时间复杂度较为合理。为二号串,然后每一次操作完的字符串就是一号串和二号串的组合。规律的话嘛,就是可以发现每一层的规律都一样,最后一层就是。仔细思考一番发现,我们可以令原始的。乍一看,好大的数据范围!看作二号串,第三组同理。
2024-11-16 22:07:20
1257
1
原创 题解:AtCoder Beginner Contest AT_abc380_c ABC380C Move Segment
有一个二进制字符串,其中全部由数字一组成的子串被称为“块”。用结构体存每一个块,然后再输出的时候进行一些处理。个块,然后输出两个块之间的元素,最后输出第。个块的最后一个元素,再输出第。个块的后面(紧挨着它)。先输出从字符串开始到第。
2024-11-16 21:29:07
548
原创 题解:AT_abc376_e [ABC376E] Max × Sum
求 $ \displaystyle\ \left(\max_{i\ \in\ S}\ A_i\right)\ \times\ \left(\sum_{i\ \in\ S}\ B_i\right) $ 的最小值。,让你求对于集合 $ \lbrace\ 1,\ 2,\ \dots,\ N\ \rbrace $ 的每一个长度为。然后,我们把堆中最大的那个数(即堆顶)弹出去。子集是不一定连续的,在这个问题中,顺序也不重要,所以我们可以把序列按。是对应的,所以需要放到一个结构体里面,不然排完序之后就乱了。
2024-10-23 18:30:38
1213
原创 题解:AtCoder Beginner Contest AT_abc373_d ABC373D Hidden Weights(格式美化版)
恭喜你T了一个点!其实这个点貌似是专门用来卡SPFA的,所以说优化就不太现实了,换思路吧。前面的逻辑其实没问题,所以我们不用完全推翻重新写,只是把那个SPFA函数给替换掉了。现在让你输出一组合法的分配方案,题目保证存在,输出任意一组都行。条边的有向图,其中边有边权。现在让你给每一个点设置一个点权。
2024-10-01 13:26:32
936
原创 题解:AT_abc371_c [ABC371C] Make Isomorphic
然后,我们看第一个图中的边如果第二个图中没有就加上建边所需要的钱,第二个图中的边如果第一个图中没有就加上删边的钱,算出当前排列的答案。最后,我们把所有排列中计算的答案的最小值输出即可。有两个简单无向图,你每一次可以给第二个图添上或去掉一条边,有相应花费,问将两个图变为同构最少需要花费多少钱。非常小,可以考虑枚举全排列。,把这个当前排列记在一个数组里,观察数据范围,可以发现。
2024-09-15 14:27:27
766
原创 题解:[USACO07DEC] Sightseeing Cows G
既然说要使得点权和与边权和的比值最大,那么就会想到。分数规划的板子中要检查的是你选出来的最优的那几个。现在要找出一个环,使得点权和与边权和的比值最大。二分答案就不用说了,重点是这个。条边的有向图,点有点权,边有边权。浮点数二分(想想精度是多少)
2024-09-09 20:47:02
945
1
原创 题解:AT_abc369_e [ABC369E] Sightseeing Tour 详细版
我们使用dfs来暴力枚举,首先考虑每条边的方向,再全排列去确定遍历顺序。在每一种具体方案中,我们可以将点之间的最短路相加,并且加上边权,得出这种方案的最短路径长度,再取最小值即可。,可以暴力枚举每一条边经过时的方向以及经过它们的顺序。条必须经过的边(但是方向没有限制),问从。,考虑预处理出任意两点之间的最短路。观察数据范围,可以发现:虽然。的最短路长度是多少。
2024-09-05 19:45:19
1527
原创 题解:AT_abc366_d [ABC366D] Cuboid Sum Query
这是一个区间求和问题,因为Q很大,所以使用前缀和。N不超过100,所以在Q次询问中嵌套一次O(n)的循环是不会超时的。令s[i][j][k]表示第i层中左上角为(1,1),右下角为(j,k)的矩形中所有元素的和。然后在Q次询问中,枚举层数l~r,计算该层的元素和并累加即可。
2024-09-05 19:20:15
344
原创 题解:P4009 汽车加油行驶问题
可以使用SPFA算法完成本题。每一个状态有三个值,分别是当前到达的行、列,以及剩下的油还能走几步。考虑是否需要加油,计算边权即可。这是一个分层图最短路问题,我们可以使用升维的方法来完成本题。因为存在加油付费的问题,边权不一定为。定义一个结构体,用来存放当前到达的行、列,以及剩下的油还能走几步。,所以不能使用广搜来做。
2024-08-30 17:12:47
702
原创 题解:AT_abc368_d[ABC368D] Minimum Steiner Tree
我们可以发现,这棵无根树的根必须是给定的特殊点之一,不然根节点就可以删除,答案就不是最优。所以我们使用深度优先搜索遍历这棵树,根节点为给定的点中的任意一个,不妨使用第一个读入的特殊点。深搜函数中,我们要考虑一下这个点取还是不取。如果这个点的后代中有特殊点,那么这个点是一定要取的,因为树是一个无向无环连通图,要是不取的话我们就没有办法取到那个特殊点了。树,删除其中的一些点和边,使剩下的点和边仍然能够组成一棵树,且包含给定的。个特殊点,问最少剩下几个点。
2024-08-30 15:34:05
371
原创 题解:P2217 [HAOI2007] 分割矩阵
很容易想到,dfs 函数的参数就也是这五个值了。它能使所有重复的操作只做一次,大大降低了时间复杂度。否则枚举切断的位置及两边分配的分割次数并递归求解。但是时间复杂度有点难以接受啊,优化一下吧。的时候返回矩阵里所有元素之和,我们可以用。首先,我们要弄明白题中的方差是什么。有一种很有效的优化,那就是广为人知的。接下来,我们思考一下题目怎么做。如果已经存过答案了,那么返回。次,操作范围为左上角在。那么函数出口是什么情况呢?数据很小,于是想到了。下面我们来看看框架。
2024-08-27 19:25:19
1658
原创 题解:AT_abc367_d [ABC367D] Pedometer
没关系,我们可以再开一个数组来维护答案。c[s[i]] 表示 max(1,i-n+1) 至 i-1 中 s[i] 出现了多少次。只是要注意:要扔掉前面太靠前的元素,然后注意在复制一遍的数组 (n+1~n*2) 里。所以怎么计算答案呢?用 s[i] 表示前 i-1 个数的和除以 m 的余数。然后我们要找两个数 a,b ,满足 s[a] = s[b] 且 a < b 且 a + n - 1 >= b。这道题的数据很大,不能暴力枚举。我们可以断环为链:把整个数组复制一遍。把 s[i] 加进去,不然计算重复了。
2024-08-26 15:34:15
323
1
原创 题解:AT_abc368_c [ABC368C] Triple Attack
可能也会很大,所以一遍一遍的模拟就会超时。我们发现,题中有一个要求:每次必须打离自己最近的活着的敌人。我们就只用枚举每个敌人即可,在枚举的过程中计算答案。的倍数,不是这个敌人攻击了三的整数倍数次!这是个周期问题,自然会想到除法。这道题有点难度,因为。
2024-08-26 14:07:48
416
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人