Codeforces Round 966 (Div. 3) A~F

A.Primary Task(模拟)

题意:

德米特里在黑板上写下了 t t t个整数,这很好。他肯定自己丢失了其中一个重要的整数 n n n,这就不好了。

整数 n n n的形式是 10 10 10 ^ x x x( x ≥ 2 x\ge 2 x2),其中符号"^"表示指数化。出了点差错,德米特里在写重要整数时漏掉了符号"^"。例如,他应该写 105 105 105而不是 1 0 5 10^5 105,应该写 1019 1019 1019而不是 1 0 19 10^{19} 1019

德米特里想知道黑板上的整数哪些可能是重要整数,哪些不可能。

分析:

判断一下字符串前两位是不是10 ,除去前两位后后面的部分是不是一个大于等于2的数即可。

代码:

#include<bits/stdc++.h>

using namespace std;

void solve() {
   
    string s;
    cin >> s;
    if (s.length() <= 2) {
   
        cout << "NO" << endl;
        return;
    }
    if (!(s[0] == '1' && s[1] == '0')) {
   
        cout << "NO" << endl;
        return;
    }
    if (s[2] == '0') {
   
        cout << "NO" << endl;
        return;
    } else if (s[2] == '1') {
   
        if (s.length() == 3) {
   
            cout << "NO" << endl;
            return;
        }
    }
    cout << "YES" << endl;
}

int main() {
   
    int T;
    cin >> T;
    while (T--) {
   
        solve();
    }
    return 0;
}

B.Seating in a Bus(模拟)

题意:

在伯兰,一辆公共汽车由一排从 1 1 1 n n n n n n个座位组成。乘客上车时请务必遵守这些规则:

  • 如果车上没有空座位,乘客可以坐在任何空座位上;
  • 否则,乘客应坐在至少有一个邻座空闲的座位上。换句话说,只有当 i − 1 i-1 i1 i + 1 i+1 i+1中至少有一个座位有人时,乘客才能坐在索引为 i i i 1 ≤ i ≤ n 1\le i\le n 1in)的座位上。

今天有 n n n位乘客上车。数组 a a a按时间顺序记录了他们的座位号。也就是说, a 1 a_1 a1包含了第一位乘客的座位号, a 2 a_2 a2-第二位乘客的座位号,以此类推。

你知道数组 a a a的内容。确定是否所有乘客都遵循了建议。

例如,如果 n = 5 n=5 n=5 a a a=[ 5 , 4 , 2 , 1 , 3 5,4,2,1,3 5,4,2,1,3],那么建议就没有被遵守,因为第 3 3 3个乘客坐在了座位号为 2 2 2的座位上,而相邻的座位号为 1 1 1 3 3 3的座位是空闲的。

分析:

按题意模拟 ,每次判断相邻位置是否有乘客,如果都没有,那么返回false, 否则置 a [ x ] = 1 a[x]=1 a[x]=1, 继续判断下一个。

代码:

#include<bits/stdc++.h>
using namespace std;

void solve() {
   
    int n;
    cin >> n;
    vector<int> a(n + 2, 0);
    bool tag = true;
    for (int i = 1; i <= n; i++) {
   
        int x;
        cin >> x;
        if (i == 1) {
   
            a[x] = 1;
            continue;
        } else {
   
            if (a[x - 1] == 1 || a[x + 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值