题目名称 3618. [CSP 2021J]小熊的果篮
输入输出 csp2021pj_fruit.in/out
难度等级 ★★☆
时间限制 1000 ms (1 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatarsyzhaoss 于2021-10-23加入
开放分组 全部用户
提交状态
分类标签
NOIP/CSP 线性结构
查看题解 分享题解
通过:47, 提交:203, 通过率:23.15%
Gravatar梵高 100 0.062 s 5.94 MiB C++
Gravatar梵高 100 0.068 s 3.86 MiB C++
Gravatar梵高 100 0.070 s 3.86 MiB C++
Gravatar梵高 100 0.070 s 5.14 MiB C++
Gravatar梵高 100 0.077 s 3.86 MiB C++
Gravatar牛先生 100 0.079 s 3.86 MiB C++
Gravatar铑小子 100 0.084 s 6.50 MiB C++
Gravatar0429 100 0.087 s 5.54 MiB C++
Gravatarsywgz 100 0.088 s 4.77 MiB C++
Gravatarsywgz 100 0.094 s 4.77 MiB C++
关于 小熊的果篮 的近10条评论(全部评论)
我是蒟蒻
Gravatarabc
2023-07-12 17:16 4楼
cin cout换成scanf printf确实快很多后3个测试数据从0.8快到0.156 有大佬能解释下为什么吗
Gravatar0429
2022-07-28 10:55 3楼
csp2021爆零纪念
Gravatar铑小子
2022-07-28 10:25 2楼
我是sb,比赛<写成<=,全爆
Gravatar空条承太郎&
2021-10-26 19:34 1楼

3618. [CSP 2021J]小熊的果篮

★★☆   输入文件:csp2021pj_fruit.in   输出文件:csp2021pj_fruit.out   简单对比
时间限制:1 s   内存限制:512 MiB

【题目描述】

小熊的水果店里摆放着一排$n$个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数$1,2,3,\cdots,n$编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里,具体方法是:每次都把每一个“块”中最左边的水果同时挑出,组成一个果篮。重复这一操作,直至水果用完。注意,每次挑完一个果篮后,“块”可能会发生变化。比如两个苹果“块”之间的唯一桔子被挑走后,两个苹果“块”就变成了一个“块”。请帮小熊计算每个果篮里包含的水果。

【输入格式】

输入的第一行包含一个正整数$n$,表示水果的数量。

输入的第二行包含$n$个空格分隔的整数,其中第$i$个数表示编号为$i$的水果的种类,$1$代表苹果,$0$代表桔子。

【输出格式】

输出若干行。

第$i$行表示第$i$次挑出的水果组成的果篮。从小到大排序输出该果篮中所有水果的编号,每两个编号之间用一个空格分隔。

【样例1输入】

12
1 1 0 0 1 1 1 0 1 1 0 0

【样例1输出】

1 3 5 8 9 11
2 4 6 12
7
10

【样例1解释】

这是第一组数据的样例说明。

所有水果一开始的情况是1 1 0 0 1 1 1 0 1 1 0 0,一共有 6 个块。

在第一次挑水果组成果篮的过程中,编号为1 3 5 8 9 11的水果被挑了出来。

之后剩下的水果是1 0 1 1 1 0,一共4个块。

在第二次挑水果组成果篮的过程中,编号为2 4 6 12的水果被挑了出来。

之后剩下的水果是1 1,只有 1 个块。

在第三次挑水果组成果篮的过程中,编号为7的水果被挑了出来。

最后剩下的水果是1,只有 1 个块。

在第四次挑水果组成果篮的过程中,编号为10的水果被挑了出来

【样例2输入】

20
1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0

【样例2输出】

1 5 8 11 13 14 15 17
2 6 9 12 16 18
3 7 10 19
4 20

【样例3】

下载

【数据规模与约定】

对于 10% 的数据,$n\leq 5$。

对于 30% 的数据,$n\leq 1000$。

对于 70% 的数据,$n\leq 50000$。

对于 100% 的数据,$n\leq 2\times 10^5$。

【来源】

由于数据规模较大,建议C/C++选手使用 scanf 和 printf 语句输入、输出。

【来源】

CSP2021 入门组 Task4