摘要: A 直接按题意暴力模拟即可。时间复杂度为 \(O(t n^2)\)。 代码: #include <iostream> using namespace std; int a[1007]; inline bool check(int n){ for (int i = 1; i <= n; i++){ i 阅读全文
posted @ 2021-08-25 14:58 LovelyLeasier 阅读(83) 评论(0) 推荐(1)
摘要: A 由于与运算不会把值变得更大,我们可以考虑将一个数不断与上别的数。 比如:对于第一个数,我们可以不断利用 \([1, 1]\)、\([1, 2]\)、……、\([1, n]\) 来让第一个数变成所有数与起来的值。其他位置上的数字可以通过再做一次上述操作得到所有数与起来的值。 于是答案就是所有数与起 阅读全文
posted @ 2021-08-16 09:13 LovelyLeasier 阅读(66) 评论(0) 推荐(0)
摘要: A 容易发现,若将数列中的最大值与其他元素分在一起,只会使其贡献减少。 由于只能分成 \(2\) 个非空子序列,我们将最大值划分到其中一个,剩下的元素划分到另一个即可。 代码: #include <iostream> #include <algorithm> #include <cstdio> us 阅读全文
posted @ 2021-08-10 10:49 LovelyLeasier 阅读(66) 评论(0) 推荐(0)
摘要: 不保证能 AC 的做法 前置芝士:欧拉函数、莫比乌斯反演、线性求逆元、Dirichlet 前 & 后缀和、扩展欧拉定理(exEuler)、卡常 关于欧拉函数,有结论:\(\varphi(ij) = \frac{\varphi(i) \varphi(j) \gcd(i, j)}{\varphi(\gc 阅读全文
posted @ 2021-07-30 18:39 LovelyLeasier 阅读(86) 评论(0) 推荐(1)
摘要: A 考虑钦定 \(l\),容易发现,\(r\) 向右扩展不一定带来更大的区间最大值,而可能带来更小的区间最小值。所以,只有 \(a_r\) 大于此前区间最大值,才可能带来更大的答案;只有 \(a_l\) 是区间最小值,\([l + 1, r]\) 的答案才可能会大于 \([l, r]\) 的答案。 阅读全文
posted @ 2021-07-30 09:12 LovelyLeasier 阅读(50) 评论(0) 推荐(0)