测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A27694. 排座位 (seats.cpp)

填空题 中等

题目描述

排座位 (seats.cpp)

题目描述

信息学省队选手由 a名男生和b名女生组成,他们准备乘火车去外地参加比赛。火车由若干接车厢组成,第一节车厢有 n 个连续的座位,每个座位要么空着,要么已经有乘客。为了让男女选手之间增加交流,你需要按以下要求排座位: 相邻的同学不能同时是男生或者是女生。

请从 a+b名学生中选出最多的学生安排在第一节车厢的空座位上以满足题目要求

输入格式

第一行包括三个整数n,a和b,分别表示第一节车厢座位数量,男生数量和女生数量。

第二行包含长度为n 的字符串,由字符.  和 * 组成,其中 . 代表座位是空的, * 代表有乘客的座位。

输出格式

输出一行一个整数,表示第一节车厢最多可以安排的学生。

参考答案

#include <bits/stdc++.h> using namespace std; int n, a, b, ans; string s; int main() { cin >> n >> a >> b; cin >> s; if(s[0] == '.') { if(a > b) a--, s[0] = 'A', ans++; else if(b > 0) b--, s[0] = 'B', ans++; } for(int i = 1;i < n;i++) { if(s[i] != '.') continue; if(s[i - 1] == '*' || s[i - 1] == '.') { if(a > b) a--, s[i] = 'A', ans++; else if(b > 0) b--, s[i] = 'B', ans++; } else { if(b > 0 && s[i - 1] == 'A') b--, s[i] = 'B', ans++; if(a > 0 && s[i - 1] == 'B') a--, s[i] = 'A', ans++; } } cout << ans; return 0; }
上一题 下一题