我家小宇在洛谷上刷题,碰到这一道,他解题后,时间复杂度一直拿不到满分。贴一下我辅导他时写的代码。

题目描述

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

输入格式

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

输出格式

输出若干行。

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

输入输出样例

输入样例一:
12
1 1 0 0 1 1 1 0 1 1 0 0
输出样例一:
1 3 5 8 9 11
2 4 6 12
7
10输入样例二:
20
1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0
输出样例二:
1 5 8 11 13 14 15 17
2 6 9 12 16 18
3 7 10 19
4 20

代码实例

#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;struct block
{int value;int count;int begin;
};int main()
{int n = 0;scanf("%d", &n);vector<block> myblocks;int intput = 0;for (int i=1; i<=n; i++){scanf("%d", &intput);if (0 == myblocks.size()){block first_block;first_block.value = intput;first_block.count = 1;first_block.begin = i;myblocks.push_back(first_block);}else{block &cur_block = myblocks.back();if (intput == cur_block.value){cur_block.count++;}else{block new_block;new_block.value = intput;new_block.begin = i;new_block.count = 1;myblocks.push_back(new_block);}}}while (0 != myblocks.size()){vector<block>::iterator iter = myblocks.begin();int cur_value = -1;while (iter != myblocks.end()){if (0==(*iter).count){iter = myblocks.erase(iter);continue;}else{if (cur_value != (*iter).value){cout << (*iter).begin << ' ';cur_value = (*iter).value;(*iter).begin++;(*iter).count--;}iter++;}}  cout << endl;}return 0;
}

CSP-J 2021 小熊的果篮相关推荐

  1. P7912 [CSP-J 2021] 小熊的果篮

    P7912 [CSP-J 2021] 小熊的果篮 # [CSP-J 2021] 小熊的果篮 ## 题目描述 小熊的水果店里摆放着一排 $n$ 个水果.每个水果只可能是苹果或桔子,从左到右依次用正整数 ...

  2. CSP - J 2020 T1 优秀的拆分

    https://www.luogu.com.cn/problem/P7071 /* CSP - J 2020 T1 优秀的拆分 https://www.luogu.com.cn/problem/P70 ...

  3. 2077:【21CSPJ普及组】小熊的果篮(fruit)

    2077:[21CSPJ普及组]小熊的果篮(fruit) 时间限制: 1000 ms         内存限制: 524288 KB 提交数: 1085     通过数: 311 [题目描述] 小熊的 ...

  4. 小熊的果篮(fruit)【CSPJ2021】

    题目描述 小熊的水果店里摆放着一排 n 个水果.每个水果只可能是苹果或桔子,从左到右依次用正整数 1.2.3.--.n 编号.连续排在一起的同一种水果称为一个"块".小熊要把这一排 ...

  5. 2020 CSP - J初赛 题解

    目录 写在前面的话 题面 题解 答案合集 单项选择题 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 阅读程序题 一 16 17 18 19 20 21 二 22 23 24 ...

  6. CSP J/S SH 迷惑行为大赏

    w r 写 反 人 ... void solveBF(){for(int k=l;k<=r;k++){cnt=k%n;ans=max(ans,cnt);}cout<<ans; } i ...

  7. csp之模拟试题——2019 CSP——J

    hello大家好,今天给大家带来csp-j 2019的试题,大家可以做一下.老规矩,给个三连求好评,点赞关注收藏哦~ 不扯了,上题! 1.[ 单选 ] 中国的国家顶级域名是( ) A. .cn B. ...

  8. CSP - J 2020 T2 直播获奖

    题目链接 考场看完题后,感觉是个数据结构题 维护一个数据结构,需要支持单点插入和求第 kkk 小 考场上写的是 vector + 二分 ,结束后才知道可能会被卡,因为 vector 的插入是小常数 O ...

  9. 新鲜出炉的 CSP-J 2021 复赛题目 题解

    2021普及组复赛 代码量大点,难度一般. T1 P7909 [CSP-J 2021] 分糖果 最简单容易想到的思路,应该就是枚举[L,R]范围内的每一个数字 %n 的结果,保留最大结果,如下所示. ...

  10. 暑假CSP-J必刷题单

    字符串处理 题目 链接 [NOIP2018 普及组] 标题统计 https://www.luogu.com.cn/problem/P5015 [NOIP2003 普及组] 乒乓球 https://ww ...

最新文章

  1. 图解Redis事务机制
  2. 从ViewDragLayout中学到的一些事实
  3. 【 Verilog HDL 】赋值冲突问题
  4. 腾讯阿里谋定联姻农业 智慧农业对话中国农民丰收节交易会
  5. 使用Docker搭建WordPress博客(三)nginx镜像制作
  6. SAP BRF+ debugger工作原理
  7. php全面获取url地址栏及各种参数
  8. 优达学城深度学习之一——Anaconda
  9. NB-IOT(6)---NB-IoT物联网行业解决方案
  10. APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
  11. 如何使用命令强制DC的复制
  12. Flickr.net傻瓜教程(三)--打造自己的图片搜索引擎
  13. 神思第二代身份证验证系统
  14. 高阶篇:4.2)DFMEA设计失效模式和失效后果分析-总章
  15. 迅捷pdf在线转换html,如何把PDF转换成HTML?迅捷PDF转换器
  16. C#实现文本语音播放
  17. Windows 11 将“扼杀”第三方浏览器?Firefox 绝地反击!
  18. Bootstrap插件(一)——模态框(modal.js)
  19. 天生励志难自弃—记新东方胡平老师的美丽人生
  20. 《MySQL数据库进阶实战》读后感(SQL 小虚竹)

热门文章

  1. drools中Fact的equality modes
  2. Linux Ansible自动化运维 set_fact 模块
  3. 『拓扑排序』「NOI2010」航空管制
  4. css绘制三角形以及梯形
  5. 2022年虎年新春致地球上全体读者朋友们的一封书信
  6. 如何用excel筛选相似内容_如何excel中筛选两个表中相同的数据
  7. python-字符串的操作方法_format_列表的操作
  8. Java8新特性 方法引用(四)
  9. win10开机慢黑屏时间长
  10. WordPress重新安装的几种方法(2022年新版教程)