摘要: 原题链接 题解 1.缺少一个前缀和,缺少在哪了? 如果缺少在 \(i<n\) 的地方,则会出现一个两个数之和,即缺少两个数 否则会只缺少一个数 2.两个数之和可能大于 \(n\),也可能不 3.虽然 \(a_i\) 达到了 \(1e18\) 但是 \(n \leq 2e5\) ,所以可以用数组记录出 阅读全文
posted @ 2024-06-17 23:40 纯粹的 阅读(64) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.对于任意 \(a_i\) 和 \(a_j\) ,最大异或和是唯一的 2.对于 \(a_i\) 来说,要想异或和最大,则 \(a_j\) 要尽量满足每一位上的数相同,比如都是0,或者都是1,所以最优配对的 \(a_j\) 一定是大小最接近 \(a_i\) 的 \(a_j\) ,因为 阅读全文
posted @ 2024-06-17 23:12 纯粹的 阅读(15) 评论(0) 推荐(0)
摘要: 原题链接 题解 对于一组相切的圆来说,其中一个圆变大,其相邻的圆变小,然后相邻的相邻的圆变大...而要让总半径和变小,一定得是总的变小的圆更多 实施 先判断一组圆能不能发生变化,然后再累积变大和变小的圆个数 code #include<bits/stdc++.h> using namespace s 阅读全文
posted @ 2024-06-17 21:04 纯粹的 阅读(18) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.\(LIS(a)\) 已经改变不了了,所以要让插入的 \(b\) 尽量少地增加 \(LIS\) 所以要降序、从左到右插入 2.\(a\) 的相对顺序不变 3.此时已知两个数组的相对顺序,因此我们可以贪心地输出两个数组顶端元素中较大的那个 为什么可以这样? 我们假设输出顶端元素较小 阅读全文
posted @ 2024-06-17 19:23 纯粹的 阅读(22) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.坐标i,j中,一定有一个值为n-1 2.所以另外一个数就是n-1在二进制表示下0的位置变成1,1的位置变成0的数 3.如何找到最大值?答:自己和自己或找出最大的 4.如何找到另外一个数?答:找出和最大值或最大的,再找出这些数中最小的 code #include<bits/stdc 阅读全文
posted @ 2024-06-17 18:14 纯粹的 阅读(15) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.如果是一百以内的合数,那么一定可以由两个不大于50的质数组成 2.交互题关键就在于询问和返回的结果 cout<<'''; fflush(stdout); cin>>... code #include<bits/stdc++.h> using namespace std; bool 阅读全文
posted @ 2024-06-17 17:35 纯粹的 阅读(12) 评论(0) 推荐(0)
摘要: 原题链接 题解 1.第 \(i\) 个位置上的数,对 \(S\) 的贡献最大不会超过 \(a_i+i\),我们令其为 \(c_i\) 2.我们不去细想如何操作才能得到最优解,而是去想第一大的 \(b\) 是多少?第二大的 \(b\) 是多少? 3.对 \(c_i\) 降序排序得到 \(b_i\),如 阅读全文
posted @ 2024-06-17 16:08 纯粹的 阅读(76) 评论(2) 推荐(1)