题目2 : 航班座位

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi在给一个家庭旅游团订某次航班的机票。该航班的飞机一共有N排座位,每排座位有10个座位,从左到右依次编号ABCDEFGHJK。其中ABC连在一起,DEFG连在一起,HJK连在一起;而C和D以及G和H被过道隔开。

现在有M个座位已经被预订,小Hi想知道他最多能安排多少个三口之家搭乘本次航班。注意三口之家需要坐在同一排连续的3个座位上,不能被过道隔开。

         ABC  DEFG  HJK
1 XOO OOOO OOX
2 OOO XXXO XOO
3 OOO OOOO OXO
........

输入

第一行包含两个整数N和M。

以下M行每行包含一个座位号。

1 <= N <= 1000000000

1 <= M <= 100000

输出

输出一个整数代表答案

样例输入
3 7
1A
1K
3J
2D
2E
2F
2H
样例输出
4

比赛已经结束,去题库提交

写的好复杂啊.....是不是还有简单方法.

 #include <iostream>
#include <fstream>
#include <sstream>
#include <map>
#include <string>
#include <list>
#include <forward_list>
#include <deque>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <numeric>
#include <ctime>
#include <iterator>
#include <set>
#include <cstdio> using namespace std; set<long long> sll1; int calgewei(char c){
if(c=='J') return ;
if(c=='K') return ;
return c-'A';
} int main()
{
long long n,m;
int row;
char col;
long long count=;
long long rr1;
long long rr2,rr3,rr4,rr5;
scanf("%lld %lld",&n,&m);
for(int i=;i<m;i++){
scanf("%d%c",&row,&col);
int gewei=calgewei(col);
rr1=row*+gewei;
if(gewei==||gewei==||gewei==){
rr2=row*;
if(sll1.find(rr2)!=sll1.end()){
continue;
}else{
count++;
sll1.insert(rr2);
}
}else if(gewei==||gewei==||gewei==){
rr2=row*+;
if(sll1.find(rr2)!=sll1.end()){
continue;
}else{
count++;
sll1.insert(rr2);
}
}else{
rr2=row*+;
rr3=rr2+;
rr4=rr3+;
rr5=rr4+;
if(gewei==){
if(sll1.find(rr2)==sll1.end()&&sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end()&&sll1.find(rr5)!=sll1.end()){
count++;
sll1.insert(rr2);
}else{
sll1.insert(rr2);
continue;
}
}else if(gewei==){
if(sll1.find(rr2)==sll1.end()&&sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end() ||
sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end()&&sll1.find(rr5)==sll1.end()){
count++;
sll1.insert(rr3);
}else{
sll1.insert(rr3);
continue;
}
}else if(gewei==){
if(sll1.find(rr2)==sll1.end()&&sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end() ||
sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end()&&sll1.find(rr5)==sll1.end()){
count++;
sll1.insert(rr4);
}else{
sll1.insert(rr4);
continue;
}
}else if(gewei==){
if(sll1.find(rr2)!=sll1.end()&&sll1.find(rr3)==sll1.end()&&sll1.find(rr4)==sll1.end()&&sll1.find(rr5)==sll1.end()){
count++;
sll1.insert(rr5);
}else{
sll1.insert(rr5);
continue;
}
}
}
}
long long res=*n;
printf("%lld\n",res-count);
return ;
}

