Update

  • \(\texttt{2020.10.6}\) 修改了一些笔误。

Content

模拟一个核载 \(34\) 人的巴士上有 \(k\) 个人时的巴士的状态。

每个人都会优先选择有空位的最后一排最左侧一个空位入座。

数据范围:\(0\leqslant k\leqslant 34\)。

Solution

有 \(6\) 行,所以按 \(6\) 行来分类讨论。

Part 1 第一行

第一行只需要输出一串字符串就行了,不需要多讲。

由于第六行输出的东西和第一行一模一样,故之后不做详细讲解。

Part 2 第二行

第二行开始一直到第五行都需要考虑到车上的人的情况。我们先来看这一行。

首先得要考虑最后一排的情况(因为最后一排有 \(4\) 个人)。

  • 如果 \(k=0\),那么最后一排上的这一列不坐人。
  • 否则,这里肯定会坐人。

然后,还有坐在这一列的人数 \(p_2=\left\lceil\dfrac{\max\{0,k-4\}}{3}\right\rceil\),没坐在这一列的人数则是 \(10-p_2\)。这个可以自己去推算。

Part 3 第三行

首先还是考虑最后一排的情况。

  • 如果 \(k<2\),那么这里不坐人。
  • 否则,这里肯定坐人。

然后,还有坐在这一列的人数 \(p_3=\left\lceil\dfrac{\max\{0,k-5\}}{3}\right\rceil\),没坐在这一列的人数则是 \(10-p_3\)。

由于第五行与第二、三行的情况类似,故之后不做详细讲解。

Part 4 第四行

首先还是考虑最后一排的情况。

  • 如果 \(k<3\),那么这里不坐人。
  • 否则,这里肯定坐人。

然后这里就是过道了,直接输出 .(经检验总共有 \(22\) 个)。

其他的不做多讲。

注意,除了我讲的东西要输出外,每一行后面可能还会有一些多余的东西,它们也要输出。

Code

#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std; int main() {
int k;
scanf("%d", &k);
printf("+------------------------+\n|");
if(!k) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 4) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 4) / 3.0); ++i) printf("#.");
printf("|D|)\n|");
if(k < 2) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 5) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 5) / 3.0); ++i) printf("#.");
printf("|.|\n|");
if(k < 3) printf("#.");
else printf("O.");
for(int i = 1; i <= 22; ++i) printf(".");
printf("|\n|");
if(k < 4) printf("#.");
else printf("O.");
for(int i = 1; i <= (int)ceil(max(0, k - 6) / 3.0); ++i) printf("O.");
for(int i = 1; i <= 10 - (int)ceil(max(0, k - 6) / 3.0); ++i) printf("#.");
printf("|.|)\n+------------------------+");
}

CF475A Bayan Bus 题解的更多相关文章

  1. cf475A Bayan Bus

    A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 264[Submit][S ...

  3. codeforces A. Bayan Bus(简单模拟)

    #include <queue> #include <string> #include <cstdio> #include <cstring> #inc ...

  4. codeforces 475A.Bayan Bus 解题报告

    题目链接:http://codeforces.com/problemset/problem/475/A 题目意思:输入一个整数 k(0 ≤ k ≤ 34),表示participants的人数,需要在一 ...

  5. codeforces CF475 ABC 题解

    Bayan 2015 Contest Warm Up http://codeforces.com/contest/475 A - Bayan Bus B - Strongly Connected Ci ...

  6. 洛谷 题解 CF711A 【Bus to Udayland】

    先用一个字符数组存每行的座位情况(字符变量也可以) 接下来用另一个数组存最后的座位情况 好了,看代码 #include<iostream> using namespace std; boo ...

  7. CF792A New Bus Route 题解

    Content 给定一个长度为 \(n\) 的数列 \(a_1,a_2,a_3,...,a_n\),求这个序列当中差的绝对值最小的数对并求出这样的数对的个数. 数据范围:\(2\leqslant n\ ...

  8. [BZOJ 2004] [Hnoi2010] Bus 公交线路 【状压DP + 矩阵乘法】

    题目链接: BZOJ - 2004 题目分析 看到题目完全不会..于是立即看神犇们的题解. 由于 p<=10 ,所以想到是使用状压.将每个连续的 p 个位置压缩成一个 p 位 2 进制数,其中共 ...

  9. BZOJ1537: [POI2005]Aut- The Bus

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 158  Solved: 100[Submit][S ...

随机推荐

  1. Dirichlet 前缀和的几种版本

    [模板]Dirichlet 前缀和 求 \[B[i] = \sum_{d|i} A[d] \] $ n \le 2\times 10^{7} $ 看代码: for( int i = 1 ; i < ...

  2. Codeforces 1365G - Secure Password(思维题)

    Codeforces 题面传送门 & 洛谷题面传送门 首先考虑一个询问 \(20\) 次的方案,考虑每一位,一遍询问求出下标的这一位上为 \(0\) 的位置上值的 bitwise or,再一遍 ...

  3. Bedtools genomecov 计算覆盖度

    简单说明: 从2.28.0版开始,bedtools使用htslib库支持CRAM格式 除了BAM文件,bedtools默认所有的输入文件都以TAB键分割 除非使用-sorted选项,bedtools默 ...

  4. 毕业设计之zabbix集合

    lnmp环境请查看https://www.cnblogs.com/betterquan/p/12285956.html 但是!!!注意php的编译: https://www.zabbix.com/do ...

  5. 用Rsync实现windows下同步linux服务器的数据

    一:环境 1.服务端:Red Hat Enterprise Linux Server release 6.4 (Santiago) 2.客户端:windows7旗舰版64位 3.同步对象:测试数据 4 ...

  6. 在linux下查看python已经安装的模块

    一.命令行下使用pydoc命令 在命令行下运行$ pydoc modules即可查看 二.在python交互解释器中使用help()查看 python--->在交互式解释器中输入>> ...

  7. Excel-计算年龄、工龄 datedif()

    函数名称:DATEDIF 主要功能:计算返回两个日期参数的差值. 使用格式:=DATEDIF(date1,date2,"y").=DATEDIF(date1,date2," ...

  8. 用C语言的LED实验,有汇编哦!

    C语言LED实验 1.汇编激活CPU 首先要明白对于没有系统开发板(也就是裸机)来说,是没办法直接对C进行识别.所以需要一段汇编语言,来配置CPU的资源,选择CPU运行模式,初始化指针位置. 代码如下 ...

  9. CSS3单行文本两端对齐

    CSS3实现单行文本两端对齐 p { height: 24px; text-align: justify; text-last-align: justify; } p::after { display ...

  10. SpringBoot之HandlerInterceptorAdapter

    SpringBoot之HandlerInterceptorAdapter   在SpringBoot中我们可以使用HandlerInterceptorAdapter这个适配器来实现自己的拦截器.这样就 ...