题目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. MySQL2.字符集乱码

    MySQL2.字符集 此节记录下MySQL出现乱码的原因.还是参考小册子~ 字符集简介 计算机中只能存储二进制数据,建立字符与二进制数据的映射关系来存储字符. 从两方面考虑: 1.界定清楚字符范围,即 ...

  2. Non-decreasing Array

    Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...

  3. JavaScript 事件委托详解

    基本概念 事件委托,通俗地来讲,就是把一个元素响应事件(click.keydown......)的函数委托到另一个元素: 一般来讲,会把一个或者一组元素的事件委托到它的父层或者更外层元素上,真正绑定事 ...

  4. js 获取 时间戳的三种方法

    new Date() *1 自动数据类型转换为数字 new Date().getTime() Date.now();

  5. idea工具maven生命周期clean,compile,install,package区别

    idea工具maven projects里面有9种生命周期,今天刚好遇到,顺便分享下自己的理解.生命周期是包含在一个项目构建中的一系列有序的阶段.最常用的两种打包方法:一:clean,package( ...

  6. jenkins+git(完全萌新的一篇,求指点)

    自己不熟悉所以打算写一份新手的自我理解,有错误欢迎大家指出 公司使用jenkins和git对代码进行管理 首先我们将代码放在git上,然后通过一些方法(我还不知道啥方法) 将git的代码放在jenki ...

  7. 字符串string的相关应用

    之所以抛弃char* 的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够.字符串长度等等, 而且作为一个泛型类出现,他集成的操作函数足以完成我们大多数情况下 ...

  8. Jenkins+maven环境部署

    选择使用tomcat下运行jenkins项目,安装步骤如下 1.  安装tomcat,查看想要下载的版本  https://mirrors.cnnic.cn/apache/tomcat/ wget h ...

  9. 自定义URL Protocol 协议

    Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\fuck] @="fuck Protocol" "URL ...

  10. SpringBoot的@Enable*注解的使用介绍

    @EnableAsync或@EnableConfigurationProperties背后的运行原理,是使用了@Import注解. @Import({User.class,Role.class,MyC ...