1 条题解
-
0
自动搬运
来自洛谷,原作者为

cff_0102
& aqua_qaq | 团子群 185800038 | 如果我死了说明我 AFO 了搬运于
2025-08-24 21:15:12,当前版本为作者最后更新于2023-07-19 12:50:12,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
问题 :
将字符串相加(拼接)的操作复杂度是 ,其中两个字符串长度分别为 和 。
因为 ,所以很可能超时。
输出一个比较大的数,如 即可。
问题 :
第二个问题,注意到 可以取 。
模拟一下 取 的情况。
for (int i = 2; i <= n; ++i) pre[i] = pre[i - 1] & a[i];此时,。
for (int i = n - 1; i; --i) post[i] = post[i + 1] & a[i];此时,。
for (int i = 1; i < n; ++i) if (pre[i] + post[i + 1] == pre[n]) { ++ans; }我们知道 ,接下来对这里的 进行分讨。
- 当 ,,此时只有 时 会加 。
- 当 ,,此时只有 时 会加 。
当 中有两个 (假设分别是 且 ),且除了这两个数以外剩下的数按位与的结果不为 时,正确的答案是什么?正确的答案是 ,把 数组分成 和 。但是实际上在最终的这个循环中, 时 都会自增 ,此时最终程序输出的 为 (初始值)(在 中加的数)。当 时,程序的答案就会出错。
构造一组数据,其中数组刚好有两个 (并且这两个 之间至少有一个不为 的数),且剩下所有数按位与的结果不为 即可让程序出错。
实际上,剩下的数按位与的结果为 (如
5\n1 0 2 0 4),甚至输入的 数组不含 (如6\n1 1 4 5 1 4),也都有几率会使程序出错。但是只要求构造一组使程序出错的数据即可,所以不需要分析更复杂的情况。Python 程序代码:
a=int(input()) if(a==1):print(100000) if(a==2):print("5\n1 0 1 0 1")
- 1
信息
- ID
- 8919
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者