题目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. Python学习笔记-Django连接SQLSERVER

    Django连接SQLSERVER使用的是odbc驱动. CentOS下安装django-obdc-azure时需安装依懒 yum install gcc yum install gcc-c++ yu ...

  2. LightOJ 1348 (树链剖分 + 线段树(树状数组))

    题目 Link 分析 典型的树链剖分题, 树链剖分学习资料 Code #include <bits/stdc++.h> using namespace std; const int max ...

  3. Java中值传递和引用传递的区别

    在Java中参数的传递主要有两种:值传递和参数传递: 下面是对两种传递方式在内存上的分析: 一:值传递 解释:实参传递给形参的是值  形参和实参在内存上是两个独立的变量 对形参做任何修改不会影响实参 ...

  4. Typescript04---模块、命名空间

    在Typescript1.5 中,内部模块称作命名空间,外部模块成为模块 一.什么是模块? 模块就是一个或一组功能模块. 模块在其自身的作用域里执行,而不是在全局作用域里.意味着,模块中的变量.函数. ...

  5. layui报错 "Layui hint: 模块名 xxx 已被占用" 的问题解决方案

    由于扩展模块数量众多, 于是我需要将扩展模块分类到二级文件夹中, 我在页面中是这么写的 <script> layui.extend({ courseTask: 'task/courseTa ...

  6. 为什么要使用getters和setters/访问器?

    Why use getters and setters/accessors? 实际上会有很多人问这个问题....尤其是它成为Coding Style中一部分的时候. 文章出自LBushkin的回答 T ...

  7. log4j警告:WARN Please initialize the log4j system properly 的解决方法

    出现这个问题的原因则是因为没有为log4j建立配置文件导致的.所以解决问题的方法很简单,只要在 src文件目录下建立配置文件即可: 右键点击src  -> New  ->  File 文件 ...

  8. 关于二进制枚举-计蒜客-得到整数X

    某君有 n个互不相同的正整数,现在他要从这 n 个正整数之中无重复地选取任意个数,并仅通过加法凑出整数 X.求某君有多少种不同的方案来凑出整数 X. 输入格式 第一行,输入两个整数 n,X(1≤n≤2 ...

  9. BandwagonHost

    https://kiwivm.64clouds.com/main-exec.php?mode=extras_shadowsocks https://kiwivm.64clouds.com/main-e ...

  10. WPF使用总结

    ListboxItemContainer样式 一般items控件的项模板 很容易 设置DataTemplate就可以了,比如listbox .但是在选中和失去焦点的时候 却是Windows自带的那种 ...