摘要: 题意:给一个长度为n的环形数组,你要选m个数,满足没有任意两个数的位置相邻,求总和最大。 一开始没仔细看数据范围写了个dp暴力,想着枚举第1个点选还是不选两次dp取最大值。(属于痴心妄想) 后面自己也是看的题解。我们先贪心选最大的,那么它两边就不可以选了,但有可能选两边比选这个更好,那么我们就选两边 阅读全文
posted @ 2025-01-10 23:07 maburb 阅读(30) 评论(0) 推荐(0)
摘要: A 万年沉睡的宝藏 题意:有一些岛和一些宝藏,都用字符串来描述,会有4个操作:给一个岛加一个宝藏,问这个岛有多少宝藏,某个宝藏是否在这个岛上,有多少岛上有至少一个宝藏。 用map存string和set就行了,注意特判没有这个岛的情况。 点击查看代码 void solve() { int q; std 阅读全文
posted @ 2025-01-10 21:31 maburb 阅读(58) 评论(0) 推荐(0)
摘要: 题意:给你一个区间[l, r], 你要在里面选三个数a, b, c, 使得两两异或值的和最大。 按位考虑,每一位最多被加两次(讨论一下所有情况就懂了),那么如果我们可以构造出来把能加两次的位都加两次,是不是就可以了? 首先对于l和r相同的前缀,我们选的数也一定是这个前缀,这是不能变的。那么我们找到l 阅读全文
posted @ 2025-01-10 17:19 maburb 阅读(99) 评论(0) 推荐(1)
摘要: A. Alyona and a Square Jigsaw Puzzle 题意:一个人搭一个矩阵,一圈圈的围,每天放\(a_i\)个方块,当某天正好搭出来一个矩阵他就开心。问有多少天是开心的。 发现每搭一圈,矩阵长度加2,不同边长矩阵需要的方块也可以算出来,按题意模拟就行。 点击查看代码 void 阅读全文
posted @ 2025-01-10 15:50 maburb 阅读(50) 评论(0) 推荐(0)
摘要: 题意,给你两个长度为n的数组a和b,你可以重新排列b,每次会让a的一个数加一或者让b的一个数加一,求最大的min(ai, bi)的连乘。 自己做卡了很久,思路想到了,但没想到他最后不需要模拟交换的,导致代码一直没写出来。 我们肯定要让最大的数和最大的匹配,次大和次大的匹配,依次按大小排名匹配,这样是 阅读全文
posted @ 2025-01-10 01:22 maburb 阅读(34) 评论(0) 推荐(0)
摘要: 题意:一开始区间为[1, n],每次递归操作,如果区间长度<k则终止。如果当前区间长度为奇数,则加上mid,并递归[l, mid - 1] 和 [mid + 1, r];否则为偶数,则只进行递归[l, mid], [mid + 1, r]。 手搓几个样例发现是有点规律的。首先左右是对称的,左边加的数 阅读全文
posted @ 2025-01-10 00:19 maburb 阅读(61) 评论(0) 推荐(0)