自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 「逻辑推理」AtCoder AT_abc401_d D - Logical Filling

既然这是一道逻辑推理题,我们就回归做数学的思想,用人类思维解决它。

2025-04-12 22:11:23 491 2

原创 【题解】AtCoder AT_abc400_c 2^a b^2

一个很巧妙的数学思路,代码不超过 30 行(不压行),实现难度不高。

2025-04-07 21:33:11 857

原创 【题解】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

原创 浅谈树状数组算法

树状数组很好用,可以将ONO(N)ON的时间复杂度优化到Olog⁡NO(\log N)OlogN。

2025-03-16 18:46:31 753

原创 AtCoder AT_abc397_d [ABC397D] Cubes

一个代码实现难度不高的数学解法,希望对你有帮助!

2025-03-15 22:19:41 1059 3

原创 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\LaTeXLATE​X格式可能不太美观,以内容为主。

2025-03-01 22:24:37 1152 1

原创 【题解】AtCoder Beginner Contest ABC391 D Gravity

一个简单的做法,文末有彩蛋~

2025-02-01 22:21:30 1064 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

原创 P9751 [CSP-J 2023] 旅游巴士

P9751。

2024-10-09 21:11:34 1691

原创 题解: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

原创 题解:CF1950F 0, 1, 2, Tree!

接下来,我们考虑怎么计算答案。

2024-08-30 15:52:55 875

原创 题解: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关注的人

提示
确定要删除当前文章?
取消 删除