CSP-J 2021 小熊的果篮
我家小宇在洛谷上刷题,碰到这一道,他解题后,时间复杂度一直拿不到满分。贴一下我辅导他时写的代码。
题目描述
小熊的水果店里摆放着一排 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 小熊的果篮相关推荐
- P7912 [CSP-J 2021] 小熊的果篮
P7912 [CSP-J 2021] 小熊的果篮 # [CSP-J 2021] 小熊的果篮 ## 题目描述 小熊的水果店里摆放着一排 $n$ 个水果.每个水果只可能是苹果或桔子,从左到右依次用正整数 ...
- CSP - J 2020 T1 优秀的拆分
https://www.luogu.com.cn/problem/P7071 /* CSP - J 2020 T1 优秀的拆分 https://www.luogu.com.cn/problem/P70 ...
- 2077:【21CSPJ普及组】小熊的果篮(fruit)
2077:[21CSPJ普及组]小熊的果篮(fruit) 时间限制: 1000 ms 内存限制: 524288 KB 提交数: 1085 通过数: 311 [题目描述] 小熊的 ...
- 小熊的果篮(fruit)【CSPJ2021】
题目描述 小熊的水果店里摆放着一排 n 个水果.每个水果只可能是苹果或桔子,从左到右依次用正整数 1.2.3.--.n 编号.连续排在一起的同一种水果称为一个"块".小熊要把这一排 ...
- 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 ...
- 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 ...
- csp之模拟试题——2019 CSP——J
hello大家好,今天给大家带来csp-j 2019的试题,大家可以做一下.老规矩,给个三连求好评,点赞关注收藏哦~ 不扯了,上题! 1.[ 单选 ] 中国的国家顶级域名是( ) A. .cn B. ...
- CSP - J 2020 T2 直播获奖
题目链接 考场看完题后,感觉是个数据结构题 维护一个数据结构,需要支持单点插入和求第 kkk 小 考场上写的是 vector + 二分 ,结束后才知道可能会被卡,因为 vector 的插入是小常数 O ...
- 新鲜出炉的 CSP-J 2021 复赛题目 题解
2021普及组复赛 代码量大点,难度一般. T1 P7909 [CSP-J 2021] 分糖果 最简单容易想到的思路,应该就是枚举[L,R]范围内的每一个数字 %n 的结果,保留最大结果,如下所示. ...
- 暑假CSP-J必刷题单
字符串处理 题目 链接 [NOIP2018 普及组] 标题统计 https://www.luogu.com.cn/problem/P5015 [NOIP2003 普及组] 乒乓球 https://ww ...
最新文章
- 图解Redis事务机制
- 从ViewDragLayout中学到的一些事实
- 【 Verilog HDL 】赋值冲突问题
- 腾讯阿里谋定联姻农业 智慧农业对话中国农民丰收节交易会
- 使用Docker搭建WordPress博客(三)nginx镜像制作
- SAP BRF+ debugger工作原理
- php全面获取url地址栏及各种参数
- 优达学城深度学习之一——Anaconda
- NB-IOT(6)---NB-IoT物联网行业解决方案
- APP UI自动化测试:框架选择、环境搭建、脚本编写……全总结
- 如何使用命令强制DC的复制
- Flickr.net傻瓜教程(三)--打造自己的图片搜索引擎
- 神思第二代身份证验证系统
- 高阶篇:4.2)DFMEA设计失效模式和失效后果分析-总章
- 迅捷pdf在线转换html,如何把PDF转换成HTML?迅捷PDF转换器
- C#实现文本语音播放
- Windows 11 将“扼杀”第三方浏览器?Firefox 绝地反击!
- Bootstrap插件(一)——模态框(modal.js)
- 天生励志难自弃—记新东方胡平老师的美丽人生
- 《MySQL数据库进阶实战》读后感(SQL 小虚竹)