航班座位_hihocoder的更多相关文章

  1. python练手项目

    文本操作 逆转字符串--输入一个字符串,将其逆转并输出. 拉丁猪文字游戏--这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如"banan ...

  2. 51book机票接口对接,吐血整理(含PHP封装代码)

    前言 最近在对接51book的机票接口,遇到了挺多坑,所以整理一份作为记录 机票有两个不同的接口,一个是机票,另一个是保险 一.申请 要接51book的机票,首先是要申请账号,这时候应该是有客户经理跟 ...

  3. (22)Python练习项目集

    文本操作 逆转字符串——输入一个字符串,将其逆转并输出. 拉丁猪文字游戏——这是一个英语语言游戏.基本规则是将一个英语单词的第一个辅音音素的字母移动到词尾并且加上后缀-ay(譬如“banana”会变成 ...

  4. 旅游机票类专业名词---PNR

    PNR: PNR是旅客订座记录,即Passenger Name Record的缩写,它反映了旅客的航程,航班座位占用的数量,及旅客信息.适用民航订座系统. 一个PNR由以下几项组成: 姓名组NM 航段 ...

  5. bzoj1745[Usaco2005 oct]Flying Right 飞行航班*

    bzoj1745[Usaco2005 oct]Flying Right 飞行航班 题意: n个农场,有k群牛要从一个农场到另一个农场(每群由一只或几只奶牛组成)飞机白天从农场1到农场n,晚上从农场n到 ...

  6. 团体程序设计天梯赛-练习集L2-010. 排座位

    L2-010. 排座位 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位. ...

  7. L2-010. 排座位

    L2-010. 排座位 题目链接:https://www.patest.cn/contests/gplt/L2-010 并查集 相关题目:L2-007. 家庭房产,L3-003. 社交集群 下午打的时 ...

  8. CJOJ 免费航班

    Description 小Z在MOI比赛中获得了大奖,奖品是一张特殊的机 票.使用这张机票,可以在任意一个国家内的任意城市之间的免费飞行,只有跨国飞行时才会有额外的费用.小Z获得了一张地图,地图上有城 ...

  9. C#实现航班查询及预订

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

随机推荐

  1. Mask_RCNN学习记录(matterport版本)

    资源链接 Mask R-CNN论文 matterport版本的GitHub 基于Keras和Tensorflow GitHub上还有Facebook的官方实现版本:Detectron maskrcnn ...

  2. P5303 [GXOI/GZOI2019]逼死强迫症

    题目地址:P5303 [GXOI/GZOI2019]逼死强迫症 这里是官方题解 初步分析 从题目和数据范围很容易看出来这是一个递推 + 矩阵快速幂,那么主要问题在于递推的过程. 满足条件的答案一定是以 ...

  3. python时间模块小结

    1.datetime 模块 为日期和时间处理同时提供了简单和复杂的方法.支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出.该模块还支持时区处理: 简单例子: from datetime ...

  4. 【linux终端操作】

    1. ctr + alt + t 打开新的终端窗口2. ctr + shift + + 终端窗口字体放大3. ctr + - 终端窗口字体缩小4. ls : 查看目录下的文件信息5. pwd: 查看目 ...

  5. 为什么要使用`QuerySet.iterator()`

    用django的custom command功能,写了一个脚本,目的是修正生成环境的数据,tqdm告诉我运行时长预估是2小时. 一个小时后,正在吃午饭的我,接到了很多微信推送.客户告诉我服务不可用,同 ...

  6. vue 双向数据绑定的实现学习(二)- 监听器的实现

    废话:上一篇https://www.cnblogs.com/adouwt/p/9928278.html 提到了vue实现的基本实现原理:Object.defineProperty() -数据劫持 和  ...

  7. habse Region server挂掉

    2019-04-28 15:57:28,355 INFO org.apache.hadoop.hbase.regionserver.HeapMemoryManager: heapOccupancyPe ...

  8. C#接口的简单创建及其用法

    我初次接触接口(Interface),对接口的作用有点迷茫,C#接口中包含方法.属性.索引器和事件的声明,但常用的接口中一般就是方法和属性,然而接口中并没有方法的具体实现代码(不能提供任何成员实现), ...

  9. C#基于websocket-sharp实现简易httpserver(封装)

    一.背景 其实就是很简单的,公司会桌面开发的人员紧缺啊,项目又赶,而我们公司的前端人员人多还厉害(ps:吐槽下,后端的人真的少啊,会桌面开发的更少啊),所以萌生出了使用html+js来构建本地应用程序 ...

  10. spring 报错

    一. java.lang.ClassNotFoundException: org.springframework.web.filter.CharacterEncodingFilter 解决方案: 1. ...