CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46
假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10号,依次类推,第20排是96到100号。
购票时,一个人可能购一张或多张票,最多不超过5张。如果这几张票可以安排在同一排编号相邻的座位,则应该安排在编号最小的相邻座位。否则应该安排在编号最小的几个空座位中(不考虑是否相邻)。
假设初始时车票全部未被购买,现在给了一些购票指令,请你处理这些指令。
第二行包含n个整数,每个整数p在1到5之间,表示要购入的票数,相邻的两个数之间使用一个空格分隔。
对于购票指令p,输出p张车票的编号,按从小到大排序。
2 5 4 2
6 7 8 9 10
11 12 13 14
3 4
2) 购5张票,得到座位6至10。
3) 购4张票,得到座位11至14。
4) 购2张票,得到座位3、4。
大致思路的话:就是按照题目模拟就完了,开了两个数组一个记录车票编号,一个记录座位是否还有票,然后先一排一排地判断是否有连续的票,如果有就选择这一排连续的座位,另外,如果都不满足的话,那就只能从第一排开始有票就买了(题目要求从小到大排序地买)。其实吧,我觉得我没想到我的能过,感觉题目数据有缺陷,我只判断了一排中余票是否大于p,但是并没有判断一排大于p的座位是否是连续,假如p=3,我这一排的余票的号码是【1 2 4 5】即这排总的余票是4>p=3,这其实并不能满足题意的连续,但是我的程序判断可以,所以感觉数据还是蛮水的。。。
//CCF CSP 201609-2 火车购票
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stack>
#include <queue>
using namespace std;
int a[];
int b[];
int n,x,sum;
int main()
{
while(cin>>n){
for(int i=;i<;i++) a[i]=;
int t=,flag;
queue<int> q;
while(n--){
cin>>x;
flag=;
for(int i=;i<=;i++){
sum=;
for(int j=;j<=;j++){
sum+=a[*(i-)+j];
}
if(sum>=x){
for(int j=;j<=;j++){
if(a[*(i-)+j]==&&x){
b[*(i-)+j]=*(i-)+j;
q.push(*(i-)+j);
t++;
x--;
a[*(i-)+j]=;
}
}
while(!q.empty()){
cout<<q.front();
q.pop();
if(!q.empty()) cout<<" ";
}
cout<<endl;
flag=;
break;
}
}
if(flag==){
for(int i=;i<=;i++){
for(int j=;j<=;j++){
if(a[*(i-)+j]==&&x){
b[*(i-)+j]=*(i-)+j;
q.push(*(i-)+j);
t++;
x--;
a[*(i-)+j]=;
}
}
}
while(!q.empty()){
cout<<q.front();
q.pop();
if(!q.empty()) cout<<" ";
}
cout<<endl;
}
}
}
return ;
}
CCF CSP 201609-2 火车购票的更多相关文章
- CCF 2016-09-2 火车购票
CCF 2016-09-2 火车购票 题目 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的 ...
- 火车购票问题(16年ccf)
火车购票问题(16年ccf) 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一 ...
- CCF CSP 认证
参加第八次CCF CSP认证记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四 ...
- CCF CSP 201703-3 Markdown
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201703-3 Markdown 问题描述 Markdown 是一种很流行的轻量级标记语言(l ...
- CCF CSP 201703
CCF CSP 2017·03 做了一段时间的CCF CSP试题,个人感觉是这样分布的 A.B题基本纯暴力可满分 B题留心数据范围 C题是个大模拟,留心即可 D题更倾向于图论?(个人做到的D题基本都是 ...
- CCF CSP 201312-3 最大的矩形
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201312-3 最大的矩形 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i( ...
- CCF CSP 201609-3 炉石传说
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201609-3 炉石传说 问题描述 <炉石传说:魔兽英雄传>(Hearthston ...
- CCF CSP 201403-3 命令行选项
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201403-3 命令行选项 问题描述 请你写一个命令行分析程序,用以分析给定的命令行里包含哪些 ...
- CCF CSP 201709-4 通信网络
CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201709-4 通信网络 问题描述 某国的军队由N个部门组成,为了提高安全性,部门之间建立了M ...
随机推荐
- js估算一篇文章的阅读时长
每天早上上班在地铁里我都有看技术类文章以及实时新闻的习惯,偶尔会看到有些文章的开始部分会提醒我们这篇文章大概的阅读时长,我就在想这是怎么实现的,具体到前端开发中,又是如何实现的.今天在浏览Segmen ...
- __x__(20)0907第四天__列表ul,ol,dl
列表分为: 有序列表 ul: <ul type="disc"> <li>张三</li> <li>李四</li> < ...
- react_app 项目开发 (7)_难点集合
/src/App/Admin/Header 布局 import {Row, Col} from "antd" <div className="header_box& ...
- 超小Web手势库AlloyFinger原理(转载)
目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看: https://github.com/AlloyTeam/AlloyF ...
- HTTP &RFC
HTTP 1,HTTP所表达的控制以及描述性相关的信息都包含在了HTTP的起始行和首部之中.BNF的使用使得自己能够清晰的梳理出起始行和首部中所有类别的元信息.对于每一类的元信息具体包含哪些内容也能够 ...
- 织梦,dede:list和dede:artlist的区别
dede:list可以配合pagelist进行分页,而artlsit不能进行分页. 如果要翻页只能用list的
- jenkins安装与配置---windows系统
记录安装过程中的步骤及遇到的坑,以做借鉴 服务器主机系统: windows9 ; 已安装开发环境: jdk8 ; 我采用的是war包直接运行的方式: 1.下载最新的版本(一个 WAR 文件).Jen ...
- linux svn权限
svnserve -d -r /opt/svn //启动 创建仓库 svnadmin create /u02/svn/davesvn ...
- action,func简洁用法
new Action(() => { }).Invoke();new Action(() => { })(); new Func<int, int>(s => { ...
- oracle 主键,非空,检查,唯一,默认,外键约束
--首先添加主键约束alter table studentadd constraint PK_student_sno primary key(sno) --删除约束alter table studen ...